summaryrefslogtreecommitdiffstats
path: root/misc/syntax/cabal.syntax
blob: a622401b3e972a30537dc58b0940bb74e98b405e (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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
# Author   : Mikhail S. Pobolovets
# Language : cabal
#
# haskell.syntax is taken as base
#

caseinsensitive

context default

# cabal keywords

#   reserved keywords:

#comments
    keyword -- brown

#   unused symbols
    keyword whole _\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\] magenta

#   known fields
    keyword whole \[\s\]author cyan
    keyword whole \[\s\]bug-reports cyan
    keyword whole \[\s\]buildable cyan
    keyword whole \[\s\]build-depends cyan
    keyword whole \[\s\]build-tools cyan
    keyword whole \[\s\]build-type cyan
    keyword whole \[\s\]cabal-version cyan
    keyword whole \[\s\]category cyan
    keyword whole \[\s\]cc-options cyan
    keyword whole \[\s\]copyright cyan
    keyword whole \[\s\]cpp-options cyan
    keyword whole \[\s\]c-sources cyan
    keyword whole \[\s\]data-dir cyan
    keyword whole \[\s\]data-files cyan
    keyword whole \[\s\]default-language cyan
    keyword whole \[\s\]default cyan
    keyword whole \[\s\]description cyan
    keyword whole \[\s\]exposed-modules cyan
    keyword whole \[\s\]exposed cyan
    keyword whole \[\s\]extensions cyan
    keyword whole \[\s\]extra-lib-dirs cyan
    keyword whole \[\s\]extra-libraries cyan
    keyword whole \[\s\]extra-source-files cyan
    keyword whole \[\s\]extra-tmp-files cyan
    keyword whole \[\s\]frameworks cyan
    keyword whole \[\s\]ghc-options cyan
    keyword whole \[\s\]ghc-prof-options cyan
    keyword whole \[\s\]ghc-shared-options cyan
    keyword whole \[\s\]homepage cyan
    keyword whole \[\s\]hs-source-dirs cyan
    keyword whole \[\s\]hugs-options cyan
    keyword whole \[\s\]include-dirs cyan
    keyword whole \[\s\]includes cyan
    keyword whole \[\s\]install-includes cyan
    keyword whole \[\s\]jhc-options cyan
    keyword whole \[\s\]ld-options cyan
    keyword whole \[\s\]license-file cyan
    keyword whole \[\s\]license cyan
    keyword whole \[\s\]location cyan
    keyword whole \[\s\]main-is cyan
    keyword whole \[\s\]maintainer cyan
    keyword whole \[\s\]name cyan
    keyword whole \[\s\]nhc98-options cyan
    keyword whole \[\s\]other-extensions cyan
    keyword whole \[\s\]other-modules cyan
    keyword whole \[\s\]package-url cyan
    keyword whole \[\s\]pkgconfig-depends cyan
    keyword whole \[\s\]source-repository cyan
    keyword whole \[\s\]stability cyan
    keyword whole \[\s\]synopsis cyan
    keyword whole \[\s\]tag cyan
    keyword whole \[\s\]tested-with cyan
    keyword whole \[\s\]type cyan
    keyword whole \[\s\]version cyan

#   extended fields
    keyword whole x\-\[\-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\] cyan

#   version wildcard
    keyword whole -any red

#   commandline keys
    keyword whole -\[\-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz_0123456789\] brightred

#   known extensions
    keyword whole Arrows brightmagenta
    keyword whole BangPatterns brightmagenta
    keyword whole ConstrainedClassMethods brightmagenta
    keyword whole DeriveDataTypeable brightmagenta
    keyword whole DisambiguateRecordFields brightmagenta
    keyword whole EmptyDataDecls brightmagenta
    keyword whole CPP brightmagenta
    keyword whole ExistentialQuantification brightmagenta
    keyword whole ExtendedDefaultRules brightmagenta
    keyword whole ExtensibleRecords brightmagenta
    keyword whole FlexibleContexts brightmagenta
    keyword whole FlexibleInstances brightmagenta
    keyword whole ForeignFunctionInterface brightmagenta
    keyword whole FunctionalDependencies brightmagenta
    keyword whole GADTs brightmagenta
    keyword whole GeneralizedNewtypeDeriving brightmagenta
    keyword whole Generics brightmagenta
    keyword whole HereDocuments brightmagenta
    keyword whole ImplicitParams brightmagenta
    keyword whole ImpredicativeTypes brightmagenta
    keyword whole IncoherentInstances brightmagenta
    keyword whole KindSignatures brightmagenta
    keyword whole LiberalTypeSynonyms brightmagenta
    keyword whole MagicHash brightmagenta
    keyword whole MultiParamTypeClasses brightmagenta
    keyword whole NamedFieldPuns brightmagenta
    keyword whole NewQualifiedOperators brightmagenta
    keyword whole NoImplicitPrelude brightmagenta
    keyword whole NoMonomorphismRestriction brightmagenta
    keyword whole NoMonoPatBinds brightmagenta
    keyword whole OverlappingInstances brightmagenta
    keyword whole OverloadedStrings brightmagenta
    keyword whole PackageImports brightmagenta
    keyword whole ParallelListComp brightmagenta
    keyword whole PatternGuards brightmagenta
    keyword whole PatternSignatures brightmagenta
    keyword whole PolymorphicComponents brightmagenta
    keyword whole PostfixOperators brightmagenta
    keyword whole QuasiQuotes brightmagenta
    keyword whole Rank2Types brightmagenta
    keyword whole RankNTypes brightmagenta
    keyword whole RecordPuns brightmagenta
    keyword whole RecordWildCards brightmagenta
    keyword whole RecursiveDo brightmagenta
    keyword whole RelaxedPolyRec brightmagenta
    keyword whole RestrictedTypeSynonyms brightmagenta
    keyword whole ScopedTypeVariables brightmagenta
    keyword whole StandaloneDeriving brightmagenta
    keyword whole TemplateHaskell brightmagenta
    keyword whole TransformListComp brightmagenta
    keyword whole TypeFamilies brightmagenta
    keyword whole TypeOperators brightmagenta
    keyword whole TypeSynonymInstances brightmagenta
    keyword whole UnboxedTuples brightmagenta
    keyword whole UndecidableInstances brightmagenta
    keyword whole UnicodeSyntax brightmagenta
    keyword whole UnliftedFFITypes brightmagenta
    keyword whole ViewPatterns brightmagenta

