changeset 31097:4f709e5f24d2 v9.0.0883

patch 9.0.0883: a silent mapping may cause dots on the command line Commit: https://github.com/vim/vim/commit/698a00f55d60043d51b1c98cbbf3f9fd10badd2f Author: Bram Moolenaar <Bram@vim.org> Date: Mon Nov 14 22:07:45 2022 +0000 patch 9.0.0883: a silent mapping may cause dots on the command line Problem: A silent mapping may cause dots on the command line. Solution: Don't show dots for completion if they are not going to be removed again. (closes #11501)
author Bram Moolenaar <Bram@vim.org>
date Mon, 14 Nov 2022 23:15:03 +0100
parents 4d09d22a1c0d
children 84ca46887d8a
files runtime/doc/map.txt src/cmdexpand.c src/version.c
diffstat 3 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -234,6 +234,9 @@ The search string will not be echoed whe
 the executed command are still given though.  To shut them up too, add a
 ":silent" in the executed command: >
 	:map <silent> ,h :exe ":silent normal /Header\r"<CR>
+Note that the effect of a command might also be silenced, e.g., when the
+mapping selects another entry for command line completion it won't be
+displayed.
 Prompts will still be given, e.g., for inputdialog().
 Using "<silent>" for an abbreviation is possible, but will cause redrawing of
 the command line to fail.
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -226,8 +226,13 @@ nextwild(
 	return FAIL;
     }
 
-    msg_puts("...");	    // show that we are busy
-    out_flush();
+    // If cmd_silent is set then don't show the dots, because redrawcmd() below
+    // won't remove them.
+    if (!cmd_silent)
+    {
+	msg_puts("...");	    // show that we are busy
+	out_flush();
+    }
 
     i = (int)(xp->xp_pattern - ccline->cmdbuff);
     xp->xp_pattern_len = ccline->cmdpos - i;
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    883,
+/**/
     882,
 /**/
     881,