Add QML language support (#4842)

Fixes https://github.com/helix-editor/helix/issues/2771
This commit is contained in:
alois31 2022-11-23 04:49:02 +01:00 committed by GitHub
parent 42e37a571e
commit 26ec1cf39a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 126 additions and 0 deletions

View file

@ -93,6 +93,7 @@
| protobuf | ✓ | | ✓ | |
| purescript | ✓ | | | `purescript-language-server` |
| python | ✓ | ✓ | ✓ | `pylsp` |
| qml | ✓ | | ✓ | `qmlls` |
| r | ✓ | | | `R` |
| racket | | | | `racket` |
| regex | ✓ | | | |

View file

@ -1980,3 +1980,16 @@ language-server = { command = "bicep-langserver" }
[[grammar]]
name = "bicep"
source = { git = "https://github.com/the-mikedavis/tree-sitter-bicep", rev = "d8e097fcfa143854861ef737161163a09cc2916b" }
[[language]]
name = "qml"
scope = "source.qml"
file-types = ["qml"]
roots = []
language-server = { command = "qmlls" }
indent = { tab-width = 4, unit = " " }
grammar = "qmljs"
[[grammar]]
name = "qmljs"
source = { git = "https://github.com/yuja/tree-sitter-qmljs", rev = "0b2b25bcaa7d4925d5f0dda16f6a99c588a437f1" }

View file

@ -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

View file

@ -0,0 +1,6 @@
[
(enum_body)
(ui_object_initializer)
] @indent
"}" @outdent

View file

@ -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"))