From 698a00f55d60043d51b1c98cbbf3f9fd10badd2f Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 14 Nov 2022 22:07:45 +0000 Subject: 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) --- runtime/doc/map.txt | 3 +++ src/cmdexpand.c | 9 +++++++-- src/version.c | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index c33c9f869..494b6290f 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -234,6 +234,9 @@ The search string will not be echoed when using this mapping. Messages from the executed command are still given though. To shut them up too, add a ":silent" in the executed command: > :map ,h :exe ":silent normal /Header\r" +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 "" for an abbreviation is possible, but will cause redrawing of the command line to fail. diff --git a/src/cmdexpand.c b/src/cmdexpand.c index 4f1262538..228d4bc09 100644 --- 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; diff --git a/src/version.c b/src/version.c index a35a172ac..7fae79d38 100644 --- a/src/version.c +++ b/src/version.c @@ -695,6 +695,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 883, /**/ 882, /**/ -- cgit v1.2.1