aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/tiger/highlights.scm
blob: cbb1f23107666372d14dbd655ed0f0f968813ae4 (plain) (blame)
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
; Built-ins {{{
((function_call
  function: (identifier) @function.builtin)
  (#any-of? @function.builtin
    "chr" "concat" "exit" "flush" "getchar" "not" "ord" "print" "print_err" "print_int" "size"
    "strcmp" "streq" "substring"))

((type_identifier) @type.builtin
  (#any-of? @type.builtin "int" "string" "Object"))

((identifier) @variable.builtin
  (#eq? @variable.builtin "self"))

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

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

"new" @keyword.operator

"import" @keyword.import

[
  "array"
  (break_expression)
  "else"
  "end"
  "if"
  "in"
  "let"
  "of"
  "then"
  "type"
  "var"
  "extends"
  "_cast"
  "_chunks"
  "_exp"
  "_lvalue"
  "_namety"
] @keyword

"class" @keyword.type

; }}}
; 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) @function.method)

(method_declaration
  name: (identifier) @function.method)

(parameters
  name: (identifier) @variable.parameter)

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

; }}}
; Literals {{{
(nil_literal) @constant.builtin

(integer_literal) @number

(string_literal) @string

(escape_sequence) @string.escape

; }}}
; Misc {{{
(comment) @comment @spell

(type_identifier) @type

(field_identifier) @variable.member

(identifier) @variable

; }}}
; vim: sw=2 foldmethod=marker