vim-patch:9.0.0031: <mods> of user command does not have correct verbose value (#19215)

vim-patch:9.0.0031: <mods> of user command does not have correct verbose value

Problem:    <mods> of user command does not have correct verbose value.
Solution:   Use the value from the command modifier. (closes vim/vim#10651)
9359e8a6d9
This commit is contained in:
zeertzjq
2022-07-03 21:17:03 +08:00
committed by GitHub
parent e837f29ce6
commit 0313aba77a
3 changed files with 38 additions and 14 deletions

View File

@@ -6567,20 +6567,27 @@ size_t uc_mods(char *buf, const cmdmod_T *cmod, bool quote)
// the modifiers that are simple flags
for (size_t i = 0; i < ARRAY_SIZE(mod_entries); i++) {
if (cmdmod.cmod_flags & mod_entries[i].flag) {
if (cmod->cmod_flags & mod_entries[i].flag) {
result += add_cmd_modifier(buf, mod_entries[i].name, &multi_mods);
}
}
// :silent
if (msg_silent > 0) {
if (cmod->cmod_flags & CMOD_SILENT) {
result += add_cmd_modifier(buf,
(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];
snprintf(verbose_buf, NUMBUFLEN, "%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);