aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/treesitter/query.lua
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-08-11 17:05:17 +0200
committerGitHub <noreply@github.com>2023-08-11 17:05:17 +0200
commit31c4ed26bc278282898123ad21bb6fead401fd6f (patch)
treef7bd6c3a1953348ef5980e5e52d35c655d024a3d /runtime/lua/vim/treesitter/query.lua
parent72e64a1afef0df1bd244bfb31dfc8619d91ff709 (diff)
downloadrneovim-31c4ed26bc278282898123ad21bb6fead401fd6f.tar.gz
rneovim-31c4ed26bc278282898123ad21bb6fead401fd6f.tar.bz2
rneovim-31c4ed26bc278282898123ad21bb6fead401fd6f.zip
feat(treesitter): add injection language fallback (#24659)
* feat(treesitter): add injection language fallback Problem: injection languages are often specified via aliases (e.g., filetype or in upper case), requiring custom directives. Solution: include lookup logic (try as parser name, then filetype, then lowercase) in LanguageTree itself and remove `#inject-language` directive. Co-authored-by: Lewis Russell <me@lewisr.dev>
Diffstat (limited to 'runtime/lua/vim/treesitter/query.lua')
-rw-r--r--runtime/lua/vim/treesitter/query.lua27
1 files changed, 0 insertions, 27 deletions
diff --git a/runtime/lua/vim/treesitter/query.lua b/runtime/lua/vim/treesitter/query.lua
index 3b7e74c0cf..c3213e0192 100644
--- a/runtime/lua/vim/treesitter/query.lua
+++ b/runtime/lua/vim/treesitter/query.lua
@@ -541,33 +541,6 @@ local directive_handlers = {
metadata.range = { start_row, start_col, end_row, end_col }
end
end,
- -- Set injection language from node text, interpreted first as language and then as filetype
- -- Example: (#inject-language! @_lang)
- ['inject-language!'] = function(match, _, bufnr, pred, metadata)
- local id = pred[2]
- local node = match[id]
- if not node then
- return
- end
-
- -- TODO(clason): replace by refactored `ts.has_parser` API
- local has_parser = function(lang)
- return vim._ts_has_language(lang)
- or #vim.api.nvim_get_runtime_file('parser/' .. lang .. '.*', false) > 0
- end
-
- local alias = vim.treesitter.get_node_text(node, bufnr, { metadata = metadata[id] })
- if not alias then
- return
- elseif has_parser(alias) then
- metadata['injection.language'] = alias
- else
- local lang = vim.treesitter.language.get_lang(alias)
- if lang and has_parser(lang) then
- metadata['injection.language'] = lang
- end
- end
- end,
}
--- Adds a new predicate to be used in queries