mirror of https://github.com/lapce/lapce.git
add new highlights for elm, jsx and fix tsx highlights
Signed-off-by: Suraj Ghimire <suraj@ghishadow.com>
This commit is contained in:
parent
7867f5050e
commit
3da104b731
|
@ -0,0 +1,88 @@
|
|||
; source: https://github.com/helix-editor/helix/blob/master/runtime/queries/elm/highlights.scm
|
||||
; licence: https://github.com/helix-editor/helix/blob/master/LICENSE
|
||||
; spdx: MPL-2.0
|
||||
|
||||
; Keywords
|
||||
[
|
||||
"if"
|
||||
"then"
|
||||
"else"
|
||||
"let"
|
||||
"in"
|
||||
] @keyword.control
|
||||
(case) @keyword.control
|
||||
(of) @keyword.control
|
||||
|
||||
(colon) @keyword.operator
|
||||
(backslash) @keyword
|
||||
(as) @keyword
|
||||
(port) @keyword
|
||||
(exposing) @keyword
|
||||
(alias) @keyword
|
||||
(infix) @keyword
|
||||
|
||||
(arrow) @keyword.operator
|
||||
(dot) @keyword.operator
|
||||
|
||||
(port) @keyword
|
||||
|
||||
(type_annotation(lower_case_identifier) @function)
|
||||
(port_annotation(lower_case_identifier) @function)
|
||||
(file (value_declaration (function_declaration_left(lower_case_identifier) @function)))
|
||||
|
||||
(field name: (lower_case_identifier) @attribute)
|
||||
(field_access_expr(lower_case_identifier) @attribute)
|
||||
|
||||
(operator_identifier) @keyword.operator
|
||||
(eq) @keyword.operator.assignment
|
||||
|
||||
[
|
||||
"("
|
||||
")"
|
||||
"["
|
||||
"]"
|
||||
"{"
|
||||
"}"
|
||||
] @punctuation.bracket
|
||||
|
||||
"|" @keyword
|
||||
"," @punctuation.delimiter
|
||||
|
||||
[
|
||||
"|>"
|
||||
] @keyword
|
||||
|
||||
|
||||
(import) @keyword.control.import
|
||||
(module) @keyword.other
|
||||
|
||||
(number_constant_expr) @constant.numeric
|
||||
|
||||
(type) @type
|
||||
|
||||
(type_declaration(upper_case_identifier) @type)
|
||||
(type_ref) @type
|
||||
(type_alias_declaration name: (upper_case_identifier) @type)
|
||||
|
||||
(union_pattern constructor: (upper_case_qid (upper_case_identifier) @label (dot) (upper_case_identifier) @variable.other.member))
|
||||
(union_pattern constructor: (upper_case_qid (upper_case_identifier) @variable.other.member))
|
||||
|
||||
(union_variant(upper_case_identifier) @variable.other.member)
|
||||
(value_expr name: (value_qid (upper_case_identifier) @label))
|
||||
(value_expr (upper_case_qid (upper_case_identifier) @label (dot) (upper_case_identifier) @variable.other.member))
|
||||
(value_expr(upper_case_qid(upper_case_identifier)) @variable.other.member)
|
||||
|
||||
; comments
|
||||
(line_comment) @comment
|
||||
(block_comment) @comment
|
||||
|
||||
; strings
|
||||
(string_escape) @constant.character.escape
|
||||
|
||||
(open_quote) @string
|
||||
(close_quote) @string
|
||||
(regular_string_part) @string
|
||||
|
||||
(open_char) @constant.character
|
||||
(close_char) @constant.character
|
||||
|
|
@ -0,0 +1,250 @@
|
|||
; source: https://github.com/helix-editor/helix/blob/master/runtime/queries/jsx/highlights.scm
|
||||
; licence: https://github.com/helix-editor/helix/blob/master/LICENSE
|
||||
; spdx: MPL-2.0
|
||||
|
||||
; Special identifiers
|
||||
;--------------------
|
||||
|
||||
([
|
||||
(identifier)
|
||||
(shorthand_property_identifier)
|
||||
(shorthand_property_identifier_pattern)
|
||||
] @constant
|
||||
(#match? @constant "^[A-Z_][A-Z\\d_]+$"))
|
||||
|
||||
|
||||
((identifier) @constructor
|
||||
(#match? @constructor "^[A-Z]"))
|
||||
|
||||
((identifier) @variable.builtin
|
||||
(#match? @variable.builtin "^(arguments|module|console|window|document)$")
|
||||
(#is-not? local))
|
||||
|
||||
((identifier) @function.builtin
|
||||
(#eq? @function.builtin "require")
|
||||
(#is-not? local))
|
||||
|
||||
; Function and method definitions
|
||||
;--------------------------------
|
||||
|
||||
(function
|
||||
name: (identifier) @function)
|
||||
(function_declaration
|
||||
name: (identifier) @function)
|
||||
(method_definition
|
||||
name: (property_identifier) @function.method)
|
||||
|
||||
(pair
|
||||
key: (property_identifier) @function.method
|
||||
value: [(function) (arrow_function)])
|
||||
|
||||
(assignment_expression
|
||||
left: (member_expression
|
||||
property: (property_identifier) @function.method)
|
||||
right: [(function) (arrow_function)])
|
||||
|
||||
(variable_declarator
|
||||
name: (identifier) @function
|
||||
value: [(function) (arrow_function)])
|
||||
|
||||
(assignment_expression
|
||||
left: (identifier) @function
|
||||
right: [(function) (arrow_function)])
|
||||
|
||||
|
||||
; Function and method calls
|
||||
;--------------------------
|
||||
|
||||
(call_expression
|
||||
function: (identifier) @function)
|
||||
|
||||
(call_expression
|
||||
function: (member_expression
|
||||
property: (property_identifier) @function.method))
|
||||
|
||||
; Variables
|
||||
;----------
|
||||
|
||||
(identifier) @variable
|
||||
|
||||
; Properties
|
||||
;-----------
|
||||
|
||||
(property_identifier) @variable.other.member
|
||||
(shorthand_property_identifier) @variable.other.member
|
||||
(shorthand_property_identifier_pattern) @variable.other.member
|
||||
|
||||
; Literals
|
||||
;---------
|
||||
|
||||
(this) @variable.builtin
|
||||
(super) @variable.builtin
|
||||
|
||||
[
|
||||
(true)
|
||||
(false)
|
||||
(null)
|
||||
(undefined)
|
||||
] @constant.builtin
|
||||
|
||||
(comment) @comment
|
||||
|
||||
[
|
||||
(string)
|
||||
(template_string)
|
||||
] @string
|
||||
|
||||
(regex) @string.regexp
|
||||
(number) @constant.numeric.integer
|
||||
|
||||
; Tokens
|
||||
;-------
|
||||
|
||||
(template_substitution
|
||||
"${" @punctuation.special
|
||||
"}" @punctuation.special) @embedded
|
||||
|
||||
[
|
||||
";"
|
||||
"?."
|
||||
"."
|
||||
","
|
||||
] @punctuation.delimiter
|
||||
|
||||
[
|
||||
"-"
|
||||
"--"
|
||||
"-="
|
||||
"+"
|
||||
"++"
|
||||
"+="
|
||||
"*"
|
||||
"*="
|
||||
"**"
|
||||
"**="
|
||||
"/"
|
||||
"/="
|
||||
"%"
|
||||
"%="
|
||||
"<"
|
||||
"<="
|
||||
"<<"
|
||||
"<<="
|
||||
"="
|
||||
"=="
|
||||
"==="
|
||||
"!"
|
||||
"!="
|
||||
"!=="
|
||||
"=>"
|
||||
">"
|
||||
">="
|
||||
">>"
|
||||
">>="
|
||||
">>>"
|
||||
">>>="
|
||||
"~"
|
||||
"^"
|
||||
"&"
|
||||
"|"
|
||||
"^="
|
||||
"&="
|
||||
"|="
|
||||
"&&"
|
||||
"||"
|
||||
"??"
|
||||
"&&="
|
||||
"||="
|
||||
"??="
|
||||
"..."
|
||||
] @operator
|
||||
|
||||
(ternary_expression ["?" ":"] @operator)
|
||||
|
||||
[
|
||||
"("
|
||||
")"
|
||||
"["
|
||||
"]"
|
||||
"{"
|
||||
"}"
|
||||
] @punctuation.bracket
|
||||
|
||||
[
|
||||
"as"
|
||||
"async"
|
||||
"debugger"
|
||||
"delete"
|
||||
"extends"
|
||||
"from"
|
||||
"function"
|
||||
"get"
|
||||
"in"
|
||||
"instanceof"
|
||||
"new"
|
||||
"of"
|
||||
"set"
|
||||
"static"
|
||||
"target"
|
||||
"try"
|
||||
"typeof"
|
||||
"void"
|
||||
"with"
|
||||
] @keyword
|
||||
|
||||
[
|
||||
"class"
|
||||
"let"
|
||||
"const"
|
||||
"var"
|
||||
] @keyword.storage.type
|
||||
|
||||
[
|
||||
"switch"
|
||||
"case"
|
||||
"default"
|
||||
"if"
|
||||
"else"
|
||||
"yield"
|
||||
"throw"
|
||||
"finally"
|
||||
"return"
|
||||
"catch"
|
||||
"continue"
|
||||
"while"
|
||||
"break"
|
||||
"for"
|
||||
"do"
|
||||
"await"
|
||||
] @keyword.control
|
||||
|
||||
[
|
||||
"import"
|
||||
"export"
|
||||
] @keyword.control.import
|
||||
|
||||
; Highlight component names differently
|
||||
(jsx_opening_element ((identifier) @constructor
|
||||
(#match? @constructor "^[A-Z]")))
|
||||
|
||||
; Handle the dot operator effectively - <My.Component>
|
||||
(jsx_opening_element ((nested_identifier (identifier) @tag (identifier) @constructor)))
|
||||
|
||||
(jsx_closing_element ((identifier) @constructor
|
||||
(#match? @constructor "^[A-Z]")))
|
||||
|
||||
; Handle the dot operator effectively - </My.Component>
|
||||
(jsx_closing_element ((nested_identifier (identifier) @tag (identifier) @constructor)))
|
||||
|
||||
(jsx_self_closing_element ((identifier) @constructor
|
||||
(#match? @constructor "^[A-Z]")))
|
||||
|
||||
; Handle the dot operator effectively - <My.Component />
|
||||
(jsx_self_closing_element ((nested_identifier (identifier) @tag (identifier) @constructor)))
|
||||
|
||||
; TODO: also tag @punctuation.delimiter?
|
||||
|
||||
(jsx_opening_element (identifier) @tag)
|
||||
(jsx_closing_element (identifier) @tag)
|
||||
(jsx_self_closing_element (identifier) @tag)
|
||||
(jsx_attribute (property_identifier) @variable.other.member)
|
|
@ -249,7 +249,7 @@ pub enum LapceLanguage {
|
|||
SyntaxProperties {
|
||||
id: LapceLanguage::Jsx,
|
||||
language: tree_sitter_javascript::language,
|
||||
highlight: tree_sitter_javascript::JSX_HIGHLIGHT_QUERY,
|
||||
highlight: include_str!("../queries/jsx/highlights.scm"),
|
||||
// TODO: Does jsx use the javascript injection query too?
|
||||
injection: Some(tree_sitter_javascript::INJECTION_QUERY),
|
||||
comment: "//",
|
||||
|
@ -274,7 +274,7 @@ pub enum LapceLanguage {
|
|||
SyntaxProperties {
|
||||
id: LapceLanguage::Tsx,
|
||||
language: tree_sitter_typescript::language_tsx,
|
||||
highlight: tree_sitter_typescript::HIGHLIGHT_QUERY,
|
||||
highlight: include_str!("../queries/typescript/highlights.scm"),
|
||||
injection: None,
|
||||
comment: "//",
|
||||
indent: " ",
|
||||
|
@ -442,7 +442,7 @@ pub enum LapceLanguage {
|
|||
SyntaxProperties {
|
||||
id: LapceLanguage::Elm,
|
||||
language: tree_sitter_elm::language,
|
||||
highlight: tree_sitter_elm::HIGHLIGHTS_QUERY,
|
||||
highlight: include_str!("../queries/elm/highlights.scm"),
|
||||
injection: Some(tree_sitter_elm::INJECTIONS_QUERY),
|
||||
comment: "#",
|
||||
indent: " ",
|
||||
|
|
Loading…
Reference in New Issue