summaryrefslogtreecommitdiff
path: root/queries/scala/highlights.scm
blob: aecbdf48784e97aef3960a1869e2a76d14043e27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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))