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())')