summaryrefslogtreecommitdiff
path: root/queries/tiger/highlights.scm
blob: cbab4fae832b618865e0acbc63a7173fb8d2954b (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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
; Built-ins {{{
((function_call
  function: (identifier) @function.builtin)
  (#match? @function.builtin "^(chr|concat|exit|flush|getchar|not|ord|print|print_err|print_int|size|strcmp|streq|substring)$")
  ; FIXME: not supported by neovim
  ; (#is-not? local)
  )

((type_identifier) @type.builtin
  (#match? @type.builtin "^(int|string|Object)$")
  ; FIXME: not supported by neovim
  ; (#is-not? local)
  )

((identifier) @variable.builtin
  (#match? @variable.builtin "^self$")
  ; FIXME: not supported by neovim
  ; (#is-not? local)
  )
; }}}

; Keywords {{{
[
 "function"
 "primitive"
] @keyword.function

[
  "do"
  "for"
  "to"
  "while"
] @repeat

[
 "new"
] @constructor

[
 "method"
] @method

[
  "array"
  (break_expression)
  "else"
  "end"
  "if"
  "import"
  "in"
  "let"
  "of"
  "then"
  "type"
  "var"

  "class"
  "extends"

  "_cast"
  "_chunks"
  "_exp"
  "_lvalue"
  "_namety"
] @keyword
; }}}

; Operators {{{
(operator) @operator

[
 ","
 ";"
 ":"
 "."
] @punctuation.delimiter

[
 "("
 ")"
 "["
 "]"
 "{"
 "}"
] @punctuation.bracket
; }}}

; Functions and methods {{{
(function_call
  function: (identifier) @function)
(function_declaration
  name: (identifier) @function)
(primitive_declaration
  name: (identifier) @function)

(method_call
  method: (identifier) @method)
(method_declaration
  name: (identifier) @method)

(parameters
  name: (identifier) @parameter)
; }}}

; Declarations {{{
(import_declaration
  file: (string_literal) @string.special)
; }}}

; Literals {{{
(nil_literal) @constant.builtin
(integer_literal) @number
(string_literal) @string
(escape_sequence) @string.escape
; }}}

; Misc {{{
(comment) @comment

(type_identifier) @type
(field_identifier) @property
(identifier) @variable
; }}}

; vim: sw=2 foldmethod=marker