mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
fix(treesitter): better lang handling of get_parser()
This commit is contained in:
parent
adfa9de8eb
commit
c5b9643bf1
@ -99,13 +99,28 @@ function M.get_parser(bufnr, lang, opts)
|
|||||||
if bufnr == nil or bufnr == 0 then
|
if bufnr == nil or bufnr == 0 then
|
||||||
bufnr = a.nvim_get_current_buf()
|
bufnr = a.nvim_get_current_buf()
|
||||||
end
|
end
|
||||||
|
|
||||||
if lang == nil then
|
if lang == nil then
|
||||||
local ft = vim.bo[bufnr].filetype
|
local ft = vim.bo[bufnr].filetype
|
||||||
lang = language.get_lang(ft) or ft
|
if ft ~= '' then
|
||||||
-- TODO(lewis6991): we should error here and not default to ft
|
lang = language.get_lang(ft) or ft
|
||||||
-- if not lang then
|
-- TODO(lewis6991): we should error here and not default to ft
|
||||||
-- error(string.format('filetype %s of buffer %d is not associated with any lang', ft, bufnr))
|
-- if not lang then
|
||||||
-- end
|
-- error(string.format('filetype %s of buffer %d is not associated with any lang', ft, bufnr))
|
||||||
|
-- end
|
||||||
|
else
|
||||||
|
if parsers[bufnr] then
|
||||||
|
return parsers[bufnr]
|
||||||
|
end
|
||||||
|
error(
|
||||||
|
string.format(
|
||||||
|
'There is no parser available for buffer %d and one could not be'
|
||||||
|
.. ' created because lang could not be determined. Either pass lang'
|
||||||
|
.. ' or set the buffer filetype',
|
||||||
|
bufnr
|
||||||
|
)
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if parsers[bufnr] == nil or parsers[bufnr]:lang() ~= lang then
|
if parsers[bufnr] == nil or parsers[bufnr]:lang() ~= lang then
|
||||||
|
@ -128,7 +128,9 @@ void ui_refresh(void)
|
|||||||
it('does not get parser for empty filetype', function()
|
it('does not get parser for empty filetype', function()
|
||||||
insert(test_text);
|
insert(test_text);
|
||||||
|
|
||||||
eq(".../language.lua:0: '' is not a valid filetype",
|
eq('.../treesitter.lua:0: There is no parser available for buffer 1 and one'
|
||||||
|
.. ' could not be created because lang could not be determined. Either'
|
||||||
|
.. ' pass lang or set the buffer filetype',
|
||||||
pcall_err(exec_lua, 'vim.treesitter.get_parser(0)'))
|
pcall_err(exec_lua, 'vim.treesitter.get_parser(0)'))
|
||||||
|
|
||||||
-- Must provide language for buffers with an empty filetype
|
-- Must provide language for buffers with an empty filetype
|
||||||
|
Loading…
Reference in New Issue
Block a user