mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-14 09:20:04 -04:00
feat: use vim.treesitter.language.get_lang/add/register()
This commit is contained in:
parent
f15d3b0322
commit
801ef85f93
3 changed files with 49 additions and 9 deletions
|
|
@ -1,7 +1,31 @@
|
|||
local api = vim.api
|
||||
local ts = vim.treesitter
|
||||
|
||||
local filetype_to_parsername = {
|
||||
local new_lang_api = ts.language.register ~= nil
|
||||
|
||||
local filetype_to_parsername = {}
|
||||
|
||||
if new_lang_api then
|
||||
filetype_to_parsername = setmetatable({}, {
|
||||
__newindex = function(_, k, v)
|
||||
require("nvim-treesitter.utils").notify(
|
||||
"filetype_to_parsername is deprecated, please use 'vim.treesitter.language.register'",
|
||||
vim.log.levels.WARN
|
||||
)
|
||||
ts.language.register(v, k)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
local function register_lang(lang, ft)
|
||||
if new_lang_api then
|
||||
ts.language.register(lang, ft)
|
||||
return
|
||||
end
|
||||
filetype_to_parsername[ft] = lang
|
||||
end
|
||||
|
||||
for ft, lang in pairs {
|
||||
javascriptreact = "javascript",
|
||||
ecma = "javascript",
|
||||
jsx = "javascript",
|
||||
|
|
@ -20,7 +44,9 @@ local filetype_to_parsername = {
|
|||
tape = "vhs",
|
||||
dosini = "ini",
|
||||
confini = "ini",
|
||||
}
|
||||
} do
|
||||
register_lang(lang, ft)
|
||||
end
|
||||
|
||||
---@class InstallInfo
|
||||
---@field url string
|
||||
|
|
@ -42,7 +68,7 @@ local filetype_to_parsername = {
|
|||
local list = setmetatable({}, {
|
||||
__newindex = function(table, parsername, parserconfig)
|
||||
rawset(table, parsername, parserconfig)
|
||||
filetype_to_parsername[parserconfig.filetype or parsername] = parsername
|
||||
register_lang(parsername, parserconfig.filetype or parsername)
|
||||
end,
|
||||
})
|
||||
|
||||
|
|
@ -1524,13 +1550,20 @@ local M = {
|
|||
filetype_to_parsername = filetype_to_parsername,
|
||||
}
|
||||
|
||||
local function get_lang(ft)
|
||||
if new_lang_api then
|
||||
return ts.language.get_lang(ft)
|
||||
end
|
||||
return filetype_to_parsername[ft]
|
||||
end
|
||||
|
||||
function M.ft_to_lang(ft)
|
||||
local result = filetype_to_parsername[ft]
|
||||
local result = get_lang(ft)
|
||||
if result then
|
||||
return result
|
||||
else
|
||||
ft = vim.split(ft, ".", { plain = true })[1]
|
||||
return filetype_to_parsername[ft] or ft
|
||||
return get_lang(ft) or ft
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue