changeset 26319:8b594193dcb6 v8.2.3690

patch 8.2.3690: Vim9: "filter #pat# cmd" does not work Commit: https://github.com/vim/vim/commit/06bffe836c98a65d270579f08004503ffce9931c Author: Bram Moolenaar <Bram@vim.org> Date: Sun Nov 28 20:24:17 2021 +0000 patch 8.2.3690: Vim9: "filter #pat# cmd" does not work Problem: Vim9: "filter #pat# cmd" does not work. Solution: Do not see #pat# as a comment.
author Bram Moolenaar <Bram@vim.org>
date Sun, 28 Nov 2021 21:30:03 +0100
parents 724e772719eb
children f78e7a6a6f5e
files src/ex_docmd.c src/testdir/test_vim9_cmd.vim src/version.c
diffstat 3 files changed, 20 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2910,7 +2910,14 @@ parse_command_modifiers(
 			    int	    c = 0;
 
 			    if (!checkforcmd_noparen(&p, "filter", 4)
-						|| *p == NUL || ends_excmd(*p))
+				    || *p == NUL
+				    || (ends_excmd(*p)
+#ifdef FEAT_EVAL
+					// in ":filter #pat# cmd" # does not
+					// start a comment
+				     && (!in_vim9script() || VIM_ISWHITE(p[1]))
+#endif
+				     ))
 				break;
 			    if (*p == '!')
 			    {
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -714,6 +714,16 @@ def Test_command_modifier_filter()
       assert_match('very specific z3d37dh234 string', Screenline(&lines))
   END
   CheckDefAndScriptSuccess(lines)
+
+  lines =<< trim END
+      edit foobar
+      redir => g:filter_out
+      filter #foobar# ls
+      redir END
+      assert_match('"foobar"', g:filter_out)
+      unlet g:filter_out
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_win_command_modifiers()
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3690,
+/**/
     3689,
 /**/
     3688,