aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/treesitter/languagetree.lua
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/lua/vim/treesitter/languagetree.lua')
-rw-r--r--runtime/lua/vim/treesitter/languagetree.lua10
1 files changed, 9 insertions, 1 deletions
diff --git a/runtime/lua/vim/treesitter/languagetree.lua b/runtime/lua/vim/treesitter/languagetree.lua
index 89aac3ae26..3e1bc5d1cb 100644
--- a/runtime/lua/vim/treesitter/languagetree.lua
+++ b/runtime/lua/vim/treesitter/languagetree.lua
@@ -354,6 +354,14 @@ local function get_range_from_metadata(node, id, metadata)
return { node:range() }
end
+---@private
+local function get_node_text(node, id, metadata, source)
+ if metadata[id] and metadata[id].text then
+ return metadata[id].text
+ end
+ return query.get_node_text(node, source)
+end
+
--- Gets language injection points by language.
---
--- This is where most of the injection processing occurs.
@@ -408,7 +416,7 @@ function LanguageTree:_get_injections()
-- Lang should override any other language tag
if name == 'language' and not lang then
- lang = query.get_node_text(node, self._source) --[[@as string]]
+ lang = get_node_text(node, id, metadata, self._source) --[[@as string]]
elseif name == 'combined' then
combined = true
elseif name == 'content' and #ranges == 0 then