mirror of
https://github.com/vim/vim.git
synced 2025-10-05 05:34:07 -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_cfdo:
|
||||||
case CMD_confirm:
|
case CMD_confirm:
|
||||||
case CMD_debug:
|
case CMD_debug:
|
||||||
case CMD_filter:
|
|
||||||
case CMD_folddoclosed:
|
case CMD_folddoclosed:
|
||||||
case CMD_folddoopen:
|
case CMD_folddoopen:
|
||||||
case CMD_hide:
|
case CMD_hide:
|
||||||
@@ -3896,6 +3895,16 @@ set_one_cmd_context(
|
|||||||
case CMD_windo:
|
case CMD_windo:
|
||||||
return arg;
|
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_CMDL_COMPL
|
||||||
# ifdef FEAT_SEARCH_EXTRA
|
# ifdef FEAT_SEARCH_EXTRA
|
||||||
case CMD_match:
|
case CMD_match:
|
||||||
|
@@ -52,3 +52,25 @@ func Test_filter_fails()
|
|||||||
call assert_fails('filter! /pat/', 'E476:')
|
call assert_fails('filter! /pat/', 'E476:')
|
||||||
call assert_fails('filter! /pat/ asdf', 'E492:')
|
call assert_fails('filter! /pat/ asdf', 'E492:')
|
||||||
endfunc
|
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[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
150,
|
||||||
/**/
|
/**/
|
||||||
149,
|
149,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user