Skip to content

Commit

Permalink
patch 9.0.0031: <cmod> of user command does not have correct verbose …
Browse files Browse the repository at this point in the history
…value

Problem:    <cmod> of user command does not have correct verbose value.
Solution:   Use the value from the command modifier. (closes #10651)
  • Loading branch information
zeertzjq authored and brammool committed Jul 3, 2022
1 parent 22e7e86 commit 9359e8a
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 12 deletions.
8 changes: 4 additions & 4 deletions runtime/doc/map.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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) |
Expand Down
29 changes: 23 additions & 6 deletions src/testdir/test_usercommands.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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> '
Expand Down
17 changes: 15 additions & 2 deletions src/usercmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
result += add_cmd_modifier(buf, "verbose", &multi_mods);
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;
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -735,6 +735,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
31,
/**/
30,
/**/
Expand Down

0 comments on commit 9359e8a

Please sign in to comment.