fix(treesitter): better lang handling of get_parser()

This commit is contained in:
Lewis Russell 2023-03-10 10:25:10 +00:00
parent adfa9de8eb
commit c5b9643bf1
2 changed files with 23 additions and 6 deletions

View File

@ -99,13 +99,28 @@ 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
local ft = vim.bo[bufnr].filetype
if ft ~= '' then
lang = language.get_lang(ft) or ft
-- TODO(lewis6991): we should error here and not default to ft
-- if not lang then
-- 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
if parsers[bufnr] == nil or parsers[bufnr]:lang() ~= lang then

View File

@ -128,7 +128,9 @@ void ui_refresh(void)
it('does not get parser for empty filetype', function()
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)'))
-- Must provide language for buffers with an empty filetype