From 27e196c7d62797b79f5b2cdbcb6cae03f41bb7b3 Mon Sep 17 00:00:00 2001 From: Nathan Zeng Date: Wed, 29 Jul 2026 11:19:17 -0700 Subject: [PATCH] backport: fix(ui2): clear empty cmdline after backspace (#41048) 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. (cherry picked from commit 1dbc766fa71edee8d040815c5621b94c8ecdf68f) --- 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 aa9d48538f..22d10f5c30 100644 --- a/runtime/lua/vim/_core/ui2/cmdline.lua +++ b/runtime/lua/vim/_core/ui2/cmdline.lua @@ -159,8 +159,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 e6569dc2a3..5937120096 100644 --- a/test/functional/ui/cmdline2_spec.lua +++ b/test/functional/ui/cmdline2_spec.lua @@ -275,6 +275,22 @@ describe('cmdline2', function() {16::}%{15:s}{16:/.\{//}^ } | ]]) end) + + it('is empty after backspace', function() + feed(':') + screen:expect([[ + | + {1:~ }|*12 + {16::}^ | + ]]) + + feed('') + screen:expect([[ + ^ | + {1:~ }|*12 + | + ]]) + end) end) describe('cmdline2', function()