From 1dbc766fa71edee8d040815c5621b94c8ecdf68f Mon Sep 17 00:00:00 2001 From: Nathan Zeng Date: Wed, 29 Jul 2026 09:40:08 -0700 Subject: [PATCH] fix(ui2): clear empty cmdline after backspace #41043 Problem: Cmdline area shows stale ":" after backspacing out of the command line. Solution: Clear the command line for empty commands. Note that `:` will now clear the command line too. --- runtime/lua/vim/_core/ui2/cmdline.lua | 4 ++-- test/functional/ui/cmdline2_spec.lua | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/runtime/lua/vim/_core/ui2/cmdline.lua b/runtime/lua/vim/_core/ui2/cmdline.lua index 62cb07717c..1cfe36eab1 100644 --- a/runtime/lua/vim/_core/ui2/cmdline.lua +++ b/runtime/lua/vim/_core/ui2/cmdline.lua @@ -154,8 +154,8 @@ function M.cmdline_hide(level, abort) fn.clearmatches(ui.wins.cmd) -- Clear matchparen highlights. api.nvim_win_set_cursor(ui.wins.cmd, { 1, 0 }) - if M.prompt or abort then - -- Clear cmd buffer prompt or aborted command (non-abort is left visible). + if M.prompt or abort or cmdbuff == '' then + -- Clear cmd buffer prompt or aborted/empty command (non-abort is left visible). api.nvim_buf_set_lines(ui.bufs.cmd, 0, -1, false, {}) end diff --git a/test/functional/ui/cmdline2_spec.lua b/test/functional/ui/cmdline2_spec.lua index 731d6e31d9..0aeed9ee9e 100644 --- a/test/functional/ui/cmdline2_spec.lua +++ b/test/functional/ui/cmdline2_spec.lua @@ -287,6 +287,22 @@ describe('cmdline2', function() ]]) end) + it('is empty after backspace', function() + feed(':') + screen:expect([[ + | + {1:~ }|*12 + {16::}^ | + ]]) + + feed('') + screen:expect([[ + ^ | + {1:~ }|*12 + | + ]]) + end) + it('matchparen highlights', function() exec('source $VIMRUNTIME/plugin/matchparen.lua') feed(':call foo(bar())')