ffdc2f1793
It looks likea24fb17b2a
(and855e438f55
) broke the typescript highlights because typescript ; inherits: javascript but it doesn't have those named nodes in its grammar. So instead we can separate out JSX into its own language and copy over everything from javascript and supplement it with the new JSX highlights. Luckily there isn't too much duplication, just the language configuration parts - we can re-use the parser with the languages.toml `grammar` key and most of the queries with `inherits`.
205 lines
2.6 KiB
Scheme
205 lines
2.6 KiB
Scheme
; 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
|
|
|
|
; 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
|
|
|
|
[
|
|
"("
|
|
")"
|
|
"["
|
|
"]"
|
|
"{"
|
|
"}"
|
|
] @punctuation.bracket
|
|
|
|
[
|
|
"as"
|
|
"async"
|
|
"await"
|
|
"break"
|
|
"case"
|
|
"catch"
|
|
"class"
|
|
"const"
|
|
"continue"
|
|
"debugger"
|
|
"default"
|
|
"delete"
|
|
"do"
|
|
"else"
|
|
"export"
|
|
"extends"
|
|
"finally"
|
|
"for"
|
|
"from"
|
|
"function"
|
|
"get"
|
|
"if"
|
|
"import"
|
|
"in"
|
|
"instanceof"
|
|
"let"
|
|
"new"
|
|
"of"
|
|
"return"
|
|
"set"
|
|
"static"
|
|
"switch"
|
|
"target"
|
|
"throw"
|
|
"try"
|
|
"typeof"
|
|
"var"
|
|
"void"
|
|
"while"
|
|
"with"
|
|
"yield"
|
|
] @keyword
|