From 0829e7575d63d51f0e33df81be2a45099aedea97 Mon Sep 17 00:00:00 2001 From: phanium <91544758+phanen@users.noreply.github.com> Date: Tue, 11 Mar 2025 21:15:22 +0800 Subject: fix: warn when :InspectTree on buffer with no parser #32783 Problem: `InspectTree` error on buffer without ts parser attached. Solution: show a more correct warning. --- runtime/lua/vim/treesitter/dev.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/runtime/lua/vim/treesitter/dev.lua b/runtime/lua/vim/treesitter/dev.lua index 24dd8243db..41ecf07aa1 100644 --- a/runtime/lua/vim/treesitter/dev.lua +++ b/runtime/lua/vim/treesitter/dev.lua @@ -76,7 +76,9 @@ end --- ---@package function TSTreeView:new(bufnr, lang) - local parser = vim.treesitter.get_parser(bufnr or 0, lang, { error = false }) + bufnr = bufnr or 0 + lang = lang or vim.treesitter.language.get_lang(vim.bo[bufnr].filetype) + local parser = vim.treesitter.get_parser(bufnr, lang, { error = false }) if not parser then return nil, string.format( @@ -334,7 +336,13 @@ function M.inspect_tree(opts) -- window id for source buffer local win = api.nvim_get_current_win() - local treeview = assert(TSTreeView:new(buf, opts.lang)) + local treeview, err = TSTreeView:new(buf, opts.lang) + if err and err:match('no parser for lang') then + vim.api.nvim_echo({ { err, 'WarningMsg' } }, true, {}) + return + elseif not treeview then + error(err) + end -- Close any existing inspector window if vim.b[buf].dev_inspect then -- cgit