aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2024-07-09 16:57:08 +0200
committerChristian Clason <c.clason@uni-graz.at>2024-07-10 09:30:41 +0200
commita64ce9f989bea1754ce2cd25d832578be86bce32 (patch)
tree64c69ce90f394166c5af9beb1695d712e1d64ba7
parentbot(lockfile): update c_sharp, liquid, mlir, tsx, typescript (diff)
downloadnvim-treesitter-a64ce9f989bea1754ce2cd25d832578be86bce32.tar
nvim-treesitter-a64ce9f989bea1754ce2cd25d832578be86bce32.tar.gz
nvim-treesitter-a64ce9f989bea1754ce2cd25d832578be86bce32.tar.bz2
nvim-treesitter-a64ce9f989bea1754ce2cd25d832578be86bce32.tar.lz
nvim-treesitter-a64ce9f989bea1754ce2cd25d832578be86bce32.tar.xz
nvim-treesitter-a64ce9f989bea1754ce2cd25d832578be86bce32.tar.zst
nvim-treesitter-a64ce9f989bea1754ce2cd25d832578be86bce32.zip
feat(parser): register common short-hand as filetypes
Problem: Cannot use short-hands for @injection.language (e.g., `py` for Python). Solution: Register common short-hand as filetypes for some languages. List taken from https://github.com/helix-editor/helix/blob/master/languages.toml Also remove deprecation custom filetype->parser mapping.
-rw-r--r--lua/nvim-treesitter/parsers.lua51
1 files changed, 14 insertions, 37 deletions
diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua
index 0c185c2c5..730dd393a 100644
--- a/lua/nvim-treesitter/parsers.lua
+++ b/lua/nvim-treesitter/parsers.lua
@@ -1,36 +1,11 @@
local api = vim.api
local ts = vim.treesitter
-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 {
automake = "make",
javascriptreact = "javascript",
ecma = "javascript",
jsx = "javascript",
- sh = "bash",
html_tags = "html",
["typescript.tsx"] = "tsx",
["terraform-vars"] = "terraform",
@@ -47,8 +22,18 @@ for ft, lang in pairs {
mysql = "sql",
sbt = "scala",
neomuttrc = "muttrc",
+ --- short-hand list from https://github.com/helix-editor/helix/blob/master/languages.toml
+ rs = "rust",
+ ex = "elixir",
+ js = "javascript",
+ ts = "typescript",
+ ["c-sharp"] = "csharp",
+ hs = "haskell",
+ py = "python",
+ erl = "erlang",
+ typ = "typst",
} do
- register_lang(lang, ft)
+ ts.language.register(lang, ft)
end
---@class InstallInfo
@@ -73,7 +58,7 @@ end
local list = setmetatable({}, {
__newindex = function(table, parsername, parserconfig)
rawset(table, parsername, parserconfig)
- register_lang(parsername, parserconfig.filetype or parsername)
+ ts.language.register(parsername, parserconfig.filetype or parsername)
end,
})
@@ -2485,23 +2470,15 @@ list.templ = {
local M = {
list = list,
- 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 = get_lang(ft)
+ local result = ts.language.get_lang(ft)
if result then
return result
else
ft = vim.split(ft, ".", { plain = true })[1]
- return get_lang(ft) or ft
+ return ts.language.get_lang(ft) or ft
end
end