diff options
| author | Benny Powers <web@bennypowers.com> | 2023-03-17 11:31:11 +0200 |
|---|---|---|
| committer | Amaan Qureshi <amaanq12@gmail.com> | 2023-03-22 02:28:21 -0400 |
| commit | 19d9af8fb0e8465a93d63c6aee23371dad9ce399 (patch) | |
| tree | d5b7e1b7bf313d6177fb5efbf723d5ddbe88e2a0 /lua | |
| parent | test: ecma injections (diff) | |
| download | nvim-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.lua | 23 |
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) |
