mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 9.0.0031: <cmod> of user command does not have correct verbose value
Problem: <cmod> of user command does not have correct verbose value. Solution: Use the value from the command modifier. (closes #10651)
This commit is contained in:
@@ -1721,10 +1721,10 @@ The valid escape sequences are
|
||||
nothing. Supported modifiers are |:aboveleft|, |:belowright|,
|
||||
|:botright|, |:browse|, |:confirm|, |:hide|, |:keepalt|,
|
||||
|:keepjumps|, |:keepmarks|, |:keeppatterns|, |:leftabove|,
|
||||
|:lockmarks|, |:noswapfile| |:rightbelow|, |:silent|, |:tab|,
|
||||
|:topleft|, |:verbose|, and |:vertical|.
|
||||
Note that these are not yet supported: |:noautocmd|,
|
||||
|:sandbox| and |:unsilent|.
|
||||
|:lockmarks|, |:noautocmd|, |:noswapfile| |:rightbelow|,
|
||||
|:sandbox|, |:silent|, |:tab|, |:topleft|, |:unsilent|,
|
||||
|:verbose|, and |:vertical|.
|
||||
Note that |:filter| is not supported.
|
||||
Examples: >
|
||||
command! -nargs=+ -complete=file MyEdit
|
||||
\ for f in expand(<q-args>, 0, 1) |
|
||||
|
@@ -58,7 +58,10 @@ function Test_cmdmods()
|
||||
call assert_equal('lockmarks', g:mods)
|
||||
loc MyCmd
|
||||
call assert_equal('lockmarks', g:mods)
|
||||
" noautocmd MyCmd
|
||||
noautocmd MyCmd
|
||||
call assert_equal('noautocmd', g:mods)
|
||||
noa MyCmd
|
||||
call assert_equal('noautocmd', g:mods)
|
||||
noswapfile MyCmd
|
||||
call assert_equal('noswapfile', g:mods)
|
||||
nos MyCmd
|
||||
@@ -72,29 +75,43 @@ function Test_cmdmods()
|
||||
call assert_equal('silent', g:mods)
|
||||
sil MyCmd
|
||||
call assert_equal('silent', g:mods)
|
||||
silent! MyCmd
|
||||
call assert_equal('silent!', g:mods)
|
||||
sil! MyCmd
|
||||
call assert_equal('silent!', g:mods)
|
||||
tab MyCmd
|
||||
call assert_equal('tab', g:mods)
|
||||
topleft MyCmd
|
||||
call assert_equal('topleft', g:mods)
|
||||
to MyCmd
|
||||
call assert_equal('topleft', g:mods)
|
||||
" unsilent MyCmd
|
||||
unsilent MyCmd
|
||||
call assert_equal('unsilent', g:mods)
|
||||
uns MyCmd
|
||||
call assert_equal('unsilent', g:mods)
|
||||
verbose MyCmd
|
||||
call assert_equal('verbose', g:mods)
|
||||
verb MyCmd
|
||||
call assert_equal('verbose', g:mods)
|
||||
0verbose MyCmd
|
||||
call assert_equal('0verbose', g:mods)
|
||||
3verbose MyCmd
|
||||
call assert_equal('3verbose', g:mods)
|
||||
999verbose MyCmd
|
||||
call assert_equal('999verbose', g:mods)
|
||||
vertical MyCmd
|
||||
call assert_equal('vertical', g:mods)
|
||||
vert MyCmd
|
||||
call assert_equal('vertical', g:mods)
|
||||
|
||||
aboveleft belowright botright browse confirm hide keepalt keepjumps
|
||||
\ keepmarks keeppatterns lockmarks noswapfile silent tab
|
||||
\ topleft verbose vertical MyCmd
|
||||
\ keepmarks keeppatterns lockmarks noautocmd noswapfile silent
|
||||
\ tab topleft unsilent verbose vertical MyCmd
|
||||
|
||||
call assert_equal('browse confirm hide keepalt keepjumps ' .
|
||||
\ 'keepmarks keeppatterns lockmarks noswapfile silent ' .
|
||||
\ 'verbose aboveleft belowright botright tab topleft vertical', g:mods)
|
||||
\ 'keepmarks keeppatterns lockmarks noswapfile unsilent noautocmd ' .
|
||||
\ 'silent verbose aboveleft belowright botright tab topleft vertical',
|
||||
\ g:mods)
|
||||
|
||||
let g:mods = ''
|
||||
command! -nargs=* MyQCmd let g:mods .= '<q-mods> '
|
||||
|
@@ -1492,10 +1492,23 @@ produce_cmdmods(char_u *buf, cmdmod_T *cmod, int quote)
|
||||
(cmod->cmod_flags & CMOD_ERRSILENT) ? "silent!"
|
||||
: "silent", &multi_mods);
|
||||
// :verbose
|
||||
if (p_verbose > 0)
|
||||
if (cmod->cmod_verbose > 0)
|
||||
{
|
||||
int verbose_value = cmod->cmod_verbose - 1;
|
||||
|
||||
if (verbose_value == 1)
|
||||
result += add_cmd_modifier(buf, "verbose", &multi_mods);
|
||||
else
|
||||
{
|
||||
char verbose_buf[NUMBUFLEN];
|
||||
|
||||
sprintf(verbose_buf, "%dverbose", verbose_value);
|
||||
result += add_cmd_modifier(buf, verbose_buf, &multi_mods);
|
||||
}
|
||||
}
|
||||
// flags from cmod->cmod_split
|
||||
result += add_win_cmd_modifers(buf, cmod, &multi_mods);
|
||||
|
||||
if (quote && buf != NULL)
|
||||
{
|
||||
buf += result - 2;
|
||||
|
@@ -735,6 +735,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
31,
|
||||
/**/
|
||||
30,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user