patch 8.1.2187: error for bad regexp even though regexp is not used

Problem:    Error for bad regexp even though regexp is not used when writing
            a file. (Arseny Nasokin)
Solution:   Ignore regexp errors. (closes #5059)
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index b3f18c6..7381b0e 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -1976,6 +1976,8 @@
 	flags |= EW_KEEPALL;
     if (options & WILD_SILENT)
 	flags |= EW_SILENT;
+    if (options & WILD_NOERROR)
+	flags |= EW_NOERROR;
     if (options & WILD_ALLLINKS)
 	flags |= EW_ALLLINKS;
 
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 4dd7ba2..1d04769 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4211,7 +4211,8 @@
 		else /* n == 2 */
 		{
 		    expand_T	xpc;
-		    int		options = WILD_LIST_NOTFOUND|WILD_ADD_SLASH;
+		    int		options = WILD_LIST_NOTFOUND
+					       | WILD_NOERROR | WILD_ADD_SLASH;
 
 		    ExpandInit(&xpc);
 		    xpc.xp_context = EXPAND_FILES;
diff --git a/src/testdir/test_writefile.vim b/src/testdir/test_writefile.vim
index 4b0a6d6..8eb2e78 100644
--- a/src/testdir/test_writefile.vim
+++ b/src/testdir/test_writefile.vim
@@ -1,4 +1,4 @@
-" Tests for the writefile() function.
+" Tests for the writefile() function and some :write commands.
 
 func Test_writefile()
   let f = tempname()
@@ -16,6 +16,11 @@
   call delete(f)
 endfunc
 
+func Test_writefile_ignore_regexp_error()
+  write Xt[z-a]est.txt
+  call delete('Xt[z-a]est.txt')
+endfunc
+
 func Test_writefile_fails_gently()
   call assert_fails('call writefile(["test"], "Xfile", [])', 'E730:')
   call assert_false(filereadable("Xfile"))
diff --git a/src/version.c b/src/version.c
index 65979b2..c55af5a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2187,
+/**/
     2186,
 /**/
     2185,