mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
fix(treesitter): don't trample parsers when filetype!=lang
This allows vim.treesitter.show_tree() to work on buffers where the filetype does not match the parser language name e.g, bash/sh.
This commit is contained in:
parent
f5bad01869
commit
8a985d12dd
@ -96,11 +96,13 @@ function M.get_parser(bufnr, lang, opts)
|
||||
if bufnr == nil or bufnr == 0 then
|
||||
bufnr = a.nvim_get_current_buf()
|
||||
end
|
||||
if lang == nil then
|
||||
lang = a.nvim_buf_get_option(bufnr, 'filetype')
|
||||
end
|
||||
|
||||
if parsers[bufnr] == nil or parsers[bufnr]:lang() ~= lang then
|
||||
if parsers[bufnr] == nil then
|
||||
lang = lang or a.nvim_buf_get_option(bufnr, 'filetype')
|
||||
parsers[bufnr] = M._create_parser(bufnr, lang, opts)
|
||||
elseif lang and parsers[bufnr]:lang() ~= lang then
|
||||
-- Only try to create a new parser if lang is provided
|
||||
-- and it doesn't match the stored parser
|
||||
parsers[bufnr] = M._create_parser(bufnr, lang, opts)
|
||||
end
|
||||
|
||||
|
@ -82,7 +82,7 @@ describe('treesitter language API', function()
|
||||
command("set filetype=borklang")
|
||||
-- Should throw an error when filetype changes to borklang
|
||||
eq(".../language.lua:0: no parser for 'borklang' language, see :help treesitter-parsers",
|
||||
pcall_err(exec_lua, "new_parser = vim.treesitter.get_parser(0)"))
|
||||
pcall_err(exec_lua, "new_parser = vim.treesitter.get_parser(0, 'borklang')"))
|
||||
end)
|
||||
|
||||
it('retrieve the tree given a range', function ()
|
||||
|
Loading…
Reference in New Issue
Block a user