diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 2ccbab9..6c81575 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2093,7 +2093,8 @@
 getcmdpos()			Number	return cursor position in command-line
 getcmdtype()			String	return current command-line type
 getcmdwintype()			String	return current command-line window type
-getcompletion({pat}, {type})	List	list of cmdline completion matches
+getcompletion({pat}, {type} [, {filtered}])
+				List	list of cmdline completion matches
 getcurpos()			List	position of the cursor
 getcwd([{winnr} [, {tabnr}]])	String	get the current working directory
 getfontname([{name}])		String	name of font being used
@@ -4211,7 +4212,7 @@
 		values are the same as |getcmdtype()|. Returns an empty string
 		when not in the command-line window.
 
-getcompletion({pat}, {type})			*getcompletion()*
+getcompletion({pat}, {type} [, {filtered}])		*getcompletion()*
 		Return a list of command-line completion matches. {type}
 		specifies what for.  The following completion types are
 		supported:
@@ -4251,6 +4252,10 @@
 		Otherwise only items matching {pat} are returned. See
 		|wildcards| for the use of special characters in {pat}.
 
+		If the optional {filtered} flag is set to 1, then 'wildignore'
+		is applied to filter the results.  Otherwise all the matches
+		are returned. The 'wildignorecase' option always applies.
+
 		If there are no matches, an empty list is returned.  An
 		invalid value for {type} produces an error.
 
diff --git a/src/evalfunc.c b/src/evalfunc.c
index ab4f9fd..379bc63 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -586,7 +586,7 @@
     {"getcmdtype",	0, 0, f_getcmdtype},
     {"getcmdwintype",	0, 0, f_getcmdwintype},
 #if defined(FEAT_CMDL_COMPL)
-    {"getcompletion",	2, 2, f_getcompletion},
+    {"getcompletion",	2, 3, f_getcompletion},
 #endif
     {"getcurpos",	0, 0, f_getcurpos},
     {"getcwd",		0, 2, f_getcwd},
@@ -4382,12 +4382,20 @@
 {
     char_u	*pat;
     expand_T	xpc;
+    int		filtered = FALSE;
     int		options = WILD_SILENT | WILD_USE_NL | WILD_ADD_SLASH
 					| WILD_NO_BEEP;
 
+    if (argvars[2].v_type != VAR_UNKNOWN)
+	filtered = get_tv_number_chk(&argvars[2], NULL);
+
     if (p_wic)
 	options |= WILD_ICASE;
 
+    /* For filtered results, 'wildignore' is used */
+    if (!filtered)
+	options |= WILD_KEEP_ALL;
+
     ExpandInit(&xpc);
     xpc.xp_pattern = get_tv_string(&argvars[0]);
     xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern);
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index e2c1876..3a35637 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -94,6 +94,10 @@
   call assert_true(index(l, 'runtest.vim') >= 0)
   let l = getcompletion('walk', 'file')
   call assert_equal([], l)
+  set wildignore=*.vim
+  let l = getcompletion('run', 'file', 1)
+  call assert_true(index(l, 'runtest.vim') < 0)
+  set wildignore&
 
   let l = getcompletion('ha', 'filetype')
   call assert_true(index(l, 'hamster') >= 0)
diff --git a/src/version.c b/src/version.c
index 11ab8f6..dd7b4b7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2205,
+/**/
     2204,
 /**/
     2203,
