diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-treesitter/query_predicates.lua | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lua/nvim-treesitter/query_predicates.lua b/lua/nvim-treesitter/query_predicates.lua index a41ad287b..1748250e5 100644 --- a/lua/nvim-treesitter/query_predicates.lua +++ b/lua/nvim-treesitter/query_predicates.lua @@ -87,3 +87,30 @@ end) -- Just avoid some anoying warnings for this directive query.add_directive('make-range!', function() end) + +query.add_directive('downcase!', function(match, _, bufnr, pred, metadata) + local text, key, value + + 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 = query.get_node_text(node, bufnr) + end + + if #pred == 3 then + metadata[pred[2]][key] = string.lower(text) + else + metadata[key] = string.lower(text) + end +end) |
