aboutsummaryrefslogtreecommitdiff
path: root/runtime/queries
diff options
context:
space:
mode:
authorRaphael Megzari2021-09-17 02:04:55 +0000
committerGitHub2021-09-17 02:04:55 +0000
commitb2195e08b54d9e01411e3b67c87c93711415884c (patch)
tree8119287eb5ee3aacec3c726342bc41c05ac57407 /runtime/queries
parent64e8f0017c9d8d8fd02b3e86378522974f6437b3 (diff)
languages: add svelte support (#733)
* languages: add svelte support * languages: add svelte injections
Diffstat (limited to 'runtime/queries')
-rw-r--r--runtime/queries/svelte/highlights.scm68
-rw-r--r--runtime/queries/svelte/indents.toml18
-rw-r--r--runtime/queries/svelte/injections.scm30
3 files changed, 116 insertions, 0 deletions
diff --git a/runtime/queries/svelte/highlights.scm b/runtime/queries/svelte/highlights.scm
new file mode 100644
index 00000000..4c6f5f35
--- /dev/null
+++ b/runtime/queries/svelte/highlights.scm
@@ -0,0 +1,68 @@
+; Special identifiers
+;--------------------
+
+; TODO:
+((element (start_tag (tag_name) @_tag) (text) @markup.heading)
+ (#match? @_tag "^(h[0-9]|title)$"))
+
+((element (start_tag (tag_name) @_tag) (text) @markup.bold)
+ (#match? @_tag "^(strong|b)$"))
+
+((element (start_tag (tag_name) @_tag) (text) @markup.italic)
+ (#match? @_tag "^(em|i)$"))
+
+; ((element (start_tag (tag_name) @_tag) (text) @markup.strike)
+; (#match? @_tag "^(s|del)$"))
+
+((element (start_tag (tag_name) @_tag) (text) @markup.underline)
+ (#eq? @_tag "u"))
+
+((element (start_tag (tag_name) @_tag) (text) @markup.inline)
+ (#match? @_tag "^(code|kbd)$"))
+
+((element (start_tag (tag_name) @_tag) (text) @markup.underline.link)
+ (#eq? @_tag "a"))
+
+((attribute
+ (attribute_name) @_attr
+ (quoted_attribute_value (attribute_value) @markup.undeline.link))
+ (#match? @_attr "^(href|src)$"))
+
+(tag_name) @tag
+(attribute_name) @property
+(erroneous_end_tag_name) @error
+(comment) @comment
+
+[
+ (attribute_value)
+ (quoted_attribute_value)
+] @string
+
+[
+ (text)
+ (raw_text_expr)
+] @none
+
+[
+ (special_block_keyword)
+ (then)
+ (as)
+] @keyword
+
+[
+ "{"
+ "}"
+] @punctuation.brackets
+
+"=" @operator
+
+[
+ "<"
+ ">"
+ "</"
+ "/>"
+ "#"
+ ":"
+ "/"
+ "@"
+] @punctuation.definition.tag
diff --git a/runtime/queries/svelte/indents.toml b/runtime/queries/svelte/indents.toml
new file mode 100644
index 00000000..693db8e3
--- /dev/null
+++ b/runtime/queries/svelte/indents.toml
@@ -0,0 +1,18 @@
+indent = [
+ "element"
+ "if_statement"
+ "each_statement"
+ "await_statement"
+]
+
+outdent = [
+ "end_tag"
+ "else_statement"
+ "if_end_expr"
+ "each_end_expr"
+ "await_end_expr"
+ ">"
+ "/>"
+]
+
+ignore = "comment"
diff --git a/runtime/queries/svelte/injections.scm b/runtime/queries/svelte/injections.scm
new file mode 100644
index 00000000..266f4701
--- /dev/null
+++ b/runtime/queries/svelte/injections.scm
@@ -0,0 +1,30 @@
+; injections.scm
+; --------------
+((style_element
+ (raw_text) @injection.content)
+ (#set! injection.language "css"))
+
+((attribute
+ (attribute_name) @_attr
+ (quoted_attribute_value (attribute_value) @css))
+ (#eq? @_attr "style"))
+
+((script_element
+ (raw_text) @injection.content)
+ (#set! injection.language "javascript"))
+
+((raw_text_expr) @injection.content
+ (#set! injection.language "javascript"))
+
+(
+ (script_element
+ (start_tag
+ (attribute
+ (quoted_attribute_value (attribute_value) @_lang)))
+ (raw_text) @injection.content)
+ (#match? @_lang "(ts|typescript)")
+ (#set! injection.language "typescript")
+)
+
+(comment) @comment
+