mirror of
https://github.com/vim/vim.git
synced 2025-10-04 05:25:06 -04:00
patch 8.0.0150: completion for :filter does not skip the pattern
Problem: When the pattern of :filter does not have a separator then completion of the command fails. Solution: Skip over the pattern. (Ozaki Kiichi, clodes #1299)
This commit is contained in:
@@ -3871,7 +3871,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:
|
||||
@@ -3896,6 +3895,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:
|
||||
|
@@ -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
|
||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
150,
|
||||
/**/
|
||||
149,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user