summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/nvim-treesitter/query_predicates.lua27
-rw-r--r--queries/ruby/injections.scm6
2 files changed, 33 insertions, 0 deletions
diff --git a/lua/nvim-treesitter/query_predicates.lua b/lua/nvim-treesitter/query_predicates.lua
index a41ad287..1748250e 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)
diff --git a/queries/ruby/injections.scm b/queries/ruby/injections.scm
index 4bb7d675..89bb058a 100644
--- a/queries/ruby/injections.scm
+++ b/queries/ruby/injections.scm
@@ -1 +1,7 @@
(comment) @comment
+
+(heredoc_body
+ (heredoc_content) @content
+ (heredoc_end) @language
+ (#set! "language" @language)
+ (#downcase! "language"))