0
0
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:
zeertzjq
2022-07-03 13:16:09 +01:00
committed by Bram Moolenaar
parent 22e7e867e2
commit 9359e8a6d9
4 changed files with 44 additions and 12 deletions

View File

@@ -1721,10 +1721,10 @@ The valid escape sequences are
nothing. Supported modifiers are |:aboveleft|, |:belowright|, nothing. Supported modifiers are |:aboveleft|, |:belowright|,
|:botright|, |:browse|, |:confirm|, |:hide|, |:keepalt|, |:botright|, |:browse|, |:confirm|, |:hide|, |:keepalt|,
|:keepjumps|, |:keepmarks|, |:keeppatterns|, |:leftabove|, |:keepjumps|, |:keepmarks|, |:keeppatterns|, |:leftabove|,
|:lockmarks|, |:noswapfile| |:rightbelow|, |:silent|, |:tab|, |:lockmarks|, |:noautocmd|, |:noswapfile| |:rightbelow|,
|:topleft|, |:verbose|, and |:vertical|. |:sandbox|, |:silent|, |:tab|, |:topleft|, |:unsilent|,
Note that these are not yet supported: |:noautocmd|, |:verbose|, and |:vertical|.
|:sandbox| and |:unsilent|. Note that |:filter| is not supported.
Examples: > Examples: >
command! -nargs=+ -complete=file MyEdit command! -nargs=+ -complete=file MyEdit
\ for f in expand(<q-args>, 0, 1) | \ for f in expand(<q-args>, 0, 1) |

View File

@@ -58,7 +58,10 @@ function Test_cmdmods()
call assert_equal('lockmarks', g:mods) call assert_equal('lockmarks', g:mods)
loc MyCmd loc MyCmd
call assert_equal('lockmarks', g:mods) 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 noswapfile MyCmd
call assert_equal('noswapfile', g:mods) call assert_equal('noswapfile', g:mods)
nos MyCmd nos MyCmd
@@ -72,29 +75,43 @@ function Test_cmdmods()
call assert_equal('silent', g:mods) call assert_equal('silent', g:mods)
sil MyCmd sil MyCmd
call assert_equal('silent', g:mods) call assert_equal('silent', g:mods)
silent! MyCmd
call assert_equal('silent!', g:mods)
sil! MyCmd
call assert_equal('silent!', g:mods)
tab MyCmd tab MyCmd
call assert_equal('tab', g:mods) call assert_equal('tab', g:mods)
topleft MyCmd topleft MyCmd
call assert_equal('topleft', g:mods) call assert_equal('topleft', g:mods)
to MyCmd to MyCmd
call assert_equal('topleft', g:mods) 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 verbose MyCmd
call assert_equal('verbose', g:mods) call assert_equal('verbose', g:mods)
verb MyCmd verb MyCmd
call assert_equal('verbose', g:mods) 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 vertical MyCmd
call assert_equal('vertical', g:mods) call assert_equal('vertical', g:mods)
vert MyCmd vert MyCmd
call assert_equal('vertical', g:mods) call assert_equal('vertical', g:mods)
aboveleft belowright botright browse confirm hide keepalt keepjumps aboveleft belowright botright browse confirm hide keepalt keepjumps
\ keepmarks keeppatterns lockmarks noswapfile silent tab \ keepmarks keeppatterns lockmarks noautocmd noswapfile silent
\ topleft verbose vertical MyCmd \ tab topleft unsilent verbose vertical MyCmd
call assert_equal('browse confirm hide keepalt keepjumps ' . call assert_equal('browse confirm hide keepalt keepjumps ' .
\ 'keepmarks keeppatterns lockmarks noswapfile silent ' . \ 'keepmarks keeppatterns lockmarks noswapfile unsilent noautocmd ' .
\ 'verbose aboveleft belowright botright tab topleft vertical', g:mods) \ 'silent verbose aboveleft belowright botright tab topleft vertical',
\ g:mods)
let g:mods = '' let g:mods = ''
command! -nargs=* MyQCmd let g:mods .= '<q-mods> ' command! -nargs=* MyQCmd let g:mods .= '<q-mods> '

View File

@@ -1492,10 +1492,23 @@ produce_cmdmods(char_u *buf, cmdmod_T *cmod, int quote)
(cmod->cmod_flags & CMOD_ERRSILENT) ? "silent!" (cmod->cmod_flags & CMOD_ERRSILENT) ? "silent!"
: "silent", &multi_mods); : "silent", &multi_mods);
// :verbose // :verbose
if (p_verbose > 0) if (cmod->cmod_verbose > 0)
result += add_cmd_modifier(buf, "verbose", &multi_mods); {
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 // flags from cmod->cmod_split
result += add_win_cmd_modifers(buf, cmod, &multi_mods); result += add_win_cmd_modifers(buf, cmod, &multi_mods);
if (quote && buf != NULL) if (quote && buf != NULL)
{ {
buf += result - 2; buf += result - 2;

View File

@@ -735,6 +735,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 */
/**/
31,
/**/ /**/
30, 30,
/**/ /**/