From c94b7b93c0d9f843be6b68db9dee0a0297060af4 Mon Sep 17 00:00:00 2001 From: luukvbaal Date: Wed, 22 Oct 2025 16:16:36 +0200 Subject: [PATCH] fix(ui2): start treesitter after deleting cmdline buffer (#36274) Problem: Treesitter is not started in new cmdline buffer after deletion. Solution: Start treesitter when highlighter buffer no longer matches. --- runtime/lua/vim/_extui/cmdline.lua | 2 +- test/functional/ui/cmdline2_spec.lua | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/runtime/lua/vim/_extui/cmdline.lua b/runtime/lua/vim/_extui/cmdline.lua index f58ebb5910..3a2b929598 100644 --- a/runtime/lua/vim/_extui/cmdline.lua +++ b/runtime/lua/vim/_extui/cmdline.lua @@ -63,7 +63,7 @@ end ---@param hl_id integer function M.cmdline_show(content, pos, firstc, prompt, indent, level, hl_id) M.level, M.indent, M.prompt = level, indent, M.prompt or #prompt > 0 - if M.highlighter == nil then + if M.highlighter == nil or M.highlighter.bufnr ~= ext.bufs.cmd then local parser = assert(vim.treesitter.get_parser(ext.bufs.cmd, 'vim', {})) M.highlighter = vim.treesitter.highlighter.new(parser) end diff --git a/test/functional/ui/cmdline2_spec.lua b/test/functional/ui/cmdline2_spec.lua index 125bf8a34f..3383f3d322 100644 --- a/test/functional/ui/cmdline2_spec.lua +++ b/test/functional/ui/cmdline2_spec.lua @@ -97,4 +97,13 @@ describe('cmdline2', function() ^ | ]]) end) + + it('highlights after deleting buffer', function() + feed(':%bw!:call foo()') + screen:expect([[ + | + {1:~ }|*12 + {16::}{15:call} {25:foo}{16:()}^ | + ]]) + end) end)