feat(treesitter)!: add default fallback to ft_to_lang lookups

Problem: Language names are only registered for filetype<->language
lookups when parsers are actually loaded; this means users cannot rely
on `vim.treesitter.language.get_lang()` or `get_filetypes()` to return
the correct value when language and filetype coincide and always need to
add explicit fallbacks.

Solution: Always return the language name as valid filetype in
`get_filetypes()`, and default to the filetype in `get_lang()`. Document
this behavior.
This commit is contained in:
Christian Clason
2024-09-14 13:27:44 +02:00
parent e40314811e
commit 041d98fe8d
5 changed files with 31 additions and 17 deletions

View File

@@ -41,7 +41,7 @@ local function guess_query_lang(buf)
local filename = api.nvim_buf_get_name(buf)
if filename ~= '' then
local resolved_filename = vim.F.npcall(vim.fn.fnamemodify, filename, ':p:h:t')
return resolved_filename and vim.treesitter.language.get_lang(resolved_filename) or nil
return resolved_filename and vim.treesitter.language.get_lang(resolved_filename)
end
end