commit c94b7b93c0d9f843be6b68db9dee0a0297060af4
parent cf48741227a9aa77533d5adfd2379e7c16c71363
Author: luukvbaal <luukvbaal@gmail.com>
Date: Wed, 22 Oct 2025 16:16:36 +0200
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.
Diffstat:
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git 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
@@ -97,4 +97,13 @@ describe('cmdline2', function()
^ |
]])
end)
+
+ it('highlights after deleting buffer', function()
+ feed(':%bw!<CR>:call foo()')
+ screen:expect([[
+ |
+ {1:~ }|*12
+ {16::}{15:call} {25:foo}{16:()}^ |
+ ]])
+ end)
end)