add keywords to scala highlights (#1662)

* add keywords to scala highlights

* special capture for special keywords

* add while to 'repeat' capture

* pr cleanup, exmaples in CONTRIBUTING.md

* add backquotes for consistency in docs

* group @repeat keywords, fix null

* comment-out 'macro' and 'forSome'

* fix 'this' and 'super' keyword

* remove accidental files 🤦

* update revision

* fix "super" and "this"

* godammit these .metals files are killing me

* why did I commit this???

Co-authored-by: Stuart Mashaal <smashaal@hopper.com>
This commit is contained in:
Stuart Mashaal
2021-08-25 19:38:45 -04:00
committed by GitHub
parent d8595fb923
commit 4f2265632b
2 changed files with 100 additions and 4 deletions

View File

@@ -131,15 +131,15 @@ effect on highlighting. We will work on improving highlighting in the near futur
#### Keywords
```
@conditional
@repeat
@conditional (e.g. `if`, `else`)
@repeat (e.g. `for`, `while`)
@label for C/Lua-like labels
@keyword
@keyword.function
@keyword.function (keyword to define a function, e.g. `func` in Go, `def` in Python)
@keyword.operator (for operators that are English words, e.g. `and`, `or`)
@keyword.return
@operator (for symbolic operators, e.g. `+`, `*`)
@exception
@exception (e.g. `throw`, `catch`)
@include keywords for including modules (e.g. import/from in Python)
@type

View File

@@ -0,0 +1,96 @@
; CREDITS @stumash (stuart.mashaal@gmail.com)
;; variables
(
(identifier) @variable.builtin
(#match? @variable.builtin "^this$")
)
;; method calls
; 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)))
; method invocation
(call_expression
function: (field_expression
field: (identifier) @method))
(
(identifier) @function.builtin
(#match? @function.builtin "^super$")
)
;; 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) @keyword
;; special keywords
"new" @keyword.operator
[
"else"
"if"
"match"
] @conditional
[
"do"
"for"
"while"
"yield"
] @repeat
"def" @keyword.function
"import" @include
[
"try"
"catch"
"throw"
] @exception
"return" @keyword.return
;; `case` is a conditional keyword in case_block
(case_block
(case_clause ("case") @conditional))