highlight(scala): update the Scala highlight queries (#5546)

There have been a lot of changes in tree-sitter/tree-sitter-scala,
including partial support for Scala 3 syntax and breaking changes in
some of the nodes.

This bumps up the grammar to the latest, and adjusts the queries.

Co-authored-by: Anton Sviridov <keynmol@gmail.com>
Co-authored-by: Chris Kipp <ckipp@pm.me>
pull/5545/head^2
eugene yokota 2 years ago committed by GitHub
parent d3e0f18c89
commit 6f6334f3c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1064,7 +1064,7 @@ language-server = { command = "metals" }
[[grammar]] [[grammar]]
name = "scala" name = "scala"
source = { git = "https://github.com/tree-sitter/tree-sitter-scala", rev = "140c96cf398693189d4e50f76d19ddfcd8a018f8" } source = { git = "https://github.com/tree-sitter/tree-sitter-scala", rev = "db1c8c23d7996476a791db85a0d292084c19c232" }
[[language]] [[language]]
name = "dockerfile" name = "dockerfile"

@ -33,6 +33,26 @@
(type_definition (type_definition
name: (type_identifier) @type) name: (type_identifier) @type)
(full_enum_case
name: (identifier) @type)
(simple_enum_case
name: (identifier) @type)
;; val/var definitions/declarations
(val_definition
pattern: (identifier) @variable)
(var_definition
pattern: (identifier) @variable)
(val_declaration
name: (identifier) @variable)
(var_declaration
name: (identifier) @variable)
; method definition ; method definition
(class_definition (class_definition
@ -48,7 +68,7 @@
(function_definition (function_definition
name: (identifier) @function.method))) name: (identifier) @function.method)))
; imports ; imports/exports
(import_declaration (import_declaration
path: (identifier) @namespace) path: (identifier) @namespace)
@ -58,7 +78,15 @@
path: (identifier) @type) (#match? @type "^[A-Z]")) path: (identifier) @type) (#match? @type "^[A-Z]"))
((stable_identifier (identifier) @type) (#match? @type "^[A-Z]")) ((stable_identifier (identifier) @type) (#match? @type "^[A-Z]"))
((import_selectors (identifier) @type) (#match? @type "^[A-Z]")) (export_declaration
path: (identifier) @namespace)
((stable_identifier (identifier) @namespace))
((export_declaration
path: (identifier) @type) (#match? @type "^[A-Z]"))
((stable_identifier (identifier) @type) (#match? @type "^[A-Z]"))
((namespace_selectors (identifier) @type) (#match? @type "^[A-Z]"))
; method invocation ; method invocation
@ -66,10 +94,17 @@
(call_expression (call_expression
function: (identifier) @function) function: (identifier) @function)
(call_expression
function: (operator_identifier) @function)
(call_expression (call_expression
function: (field_expression function: (field_expression
field: (identifier) @function.method)) field: (identifier) @function.method))
(call_expression
function: (field_expression
field: (operator_identifier) @function.method))
((call_expression ((call_expression
function: (identifier) @variable.other.member) function: (identifier) @variable.other.member)
(#match? @variable.other.member "^[A-Z]")) (#match? @variable.other.member "^[A-Z]"))
@ -87,9 +122,15 @@
(function_definition (function_definition
name: (identifier) @function) name: (identifier) @function)
(function_definition
name: (operator_identifier) @function)
(parameter (parameter
name: (identifier) @variable.parameter) name: (identifier) @variable.parameter)
(binding
name: (identifier) @variable.parameter)
; expressions ; expressions
@ -118,29 +159,50 @@
(interpolation "$" @punctuation.special) (interpolation "$" @punctuation.special)
; annotations
(annotation) @attribute
;; keywords ;; keywords
;; storage in TextMate scope lingo means field or type
[ [
(opaque_modifier)
(infix_modifier)
(transparent_modifier)
(open_modifier)
"abstract" "abstract"
"case"
"class"
"extends"
"final" "final"
"finally"
;; `forSome` existential types not implemented yet
"implicit" "implicit"
"lazy" "lazy"
;; `macro` not implemented yet
"object"
"override" "override"
"package"
"private" "private"
"protected" "protected"
"sealed" "sealed"
] @keyword.storage.modifier
[
"class"
"enum"
"extension"
"given"
"object"
"package"
"trait" "trait"
"type" "type"
"val" "val"
"var" "var"
] @keyword.storage.type
[
"as"
"derives"
"end"
"extends"
;; `forSome` existential types not implemented yet
;; `macro` not implemented yet
;; `throws`
"using"
"with" "with"
] @keyword ] @keyword
@ -152,12 +214,15 @@
"new" @keyword.operator "new" @keyword.operator
[ [
"case"
"catch"
"else" "else"
"finally"
"if" "if"
"match" "match"
"try" "then"
"catch"
"throw" "throw"
"try"
] @keyword.control.conditional ] @keyword.control.conditional
[ [
@ -191,6 +256,8 @@
"import" @keyword.control.import "import" @keyword.control.import
"export" @keyword.control.import
"return" @keyword.control.return "return" @keyword.control.return
(comment) @comment (comment) @comment
@ -201,3 +268,5 @@
(case_clause ("case") @keyword.control.conditional)) (case_clause ("case") @keyword.control.conditional))
(identifier) @variable (identifier) @variable
(operator_identifier) @operator

Loading…
Cancel
Save