aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/qmljs
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-06-12 09:54:30 -0600
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:40 +0200
commit692b051b09935653befdb8f7ba8afdb640adf17b (patch)
tree167162b6b129ae04f68c5735078521a72917c742 /runtime/queries/qmljs
parentfeat(c-family): inherit injections (diff)
downloadnvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'runtime/queries/qmljs')
-rw-r--r--runtime/queries/qmljs/folds.scm8
-rw-r--r--runtime/queries/qmljs/highlights.scm116
-rw-r--r--runtime/queries/qmljs/injections.scm1
3 files changed, 125 insertions, 0 deletions
diff --git a/runtime/queries/qmljs/folds.scm b/runtime/queries/qmljs/folds.scm
new file mode 100644
index 000000000..9b917993e
--- /dev/null
+++ b/runtime/queries/qmljs/folds.scm
@@ -0,0 +1,8 @@
+[
+ (ui_object_definition)
+ (function_declaration)
+ (statement_block)
+ (if_statement)
+ (ui_binding)
+ (comment)
+] @fold
diff --git a/runtime/queries/qmljs/highlights.scm b/runtime/queries/qmljs/highlights.scm
new file mode 100644
index 000000000..27f332028
--- /dev/null
+++ b/runtime/queries/qmljs/highlights.scm
@@ -0,0 +1,116 @@
+; inherits: ecma
+
+"pragma" @keyword.import
+
+; Annotations
+(ui_annotation
+ "@" @operator
+ type_name: [
+ (identifier) @attribute
+ (nested_identifier
+ (identifier) @attribute)
+ ])
+
+; type
+(ui_property
+ type: (type_identifier) @type)
+
+; Properties
+(ui_object_definition_binding
+ name: [
+ (identifier) @property
+ (nested_identifier
+ (identifier) @property)
+ ])
+
+(ui_binding
+ name: [
+ (identifier) @property
+ (nested_identifier
+ (identifier) @property)
+ ])
+
+; locals query appears not working unless id: <ref> isn't a parameter.
+(ui_binding
+ name: (identifier) @property
+ (#eq? @property "id")
+ value: (expression_statement
+ (identifier) @variable))
+
+(ui_property
+ name: (identifier) @property)
+
+(ui_required
+ name: (identifier) @property)
+
+(ui_list_property_type
+ [
+ "<"
+ ">"
+ ] @punctuation.bracket)
+
+; Signals
+(ui_signal
+ name: (identifier) @function)
+
+(ui_signal_parameter
+ (identifier) @variable)
+
+; ui_object_definition
+(ui_object_definition
+ type_name: (identifier) @type)
+
+(ui_object_definition
+ type_name: (nested_identifier) @type)
+
+; namespace
+(nested_identifier
+ (nested_identifier
+ (identifier) @module))
+
+; Tokens
+;-------
+[
+ "abstract"
+ "private"
+ "protected"
+ "public"
+ "default"
+ "readonly"
+ "required"
+] @keyword.modifier
+
+; from typescript
+(type_identifier) @type
+
+(predefined_type) @type.builtin
+
+(type_arguments
+ "<" @punctuation.bracket
+ ">" @punctuation.bracket)
+
+; Variables
+(required_parameter
+ (identifier) @variable)
+
+(optional_parameter
+ (identifier) @variable)
+
+; Keywords
+[
+ "on"
+ "property"
+ "signal"
+ "declare"
+ "implements"
+ "override"
+] @keyword
+
+[
+ "interface"
+ "type"
+ "enum"
+ "namespace"
+] @keyword.type
+
+"keyof" @keyword.operator
diff --git a/runtime/queries/qmljs/injections.scm b/runtime/queries/qmljs/injections.scm
new file mode 100644
index 000000000..04328f099
--- /dev/null
+++ b/runtime/queries/qmljs/injections.scm
@@ -0,0 +1 @@
+; inherits: ecma