#   links
    keyword http://+ gray
    keyword ftp://+ gray
    keyword git://+ gray
    keyword cvs://+ gray
    keyword svn://+ gray
    keyword darcs://+ gray
#   special text inside of <>, i.e. emails
    keyword \<+\> red

#   build types with '\s & \n' hack to remove too stupid highlighting
    keyword whole Configure\s white
    keyword whole Configure\n white
    keyword whole Custom\s white
    keyword whole Custom\n white
    keyword whole Make\s white
    keyword whole Make\n white
    keyword whole Simple\n white
    keyword whole Simple\s white

#   licenses
    keyword whole AllRightsReserved white
    keyword whole OtherLicense white
    keyword whole PublicDomain white
    keyword whole LGPL white
    keyword whole GPL white
    keyword whole LGPL2 white
    keyword whole GPL2 white
    keyword whole LGPL3 white
    keyword whole GPL3 white
    keyword whole BSD white
    keyword whole BSD3 white
    keyword whole BSD4 white
    keyword whole MIT white

#   compilers
    keyword whole GHC white
    keyword whole NHC white
    keyword whole JHC white
    keyword whole HBC white
    keyword whole Helium white
    keyword whole Hugs white

#   special keywords
    keyword whole True white
    keyword whole False white
    keyword whole if white
    keyword whole else white
    keyword whole os white
    keyword whole impl white
    keyword whole arch white

    keyword whole linestart \[\s\]executable yellow
    keyword whole linestart \[\s\]library yellow
    keyword whole linestart \[\s\]test-suite yellow
    keyword whole flag yellow
    keyword whole repo yellow


#   unboxed (started from upcase)
#    keyword whole \{ABCDEFGHIJKLMNOPQRSTUVWXYZ\}\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\]# white
#   types/modules
#    keyword whole \{ABCDEFGHIJKLMNOPQRSTUVWXYZ\}\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\] white

#digits
    keyword whole 0\{xX\}\{0123456789abcdefABCDEF\}\[0123456789abcdefABCDEF\] brightgreen
    keyword whole \{0123456789\}\[0123456789\] brightgreen
    keyword whole \[0123456789\]\.\{0123456789\}\[0123456789\] brightgreen
    keyword whole \{0123456789\}\[0123456789\]\.\[0123456789\] brightgreen
    keyword whole \{0123456789\}\[0123456789\]\{eE\}\{0123456789\}\[0123456789\] brightgreen
    keyword whole \{0123456789\}\[0123456789\]\{eE\}\{\-\+\}\{0123456789\}\[0123456789\] brightgreen
    keyword whole \{0123456789\}\[0123456789\]\.\{0123456789\}\[0123456789\]\{eE\}\{0123456789\}\[0123456789\] brightgreen
    keyword whole \{0123456789\}\[0123456789\]\.\{0123456789\}\[0123456789\]\{eE\}\{\-\+\}\{0123456789\}\[0123456789\] brightgreen


# some punctuation characters
    keyword whole $ yellow
    keyword whole ! white
    keyword whole && white
    keyword whole \* yellow
    keyword whole \+ yellow
    keyword whole / yellow
    keyword whole ^ white
    keyword whole || white
    keyword whole | white

    keyword ~ white
    keyword , brightcyan
    keyword - yellow
    keyword : brightcyan
    keyword ; yellow
    keyword = yellow
    keyword < yellow
    keyword > yellow
    keyword { white
    keyword } white
    keyword [ brightcyan
    keyword ] brightcyan
    keyword ( brightcyan
    keyword ) brightcyan

# comments
context exclusive {- -} brown
    spellcheck

context exclusive // \n brown
    spellcheck

context exclusive \-\- \n brown
    spellcheck

context " " green
    spellcheck

    keyword \\" brightgreen
    keyword %% brightgreen
    keyword %\[#0\s-\+,\]\[0123456789\*\]\[.\]\[0123456789\*\]\[L\]\{eEfgGoxX\} brightgreen
    keyword %\[0\s-\+,\]\[0123456789\*\]\[.\]\[0123456789\*\]\[hl\]\{diuxX\} brightgreen
    keyword %\[hl\]n brightgreen
    keyword %\[-\]\[0123456789\*\]\[.\]\[0123456789\*\]s brightgreen
    keyword %[*] brightgreen
    keyword %c brightgreen
    keyword %p brightgreen
    keyword \\\{0123\}\{01234567\}\{01234567\} brightgreen
    keyword \\\\ brightgreen
    keyword \\' brightgreen
    keyword \\\{abtnvfr\} brightgreen

# infix binop
context exclusive ` ` white