Created
December 2, 2016 14:05
-
-
Save ichizok/3256df050c35885dc06c867825ce6893 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/ex_docmd.c b/src/ex_docmd.c | |
index 439467cf1..9dcbe4208 100644 | |
--- a/src/ex_docmd.c | |
+++ b/src/ex_docmd.c | |
@@ -3864,7 +3864,6 @@ set_one_cmd_context( | |
case CMD_cfdo: | |
case CMD_confirm: | |
case CMD_debug: | |
- case CMD_filter: | |
case CMD_folddoclosed: | |
case CMD_folddoopen: | |
case CMD_hide: | |
@@ -3889,6 +3888,16 @@ set_one_cmd_context( | |
case CMD_windo: | |
return arg; | |
+ case CMD_filter: | |
+ if (*arg != NUL) | |
+ arg = skip_vimgrep_pat(arg, NULL, NULL); | |
+ if (arg == NULL || *arg == NUL) | |
+ { | |
+ xp->xp_context = EXPAND_NOTHING; | |
+ return NULL; | |
+ } | |
+ return skipwhite(arg); | |
+ | |
#ifdef FEAT_CMDL_COMPL | |
# ifdef FEAT_SEARCH_EXTRA | |
case CMD_match: | |
diff --git a/src/testdir/test_filter_cmd.vim b/src/testdir/test_filter_cmd.vim | |
index 0bbd905c8..5aa5fa64d 100644 | |
--- a/src/testdir/test_filter_cmd.vim | |
+++ b/src/testdir/test_filter_cmd.vim | |
@@ -52,3 +52,25 @@ func Test_filter_fails() | |
call assert_fails('filter! /pat/', 'E476:') | |
call assert_fails('filter! /pat/ asdf', 'E492:') | |
endfunc | |
+ | |
+function s:complete_filter_cmd(filtcmd) | |
+ let keystroke = "\<TAB>\<C-R>=execute('let cmdline = getcmdline()')\<CR>\<C-C>" | |
+ let cmdline = '' | |
+ call feedkeys(':' . a:filtcmd . keystroke, 'ntx') | |
+ return cmdline | |
+endfunction | |
+ | |
+func Test_filter_cmd_completion() | |
+ " Do not complete pattern | |
+ call assert_equal("filter \t", s:complete_filter_cmd('filter ')) | |
+ call assert_equal("filter pat\t", s:complete_filter_cmd('filter pat')) | |
+ call assert_equal("filter /pat\t", s:complete_filter_cmd('filter /pat')) | |
+ call assert_equal("filter /pat/\t", s:complete_filter_cmd('filter /pat/')) | |
+ | |
+ " Complete after string pattern | |
+ call assert_equal('filter pat print', s:complete_filter_cmd('filter pat pri')) | |
+ | |
+ " Complete after regexp pattern | |
+ call assert_equal('filter /pat/ print', s:complete_filter_cmd('filter /pat/ pri')) | |
+ call assert_equal('filter #pat# print', s:complete_filter_cmd('filter #pat# pri')) | |
+endfunc |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment