forked from helix-editor/helix
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add scala syntax highlights (helix-editor#1278)
* add partial scala syntax highlights * ran cargo xtask docgen * updated tree-sitter-scala, fixed highlights * fix comments * move identifier to the end of the highlights * add indents
- Loading branch information
Showing
6 changed files
with
238 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Submodule tree-sitter-scala
updated
11 files
+39 −11 | corpus/definitions.txt | |
+316 −17 | corpus/expressions.txt | |
+47 −4 | corpus/literals.txt | |
+17 −5 | corpus/patterns.txt | |
+220 −68 | grammar.js | |
+1 −1 | package.json | |
+1,114 −305 | src/grammar.json | |
+589 −74 | src/node-types.json | |
+134,026 −51,149 | src/parser.c | |
+38 −1 | src/scanner.c | |
+2 −2 | src/tree_sitter/parser.h |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,203 @@ | ||
; CREDITS @stumash (stuart.mashaal@gmail.com) | ||
|
||
;; variables | ||
|
||
|
||
((identifier) @variable.builtin | ||
(#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 (#match? @constant "^[A-Z]")) | ||
|
||
;; types | ||
|
||
(type_identifier) @type | ||
|
||
(class_definition | ||
name: (identifier) @type) | ||
|
||
(object_definition | ||
name: (identifier) @type) | ||
|
||
(trait_definition | ||
name: (identifier) @type) | ||
|
||
(type_definition | ||
name: (type_identifier) @type) | ||
|
||
; method definition | ||
|
||
(class_definition | ||
body: (template_body | ||
(function_definition | ||
name: (identifier) @function.method))) | ||
(object_definition | ||
body: (template_body | ||
(function_definition | ||
name: (identifier) @function.method))) | ||
(trait_definition | ||
body: (template_body | ||
(function_definition | ||
name: (identifier) @function.method))) | ||
|
||
; imports | ||
|
||
(import_declaration | ||
path: (identifier) @namespace) | ||
((stable_identifier (identifier) @namespace)) | ||
|
||
((import_declaration | ||
path: (identifier) @type) (#match? @type "^[A-Z]")) | ||
((stable_identifier (identifier) @type) (#match? @type "^[A-Z]")) | ||
|
||
((import_selectors (identifier) @type) (#match? @type "^[A-Z]")) | ||
|
||
; method invocation | ||
|
||
|
||
(call_expression | ||
function: (identifier) @function) | ||
|
||
(call_expression | ||
function: (field_expression | ||
field: (identifier) @function.method)) | ||
|
||
((call_expression | ||
function: (identifier) @variable.other.member) | ||
(#match? @variable.other.member "^[A-Z]")) | ||
|
||
(generic_function | ||
function: (identifier) @function) | ||
|
||
( | ||
(identifier) @function.builtin | ||
(#match? @function.builtin "^super$") | ||
) | ||
|
||
; function definitions | ||
|
||
(function_definition | ||
name: (identifier) @function) | ||
|
||
(parameter | ||
name: (identifier) @variable.parameter) | ||
|
||
; expressions | ||
|
||
|
||
(field_expression field: (identifier) @variable.other.member) | ||
(field_expression value: (identifier) @type | ||
(#match? @type "^[A-Z]")) | ||
|
||
(infix_expression operator: (identifier) @operator) | ||
(infix_expression operator: (operator_identifier) @operator) | ||
(infix_type operator: (operator_identifier) @operator) | ||
(infix_type operator: (operator_identifier) @operator) | ||
|
||
; literals | ||
(boolean_literal) @constant.builtin.boolean | ||
(integer_literal) @constant.numeric.integer | ||
(floating_point_literal) @constant.numeric.float | ||
|
||
|
||
(symbol_literal) @string.special.symbol | ||
|
||
[ | ||
(string) | ||
(character_literal) | ||
(interpolated_string_expression) | ||
] @string | ||
|
||
(interpolation "$" @punctuation.special) | ||
|
||
;; keywords | ||
|
||
[ | ||
"abstract" | ||
"case" | ||
"class" | ||
"extends" | ||
"final" | ||
"finally" | ||
;; `forSome` existential types not implemented yet | ||
"implicit" | ||
"lazy" | ||
;; `macro` not implemented yet | ||
"object" | ||
"override" | ||
"package" | ||
"private" | ||
"protected" | ||
"sealed" | ||
"trait" | ||
"type" | ||
"val" | ||
"var" | ||
"with" | ||
] @keyword | ||
|
||
(null_literal) @constant.builtin | ||
(wildcard) @keyword | ||
|
||
;; special keywords | ||
|
||
"new" @keyword.operator | ||
|
||
[ | ||
"else" | ||
"if" | ||
"match" | ||
"try" | ||
"catch" | ||
"throw" | ||
] @keyword.control.conditional | ||
|
||
[ | ||
"(" | ||
")" | ||
"[" | ||
"]" | ||
"{" | ||
"}" | ||
] @punctuation.bracket | ||
|
||
[ | ||
"." | ||
"," | ||
] @punctuation.delimiter | ||
|
||
[ | ||
"do" | ||
"for" | ||
"while" | ||
"yield" | ||
] @keyword.control.repeat | ||
|
||
"def" @keyword.function | ||
|
||
[ | ||
"=>" | ||
"<-" | ||
"@" | ||
] @keyword.operator | ||
|
||
"import" @keyword.control.import | ||
|
||
"return" @keyword.control.return | ||
|
||
(comment) @comment | ||
|
||
;; `case` is a conditional keyword in case_block | ||
|
||
(case_block | ||
(case_clause ("case") @keyword.control.conditional)) | ||
|
||
(identifier) @variable |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
|
||
indent = [ | ||
"block", | ||
"arguments", | ||
"parameter", | ||
"class_definition", | ||
"trait_definition", | ||
"object_definition", | ||
"function_definition", | ||
"val_definition", | ||
"import_declaration", | ||
"while_expression", | ||
"do_while_expression", | ||
"for_expression", | ||
"try_expression", | ||
"match_expression" | ||
] | ||
|
||
outdent = [ | ||
"}", | ||
"]", | ||
")" | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
(comment) @comment |