patch 9.1.1563: completion: ruler may disappear

Problem:  The ruler disappears after typing the second character during
          insert mode completion, even when completion messages are
          suppressed ('shortmess' includes "c"). This makes the UI
          appear inconsistent.
Solution: Ensure the ruler is restored during screen redraw when popup
          completion is active (Girish Palya).

Notes:
No new tests were added, as existing screen dump tests were updated to
reflect the corrected behavior.

closes: #17770

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Girish Palya
2025-07-17 22:02:57 +02:00
committed by Christian Brabandt
parent fb45809f01
commit 824286c9a7
7 changed files with 101 additions and 95 deletions

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-07-17 20:16+0200\n" "POT-Creation-Date: 2025-07-17 22:02+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -3315,71 +3315,71 @@ msgid ""
"Type Name Content" "Type Name Content"
msgstr "" msgstr ""
#: ../screen.c:4127 #: ../screen.c:4128
msgid " VREPLACE" msgid " VREPLACE"
msgstr "" msgstr ""
#: ../screen.c:4129 #: ../screen.c:4130
msgid " REPLACE" msgid " REPLACE"
msgstr "" msgstr ""
#: ../screen.c:4134 #: ../screen.c:4135
msgid " REVERSE" msgid " REVERSE"
msgstr "" msgstr ""
#: ../screen.c:4136 #: ../screen.c:4137
msgid " INSERT" msgid " INSERT"
msgstr "" msgstr ""
#: ../screen.c:4140 #: ../screen.c:4141
msgid " (insert)" msgid " (insert)"
msgstr "" msgstr ""
#: ../screen.c:4142 #: ../screen.c:4143
msgid " (replace)" msgid " (replace)"
msgstr "" msgstr ""
#: ../screen.c:4144 #: ../screen.c:4145
msgid " (vreplace)" msgid " (vreplace)"
msgstr "" msgstr ""
#: ../screen.c:4147 #: ../screen.c:4148
msgid " Hebrew" msgid " Hebrew"
msgstr "" msgstr ""
#: ../screen.c:4154 #: ../screen.c:4155
msgid " Arabic" msgid " Arabic"
msgstr "" msgstr ""
#: ../screen.c:4163 #: ../screen.c:4164
msgid " (paste)" msgid " (paste)"
msgstr "" msgstr ""
#: ../screen.c:4175 #: ../screen.c:4176
msgid " VISUAL" msgid " VISUAL"
msgstr "" msgstr ""
#: ../screen.c:4176 #: ../screen.c:4177
msgid " VISUAL LINE" msgid " VISUAL LINE"
msgstr "" msgstr ""
#: ../screen.c:4177 #: ../screen.c:4178
msgid " VISUAL BLOCK" msgid " VISUAL BLOCK"
msgstr "" msgstr ""
#: ../screen.c:4178 #: ../screen.c:4179
msgid " SELECT" msgid " SELECT"
msgstr "" msgstr ""
#: ../screen.c:4179 #: ../screen.c:4180
msgid " SELECT LINE" msgid " SELECT LINE"
msgstr "" msgstr ""
#: ../screen.c:4180 #: ../screen.c:4181
msgid " SELECT BLOCK" msgid " SELECT BLOCK"
msgstr "" msgstr ""
#: ../screen.c:4277 #: ../screen.c:4282
msgid "recording" msgid "recording"
msgstr "" msgstr ""
@ -4257,327 +4257,327 @@ msgstr ""
msgid "%s (%s, compiled %s)" msgid "%s (%s, compiled %s)"
msgstr "" msgstr ""
#: ../version.c:4050 #: ../version.c:4060
msgid "" msgid ""
"\n" "\n"
"MS-Windows ARM64 GUI/console version" "MS-Windows ARM64 GUI/console version"
msgstr "" msgstr ""
#: ../version.c:4052 #: ../version.c:4062
msgid "" msgid ""
"\n" "\n"
"MS-Windows 64-bit GUI/console version" "MS-Windows 64-bit GUI/console version"
msgstr "" msgstr ""
#: ../version.c:4055 #: ../version.c:4065
msgid "" msgid ""
"\n" "\n"
"MS-Windows 32-bit GUI/console version" "MS-Windows 32-bit GUI/console version"
msgstr "" msgstr ""
#: ../version.c:4060 #: ../version.c:4070
msgid "" msgid ""
"\n" "\n"
"MS-Windows ARM64 GUI version" "MS-Windows ARM64 GUI version"
msgstr "" msgstr ""
#: ../version.c:4062 #: ../version.c:4072
msgid "" msgid ""
"\n" "\n"
"MS-Windows 64-bit GUI version" "MS-Windows 64-bit GUI version"
msgstr "" msgstr ""
#: ../version.c:4065 #: ../version.c:4075
msgid "" msgid ""
"\n" "\n"
"MS-Windows 32-bit GUI version" "MS-Windows 32-bit GUI version"
msgstr "" msgstr ""
#: ../version.c:4069 #: ../version.c:4079
msgid " with OLE support" msgid " with OLE support"
msgstr "" msgstr ""
#: ../version.c:4074 #: ../version.c:4084
msgid "" msgid ""
"\n" "\n"
"MS-Windows ARM64 console version" "MS-Windows ARM64 console version"
msgstr "" msgstr ""
#: ../version.c:4076 #: ../version.c:4086
msgid "" msgid ""
"\n" "\n"
"MS-Windows 64-bit console version" "MS-Windows 64-bit console version"
msgstr "" msgstr ""
#: ../version.c:4079 #: ../version.c:4089
msgid "" msgid ""
"\n" "\n"
"MS-Windows 32-bit console version" "MS-Windows 32-bit console version"
msgstr "" msgstr ""
#: ../version.c:4085 #: ../version.c:4095
msgid "" msgid ""
"\n" "\n"
"macOS version" "macOS version"
msgstr "" msgstr ""
#: ../version.c:4087 #: ../version.c:4097
msgid "" msgid ""
"\n" "\n"
"macOS version w/o darwin feat." "macOS version w/o darwin feat."
msgstr "" msgstr ""
#: ../version.c:4097 #: ../version.c:4107
msgid "" msgid ""
"\n" "\n"
"OpenVMS version" "OpenVMS version"
msgstr "" msgstr ""
#: ../version.c:4112 #: ../version.c:4122
msgid "" msgid ""
"\n" "\n"
"Included patches: " "Included patches: "
msgstr "" msgstr ""
#: ../version.c:4137 #: ../version.c:4147
msgid "" msgid ""
"\n" "\n"
"Extra patches: " "Extra patches: "
msgstr "" msgstr ""
#: ../version.c:4149 ../version.c:4460 #: ../version.c:4159 ../version.c:4470
msgid "Modified by " msgid "Modified by "
msgstr "" msgstr ""
#: ../version.c:4156 #: ../version.c:4166
msgid "" msgid ""
"\n" "\n"
"Compiled " "Compiled "
msgstr "" msgstr ""
#: ../version.c:4159 #: ../version.c:4169
msgid "by " msgid "by "
msgstr "" msgstr ""
#: ../version.c:4171 #: ../version.c:4181
msgid "" msgid ""
"\n" "\n"
"Huge version " "Huge version "
msgstr "" msgstr ""
#: ../version.c:4173 #: ../version.c:4183
msgid "" msgid ""
"\n" "\n"
"Normal version " "Normal version "
msgstr "" msgstr ""
#: ../version.c:4175 #: ../version.c:4185
msgid "" msgid ""
"\n" "\n"
"Tiny version " "Tiny version "
msgstr "" msgstr ""
#: ../version.c:4178 #: ../version.c:4188
msgid "without GUI." msgid "without GUI."
msgstr "" msgstr ""
#: ../version.c:4181 #: ../version.c:4191
msgid "with GTK3 GUI." msgid "with GTK3 GUI."
msgstr "" msgstr ""
#: ../version.c:4183 #: ../version.c:4193
msgid "with GTK2-GNOME GUI." msgid "with GTK2-GNOME GUI."
msgstr "" msgstr ""
#: ../version.c:4185 #: ../version.c:4195
msgid "with GTK2 GUI." msgid "with GTK2 GUI."
msgstr "" msgstr ""
#: ../version.c:4188 #: ../version.c:4198
msgid "with X11-Motif GUI." msgid "with X11-Motif GUI."
msgstr "" msgstr ""
#: ../version.c:4190 #: ../version.c:4200
msgid "with Haiku GUI." msgid "with Haiku GUI."
msgstr "" msgstr ""
#: ../version.c:4192 #: ../version.c:4202
msgid "with Photon GUI." msgid "with Photon GUI."
msgstr "" msgstr ""
#: ../version.c:4194 #: ../version.c:4204
msgid "with GUI." msgid "with GUI."
msgstr "" msgstr ""
#: ../version.c:4196 #: ../version.c:4206
msgid " Features included (+) or not (-):\n" msgid " Features included (+) or not (-):\n"
msgstr "" msgstr ""
#: ../version.c:4203 #: ../version.c:4213
msgid " system vimrc file: \"" msgid " system vimrc file: \""
msgstr "" msgstr ""
#: ../version.c:4208 #: ../version.c:4218
msgid " user vimrc file: \"" msgid " user vimrc file: \""
msgstr "" msgstr ""
#: ../version.c:4213 #: ../version.c:4223
msgid " 2nd user vimrc file: \"" msgid " 2nd user vimrc file: \""
msgstr "" msgstr ""
#: ../version.c:4218 ../version.c:4225 ../version.c:4229 #: ../version.c:4228 ../version.c:4235 ../version.c:4239
msgid " 3rd user vimrc file: \"" msgid " 3rd user vimrc file: \""
msgstr "" msgstr ""
#: ../version.c:4221 #: ../version.c:4231
msgid " 4th user vimrc file: \"" msgid " 4th user vimrc file: \""
msgstr "" msgstr ""
#: ../version.c:4234 #: ../version.c:4244
msgid " user exrc file: \"" msgid " user exrc file: \""
msgstr "" msgstr ""
#: ../version.c:4239 #: ../version.c:4249
msgid " 2nd user exrc file: \"" msgid " 2nd user exrc file: \""
msgstr "" msgstr ""
#: ../version.c:4245 #: ../version.c:4255
msgid " system gvimrc file: \"" msgid " system gvimrc file: \""
msgstr "" msgstr ""
#: ../version.c:4249 #: ../version.c:4259
msgid " user gvimrc file: \"" msgid " user gvimrc file: \""
msgstr "" msgstr ""
#: ../version.c:4253 #: ../version.c:4263
msgid "2nd user gvimrc file: \"" msgid "2nd user gvimrc file: \""
msgstr "" msgstr ""
#: ../version.c:4258 #: ../version.c:4268
msgid "3rd user gvimrc file: \"" msgid "3rd user gvimrc file: \""
msgstr "" msgstr ""
#: ../version.c:4263 #: ../version.c:4273
msgid " defaults file: \"" msgid " defaults file: \""
msgstr "" msgstr ""
#: ../version.c:4268 #: ../version.c:4278
msgid " system menu file: \"" msgid " system menu file: \""
msgstr "" msgstr ""
#: ../version.c:4276 #: ../version.c:4286
msgid " fall-back for $VIM: \"" msgid " fall-back for $VIM: \""
msgstr "" msgstr ""
#: ../version.c:4282 #: ../version.c:4292
msgid " f-b for $VIMRUNTIME: \"" msgid " f-b for $VIMRUNTIME: \""
msgstr "" msgstr ""
#: ../version.c:4286 #: ../version.c:4296
msgid "Compilation: " msgid "Compilation: "
msgstr "" msgstr ""
#: ../version.c:4292 #: ../version.c:4302
msgid "Compiler: " msgid "Compiler: "
msgstr "" msgstr ""
#: ../version.c:4297 #: ../version.c:4307
msgid "Linking: " msgid "Linking: "
msgstr "" msgstr ""
#: ../version.c:4302 #: ../version.c:4312
msgid " DEBUG BUILD" msgid " DEBUG BUILD"
msgstr "" msgstr ""
#: ../version.c:4338 #: ../version.c:4348
msgid "VIM - Vi IMproved" msgid "VIM - Vi IMproved"
msgstr "" msgstr ""
#: ../version.c:4340 #: ../version.c:4350
msgid "version " msgid "version "
msgstr "" msgstr ""
#: ../version.c:4341 #: ../version.c:4351
msgid "by Bram Moolenaar et al." msgid "by Bram Moolenaar et al."
msgstr "" msgstr ""
#: ../version.c:4345 #: ../version.c:4355
msgid "Vim is open source and freely distributable" msgid "Vim is open source and freely distributable"
msgstr "" msgstr ""
#: ../version.c:4347 #: ../version.c:4357
msgid "Help poor children in Uganda!" msgid "Help poor children in Uganda!"
msgstr "" msgstr ""
#: ../version.c:4348 #: ../version.c:4358
msgid "type :help iccf<Enter> for information " msgid "type :help iccf<Enter> for information "
msgstr "" msgstr ""
#: ../version.c:4350 #: ../version.c:4360
msgid "type :q<Enter> to exit " msgid "type :q<Enter> to exit "
msgstr "" msgstr ""
#: ../version.c:4351 #: ../version.c:4361
msgid "type :help<Enter> or <F1> for on-line help" msgid "type :help<Enter> or <F1> for on-line help"
msgstr "" msgstr ""
#: ../version.c:4352 #: ../version.c:4362
msgid "type :help version9<Enter> for version info" msgid "type :help version9<Enter> for version info"
msgstr "" msgstr ""
#: ../version.c:4355 #: ../version.c:4365
msgid "Running in Vi compatible mode" msgid "Running in Vi compatible mode"
msgstr "" msgstr ""
#: ../version.c:4356 #: ../version.c:4366
msgid "type :set nocp<Enter> for Vim defaults" msgid "type :set nocp<Enter> for Vim defaults"
msgstr "" msgstr ""
#: ../version.c:4357 #: ../version.c:4367
msgid "type :help cp-default<Enter> for info on this" msgid "type :help cp-default<Enter> for info on this"
msgstr "" msgstr ""
#: ../version.c:4372 #: ../version.c:4382
msgid "menu Help->Orphans for information " msgid "menu Help->Orphans for information "
msgstr "" msgstr ""
#: ../version.c:4374 #: ../version.c:4384
msgid "Running modeless, typed text is inserted" msgid "Running modeless, typed text is inserted"
msgstr "" msgstr ""
#: ../version.c:4375 #: ../version.c:4385
msgid "menu Edit->Global Settings->Toggle Insert Mode " msgid "menu Edit->Global Settings->Toggle Insert Mode "
msgstr "" msgstr ""
#: ../version.c:4376 #: ../version.c:4386
msgid " for two modes " msgid " for two modes "
msgstr "" msgstr ""
#: ../version.c:4380 #: ../version.c:4390
msgid "menu Edit->Global Settings->Toggle Vi Compatible" msgid "menu Edit->Global Settings->Toggle Vi Compatible"
msgstr "" msgstr ""
#: ../version.c:4381 #: ../version.c:4391
msgid " for Vim defaults " msgid " for Vim defaults "
msgstr "" msgstr ""
#: ../version.c:4422 #: ../version.c:4432
msgid "Sponsor Vim development!" msgid "Sponsor Vim development!"
msgstr "" msgstr ""
#: ../version.c:4423 #: ../version.c:4433
msgid "Become a registered Vim user!" msgid "Become a registered Vim user!"
msgstr "" msgstr ""
#: ../version.c:4426 #: ../version.c:4436
msgid "type :help sponsor<Enter> for information " msgid "type :help sponsor<Enter> for information "
msgstr "" msgstr ""
#: ../version.c:4427 #: ../version.c:4437
msgid "type :help register<Enter> for information " msgid "type :help register<Enter> for information "
msgstr "" msgstr ""
#: ../version.c:4429 #: ../version.c:4439
msgid "menu Help->Sponsor/Register for information " msgid "menu Help->Sponsor/Register for information "
msgstr "" msgstr ""

