From add6f9abe2d8b3f76b8bc0116bdd1d5f8a24f9fd Mon Sep 17 00:00:00 2001 From: Chris Kipp Date: Thu, 12 Jan 2023 12:52:44 +0100 Subject: refactor(scala): update the Scala highlight queries There has been a lot of changes recently to the Scala grammar and we've been merging in a handful of things before syncing the actual generated parser. We are currently at a stage where we're going to sync everything, but there are some breaking changes that are included in https://github.com/tree-sitter/tree-sitter-scala/pull/135, so when that commit gets synced here stuff will break. We've taken the queries that existed here and have been building off of them in the actual upstream repo. This will hopefully make the transition smooth and updates the queries to ensure that there is no breakage. It's recommended to wait until that pr is merged, synced here, and then merge this in around the same time. Co-authored-by: eugene yokota Co-authored-by: Anton Sviridov --- lockfile.json | 2 +- queries/scala/highlights.scm | 132 ++++++++++++++++++++++++++++--------------- 2 files changed, 86 insertions(+), 48 deletions(-) diff --git a/lockfile.json b/lockfile.json index 453ab74c1..2f45d39b1 100644 --- a/lockfile.json +++ b/lockfile.json @@ -333,7 +333,7 @@ "revision": "f7fb205c424b0962de59b26b931fe484e1262b35" }, "scala": { - "revision": "fd05f09043051c82fba695aa95cee9c534fbc533" + "revision": "47767fca8f422d7f22819f5dd2511ecaa290e7be" }, "scheme": { "revision": "16bdcf0495865e17ae5b995257458e31e8b7f450" diff --git a/queries/scala/highlights.scm b/queries/scala/highlights.scm index 2ae5b17c4..8cf7f3dbd 100644 --- a/queries/scala/highlights.scm +++ b/queries/scala/highlights.scm @@ -1,55 +1,62 @@ ; CREDITS @stumash (stuart.mashaal@gmail.com) +(class_definition + name: (identifier) @type) + +(enum_definition + name: (identifier) @type) + +(object_definition + name: (identifier) @type) + +(trait_definition + name: (identifier) @type) + +(full_enum_case + name: (identifier) @type) + +(simple_enum_case + name: (identifier) @type) + ;; variables -(identifier) @variable +(class_parameter + name: (identifier) @parameter) -((identifier) @variable.builtin - (#lua-match? @variable.builtin "^this$")) (interpolation) @none -; Assume other uppercase names constants. -; NOTE: In order to distinguish constants we highlight -; all the identifiers that are uppercased. But this solution -; is not suitable for all occurrences e.g. it will highlight -; an uppercased method as a constant if used with no params. -; Introducing highlighting for those specific cases, is probably -; best way to resolve the issue. -((identifier) @constant (#lua-match? @constant "^[A-Z]")) - ;; types +(type_definition + name: (type_identifier) @type.definition) + (type_identifier) @type -(class_definition - name: (identifier) @type) -(object_definition - name: (identifier) @type) +;; val/var definitions/declarations -(trait_definition - name: (identifier) @type) +(val_definition + pattern: (identifier) @variable) -(type_definition - name: (type_identifier) @type.definition) +(var_definition + pattern: (identifier) @variable) + +(val_declaration + name: (identifier) @variable) + +(var_declaration + name: (identifier) @variable) ; method definition -(class_definition - body: (template_body - (function_definition - name: (identifier) @method))) -(object_definition - body: (template_body - (function_definition - name: (identifier) @method))) -(trait_definition - body: (template_body - (function_definition - name: (identifier) @method))) +(function_declaration + name: (identifier) @method) + +(function_definition + name: (identifier) @method) -; imports +; imports/exports (import_declaration path: (identifier) @namespace) @@ -59,7 +66,15 @@ path: (identifier) @type) (#lua-match? @type "^[A-Z]")) ((stable_identifier (identifier) @type) (#lua-match? @type "^[A-Z]")) -((import_selectors (identifier) @type) (#lua-match? @type "^[A-Z]")) +(export_declaration + path: (identifier) @namespace) +((stable_identifier (identifier) @namespace)) + +((export_declaration + path: (identifier) @type) (#lua-match? @type "^[A-Z]")) +((stable_identifier (identifier) @type) (#lua-match? @type "^[A-Z]")) + +((namespace_selectors (identifier) @type) (#lua-match? @type "^[A-Z]")) ; method invocation @@ -67,6 +82,9 @@ (call_expression function: (identifier) @function.call) +(call_expression + function: (operator_identifier) @function.call) + (call_expression function: (field_expression field: (identifier) @method.call)) @@ -78,11 +96,6 @@ (generic_function function: (identifier) @function.call) -( - (identifier) @function.builtin - (#lua-match? @function.builtin "^super$") -) - ; function definitions (function_definition @@ -93,7 +106,6 @@ ; expressions - (field_expression field: (identifier) @property) (field_expression value: (identifier) @type (#lua-match? @type "^[A-Z]")) @@ -110,20 +122,27 @@ (floating_point_literal) @float [ -(symbol_literal) -(string) -(character_literal) -(interpolated_string_expression) + (symbol_literal) + (string) + (character_literal) + (interpolated_string_expression) ] @string (interpolation "$" @punctuation.special) ;; keywords +(opaque_modifier) @type.qualifier +(infix_modifier) @keyword +(transparent_modifier) @type.qualifier +(open_modifier) @type.qualifier + [ "case" "class" + "enum" "extends" + "derives" "finally" ;; `forSome` existential types not implemented yet ;; `macro` not implemented yet @@ -135,18 +154,25 @@ "val" "var" "with" + "given" + "using" + "end" + "implicit" + "extension" + "with" ] @keyword [ "abstract" "final" - "implicit" "lazy" + "sealed" "private" "protected" - "sealed" ] @type.qualifier +(inline_modifier) @storageclass + (null_literal) @constant.builtin (wildcard) @parameter @@ -161,6 +187,7 @@ "else" "if" "match" + "then" ] @conditional [ @@ -192,7 +219,7 @@ "@" ] @operator -"import" @include +["import" "export"] @include [ "try" @@ -208,3 +235,14 @@ (case_block (case_clause ("case") @conditional)) + +(operator_identifier) @operator + +((identifier) @constant (#lua-match? @constant "^[A-Z]")) +((identifier) @variable.builtin + (#lua-match? @variable.builtin "^this$")) + +( + (identifier) @function.builtin + (#lua-match? @function.builtin "^super$") +) -- cgit v1.2.3-70-g09d2