aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authoralois312022-11-23 03:49:02 +0000
committerGitHub2022-11-23 03:49:02 +0000
commit26ec1cf39a3c5f548f199918b0a84d614a5c6be7 (patch)
tree8b0c5cd2f238ae81f66d6ae19dc67b916a17ba3c /runtime
parent42e37a571e75aaf4feb1717dfebe8cf215e535dd (diff)
Add QML language support (#4842)
Fixes https://github.com/helix-editor/helix/issues/2771
Diffstat (limited to 'runtime')
-rw-r--r--runtime/queries/qml/highlights.scm90
-rw-r--r--runtime/queries/qml/indents.scm6
-rw-r--r--runtime/queries/qml/injections.scm16
3 files changed, 112 insertions, 0 deletions
diff --git a/runtime/queries/qml/highlights.scm b/runtime/queries/qml/highlights.scm
new file mode 100644
index 00000000..11178fcd
--- /dev/null
+++ b/runtime/queries/qml/highlights.scm
@@ -0,0 +1,90 @@
+(comment) @comment
+
+(ui_import
+ source: _ @namespace
+ version: _? @constant
+ alias: _? @namespace)
+
+(ui_pragma
+ name: (identifier) @attribute
+ value: (identifier)? @constant)
+
+(ui_annotation
+ "@" @punctuation
+ type_name: _ @type)
+
+;;; Declarations
+
+(enum_declaration
+ name: (identifier) @type)
+
+(enum_assignment
+ name: (identifier) @constant
+ value: _ @constant)
+
+(enum_body
+ name: (identifier) @constant)
+
+(ui_inline_component
+ name: (identifier) @type)
+
+(ui_object_definition
+ type_name: _ @type)
+
+(ui_object_definition_binding
+ type_name: _ @type
+ name: _ @variable.other.member)
+
+(ui_property
+ type: _ @type
+ name: (identifier) @variable.other.member)
+
+(ui_signal
+ name: (identifier) @function)
+
+(ui_signal_parameter
+ name: (identifier) @variable.parameter
+ type: _ @type)
+
+(ui_signal_parameter
+ type: _ @type
+ name: (identifier) @variable.parameter);;; Properties and bindings
+
+;;; Bindings
+
+(ui_binding
+ name: _ @variable.other.member)
+
+;;; Other
+
+[
+ "("
+ ")"
+ "{"
+ "}"
+] @punctuation.bracket
+
+(ui_list_property_type [
+ "<"
+ ">"
+] @punctuation.bracket)
+
+[
+ ","
+ "."
+ ":"
+] @punctuation.delimiter
+
+[
+ "as"
+ "component"
+ "default"
+ "enum"
+ "import"
+ "on"
+ "pragma"
+ "property"
+ "readonly"
+ "required"
+ "signal"
+] @keyword
diff --git a/runtime/queries/qml/indents.scm b/runtime/queries/qml/indents.scm
new file mode 100644
index 00000000..07492283
--- /dev/null
+++ b/runtime/queries/qml/indents.scm
@@ -0,0 +1,6 @@
+[
+ (enum_body)
+ (ui_object_initializer)
+] @indent
+
+"}" @outdent
diff --git a/runtime/queries/qml/injections.scm b/runtime/queries/qml/injections.scm
new file mode 100644
index 00000000..1ce987d3
--- /dev/null
+++ b/runtime/queries/qml/injections.scm
@@ -0,0 +1,16 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))
+
+([
+ (empty_statement)
+ (expression_statement)
+ (function_declaration)
+ (generator_function_declaration)
+ (statement_block)
+ (switch_statement)
+ (try_statement)
+ (variable_declaration)
+ (with_statement)
+ ] @injection.content
+ (#set! injection.include-children)
+ (#set! injection.language "javascript"))