From 4547a3687c21be5dea6750cccf63f76883f412d9 Mon Sep 17 00:00:00 2001 From: Lucario387 Date: Sat, 24 Dec 2022 01:59:30 +0900 Subject: [PATCH] injections(vue): Update injection queries --- queries/vue/injections.scm | 82 +++++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 27 deletions(-) diff --git a/queries/vue/injections.scm b/queries/vue/injections.scm index 36e3286e1..71faa74cf 100644 --- a/queries/vue/injections.scm +++ b/queries/vue/injections.scm @@ -1,52 +1,80 @@ ( (style_element - (start_tag) @_no_lang + (start_tag) @_no_attribute (raw_text) @css) - (#not-contains? @_no_lang "lang=") + (#match? @_no_attribute "<\\s*style\\s*>") ) ( (style_element (start_tag (attribute - (quoted_attribute_value (attribute_value) @_lang))) + (attribute_name) @_no_lang)) (raw_text) @css) - (#eq? @_lang "css") -) - -; if start_tag does not specify `lang="..."` then set it to javascript -( - (script_element - (start_tag) @_no_lang - (raw_text) @javascript) - (#not-contains? @_no_lang "lang=") -) - -( - (script_element - (start_tag - (attribute - (quoted_attribute_value (attribute_value) @_lang))) - (raw_text) @javascript) - (#eq? @_lang "js") -) + (#not-eq? @_no_lang "lang") +) ( (style_element (start_tag (attribute - (quoted_attribute_value (attribute_value) @_lang))) - (raw_text) @scss) - (#any-of? @_lang "scss" "postcss" "less") + (attribute_name) @_lang + (quoted_attribute_value (attribute_value) @_css))) + (raw_text) @css) + (#eq? @_lang "lang") + (#eq? @_css "css") +) + +; If script tag does not have any extra attributes, set it to javascript +( + (script_element + (start_tag) @_no_attribute + (raw_text) @javascript) + (#match? @_no_attribute "<\\s*script\\s*>") +) + +; if start_tag does not specify `lang="..."` then set it to javascript +( + (script_element + (start_tag + (attribute + (attribute_name) @_no_lang)) + (raw_text) @javascript) + (#not-eq? @_no_lang "lang") ) ( (script_element (start_tag (attribute - (quoted_attribute_value (attribute_value) @_lang))) + (attribute_name) @_lang + (quoted_attribute_value (attribute_value) @_js))) + (raw_text) @javascript) + (#eq? @_lang "lang") + (#eq? @_js "js") +) + +; TODO: When nvim-treesitter have postcss and less parser, use @language and @content instead +( + (style_element + (start_tag + (attribute + (attribute_name) @_lang + (quoted_attribute_value (attribute_value) @_scss))) + (raw_text) @scss) + (#eq? @_lang "lang") + (#any-of? @_scss "scss" "less" "postcss") +) + +( + (script_element + (start_tag + (attribute + (attribute_name) @_lang + (quoted_attribute_value (attribute_value) @_ts))) (raw_text) @typescript) - (#eq? @_lang "ts") + (#eq? @_lang "lang") + (#eq? @_ts "ts") ) ((interpolation