aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorBenny Powers <web@bennypowers.com>2023-03-17 11:31:11 +0200
committerAmaan Qureshi <amaanq12@gmail.com>2023-03-22 02:28:21 -0400
commit19d9af8fb0e8465a93d63c6aee23371dad9ce399 (patch)
treed5b7e1b7bf313d6177fb5efbf723d5ddbe88e2a0 /lua
parenttest: ecma injections (diff)
downloadnvim-treesitter-19d9af8fb0e8465a93d63c6aee23371dad9ce399.tar
nvim-treesitter-19d9af8fb0e8465a93d63c6aee23371dad9ce399.tar.gz
nvim-treesitter-19d9af8fb0e8465a93d63c6aee23371dad9ce399.tar.bz2
nvim-treesitter-19d9af8fb0e8465a93d63c6aee23371dad9ce399.tar.lz
nvim-treesitter-19d9af8fb0e8465a93d63c6aee23371dad9ce399.tar.xz
nvim-treesitter-19d9af8fb0e8465a93d63c6aee23371dad9ce399.tar.zst
nvim-treesitter-19d9af8fb0e8465a93d63c6aee23371dad9ce399.zip
feat(html): injections in <script type>
refactor(html): remove superfluous injection query fix(html): associate "module" type with "javascript"
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/query_predicates.lua23
1 files changed, 23 insertions, 0 deletions
diff --git a/lua/nvim-treesitter/query_predicates.lua b/lua/nvim-treesitter/query_predicates.lua
index 2509a677c..8c0a4c947 100644
--- a/lua/nvim-treesitter/query_predicates.lua
+++ b/lua/nvim-treesitter/query_predicates.lua
@@ -119,6 +119,29 @@ query.add_predicate("has-type?", function(match, _pattern, _bufnr, pred)
return vim.tbl_contains(types, node:type())
end)
+local html_script_type_languages = {
+ ["importmap"] = "json",
+ ["module"] = "javascript",
+ ["application/ecmascript"] = "javascript",
+ ["text/ecmascript"] = "javascript",
+}
+
+---@param match string
+---@param metadata table
+---@return boolean|nil
+query.add_directive("set-lang-from-mimetype!", function(match, pattern, bufnr, predicate, metadata)
+ local capture_id = predicate[2]
+ local node = match[capture_id]
+ local type_attr_value = vim.treesitter.get_node_text(node, bufnr)
+ local configured = html_script_type_languages[type_attr_value]
+ if configured then
+ metadata.language = configured
+ else
+ local parts = vim.split(type_attr_value, "/", {})
+ metadata.language = parts[#parts]
+ end
+end)
+
-- Just avoid some annoying warnings for this directive
query.add_directive("make-range!", function() end)