aboutsummaryrefslogtreecommitdiffstats
path: root/queries/rst/highlights.scm
blob: c569336b806fb4b4c5934db84ab8193120776d6f (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
122
123
;; Marks

[
  ".."
  "|"
  "--"
  "__"
  ":"
  "::"
  "bullet"
  "adornment"
  (transition)
] @punctuation.special

;; Directives

(directive
  name: (type) @function)

((directive
  name: (type) @include)
 (#match? @include "^include::$"))

((directive
   name: (type) @function.builtin)
 (#vim-match?
  @function.builtin
  ; https://docutils.sourceforge.io/docs/ref/rst/directives.html
  "^(attention|caution|danger|error|hint|important|note|tip|warning|admonition)|(image|figure)|(topic|sidebar|line-block|parsed-literal|code|math|rubric|epigraph|highlights|pull-quote|compound|container)|(table|csv-table|list-table)|(contents|sectnum|section-numbering|header|footer)|(target-notes)|(meta)|(replace|unicode|date)|(raw|class|role|default-role|title|restructuredtext-test-directive)::$"))

;; Blocks

[
  (literal_block)
  (line_block)
  (doctest_block)
] @text.literal

(block_quote
  (attribution)? @text.emphasis) @text.literal

(substitution_definition
  name: (substitution) @constant)

(footnote
  name: (label) @constant)

(citation
  name: (label) @constant)

(target
  name: (name)? @constant
  link: (_) @text.literal)

;; Lists

; Definition lists
(list_item
  (term) @text.strong
  (classifier)? @text.emphasis)

; Field lists
(field (field_name) @constant)

;; Inline markup

(emphasis) @text.emphasis

(strong) @text.strong

(standalone_hyperlink) @text.uri

(role) @function

((role) @function.builtin
 (#vim-match?
  @function.builtin
  ; https://docutils.sourceforge.io/docs/ref/rst/roles.html
  "^:(emphasis|literal|code|math|pep-reference|PEP|rfc-reference|RFC|strong|subscript|sub|superscript|sup|title-reference|title|t|raw):$"))

; Prefix role
((interpreted_text
  (role) @_role
  "interpreted_text" @text.emphasis)
 (#eq? @_role ":emphasis:"))

((interpreted_text
  (role) @_role
  "interpreted_text" @text.strong)
 (#eq? @_role ":strong:"))

; Sufix role
((interpreted_text
  "interpreted_text" @text.emphasis
  (role) @_role)
 (#eq? @_role ":emphasis:"))

((interpreted_text
  "interpreted_text" @text.strong
  (role) @_role)
 (#eq? @_role ":strong:"))

[
 "interpreted_text"
  (literal)
] @text.literal

[
  (inline_target)
  (substitution_reference)
  (footnote_reference)
  (citation_reference)
  (reference)
] @constant

;; Others

(title) @text.title

(comment) @comment
(comment "..") @comment

(ERROR) @error