View File

@ -4051,6 +4051,7 @@ showmode(void)
int attr; int attr;
int nwr_save; int nwr_save;
int sub_attr; int sub_attr;
int show_ruler_with_pum = FALSE;
do_mode = p_smd && msg_silent == 0 do_mode = p_smd && msg_silent == 0
&& ((State & MODE_INSERT) && ((State & MODE_INSERT)
@ -4182,6 +4183,10 @@ showmode(void)
msg_puts_attr(_(p), attr); msg_puts_attr(_(p), attr);
} }
msg_puts_attr(" --", attr); msg_puts_attr(" --", attr);
// Ensure ruler is shown when a popup is visible and only the mode name
// is displayed. Without this, the ruler may disappear during insert-mode
// completion when 'shortmess' includes 'c'.
show_ruler_with_pum = TRUE;
} }
need_clear = TRUE; need_clear = TRUE;
@ -4217,7 +4222,7 @@ showmode(void)
// If the last window has no status line, the ruler is after the mode // If the last window has no status line, the ruler is after the mode
// message and must be redrawn // message and must be redrawn
if (redrawing() && lastwin->w_status_height == 0) if (redrawing() && lastwin->w_status_height == 0)
win_redr_ruler(lastwin, TRUE, FALSE); win_redr_ruler(lastwin, TRUE, show_ruler_with_pum);
redraw_cmdline = FALSE; redraw_cmdline = FALSE;
redraw_mode = FALSE; redraw_mode = FALSE;

View File

@ -17,4 +17,4 @@
|~| @73 |~| @73
|~| @73 |~| @73
|~| @73 |~| @73
|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@62 |-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|1| @10|A|l@1|

View File

@ -9,4 +9,4 @@
|~| @73 |~| @73
|~| @73 |~| @73
|~| @73 |~| @73
|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@62 |-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|3|,|1| @10|A|l@1|

View File

@ -9,4 +9,4 @@
|~| @73 |~| @73
|~| @73 |~| @73
|~| @73 |~| @73
|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@62 |-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|4|,|1| @10|A|l@1|

View File

@ -218,7 +218,6 @@ func Test_popup_complete()
set completeopt& set completeopt&
endfunc endfunc
func Test_popup_completion_insertmode() func Test_popup_completion_insertmode()
new new
inoremap <F5> <C-R>=ListMonths()<CR> inoremap <F5> <C-R>=ListMonths()<CR>

View File

@ -719,6 +719,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 */
/**/
1563,
/**/ /**/
1562, 1562,
/**/ /**/