summaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-08-11 12:48:36 +0200
committerChristian Clason <c.clason@uni-graz.at>2023-08-12 17:34:15 +0200
commitb223402ba9a69a5993e25e3e7effac5621fbb0e1 (patch)
treecbe8a98a4dc4808166f71e2a44b37b3a9f7172cf /lua
parentfeat(bash): add heredoc injection (diff)
downloadnvim-treesitter-b223402ba9a69a5993e25e3e7effac5621fbb0e1.tar
nvim-treesitter-b223402ba9a69a5993e25e3e7effac5621fbb0e1.tar.gz
nvim-treesitter-b223402ba9a69a5993e25e3e7effac5621fbb0e1.tar.bz2
nvim-treesitter-b223402ba9a69a5993e25e3e7effac5621fbb0e1.tar.lz
nvim-treesitter-b223402ba9a69a5993e25e3e7effac5621fbb0e1.tar.xz
nvim-treesitter-b223402ba9a69a5993e25e3e7effac5621fbb0e1.tar.zst
nvim-treesitter-b223402ba9a69a5993e25e3e7effac5621fbb0e1.zip
fix(directive): make downcase work on captures
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/query_predicates.lua32
1 files changed, 10 insertions, 22 deletions
diff --git a/lua/nvim-treesitter/query_predicates.lua b/lua/nvim-treesitter/query_predicates.lua
index 7f2b73c54..d4726107c 100644
--- a/lua/nvim-treesitter/query_predicates.lua
+++ b/lua/nvim-treesitter/query_predicates.lua
@@ -178,37 +178,25 @@ end, true)
-- Just avoid some annoying warnings for this directive
query.add_directive("make-range!", function() end, true)
+--- transform node text to lower case (e.g., to make @injection.language case insensitive)
+---
---@param match (TSNode|nil)[]
---@param _ string
---@param bufnr integer
---@param pred string[]
----@param metadata table
---@return boolean|nil
query.add_directive("downcase!", function(match, _, bufnr, pred, metadata)
- local text, key, value ---@type string|string[], string, string|integer
-
- if #pred == 3 then
- -- (#downcase! @capture "key")
- key = pred[3]
- value = metadata[pred[2]][key]
- else
- -- (#downcase! "key")
- key = pred[2]
- value = metadata[key]
- end
-
- if type(value) == "string" then
- text = value
- else
- local node = match[value]
- text = vim.treesitter.get_node_text(node, bufnr) or ""
+ local id = pred[2]
+ local node = match[id]
+ if not node then
+ return
end
- if #pred == 3 then
- metadata[pred[2]][key] = string.lower(text)
- else
- metadata[key] = string.lower(text)
+ local text = vim.treesitter.get_node_text(node, bufnr, { metadata = metadata[id] }) or ""
+ if not metadata[id] then
+ metadata[id] = {}
end
+ metadata[id].text = string.lower(text)
end, true)
-- Trim blank lines from end of the region