blob: 2a92aa8350b38f1bdaf5205ef909f354005327f7 [file] [log] [blame]
Bram Moolenaar00a927d2010-05-14 23:24:24 +02001" Vim syntax file
2" Language: Haskell Cabal Build file
3" Maintainer: Vincent Berthoux <twinside@gmail.com>
4" File Types: .cabal
5" v1.3: Updated to the last version of cabal
6" Added more highlighting for cabal function, true/false
7" and version number. Also added missing comment highlighting.
8" Cabal known compiler are highlighted too.
9"
10" V1.2: Added cpp-options which was missing. Feature implemented
11" by GHC, found with a GHC warning, but undocumented.
12" Whatever...
13"
14" v1.1: Fixed operator problems and added ftdetect file
15" (thanks to Sebastian Schwarz)
16"
17" v1.0: Cabal syntax in vimball format
18" (thanks to Magnus Therning)
19
20" For version 5.x: Clear all syntax items
21" For version 6.x: Quit when a syntax file was already loaded
22if version < 600
23 syntax clear
24elseif exists("b:current_syntax")
25 finish
26endif
27
28syn keyword cabalCategory Library library Executable executable Flag flag
29syn keyword cabalCategory source-repository Source-Repository
30
31syn keyword cabalConditional if else
32syn match cabalOperator "&&\|||\|!\|==\|>=\|<="
33syn keyword cabalFunction os arche impl flag
34syn match cabalComment /--.*$/
35syn match cabalVersion "\d\+\(.\(\d\)\+\)\+"
36
37syn match cabalTruth "\ctrue"
38syn match cabalTruth "\cfalse"
39
40syn match cabalCompiler "\cghc"
41syn match cabalCompiler "\cnhc"
42syn match cabalCompiler "\cyhc"
43syn match cabalCompiler "\chugs"
44syn match cabalCompiler "\chbc"
45syn match cabalCompiler "\chelium"
46syn match cabalCompiler "\cjhc"
47syn match cabalCompiler "\clhc"
48
49
50syn match cabalStatement "\cauthor"
51syn match cabalStatement "\cbranch"
52syn match cabalStatement "\cbug-reports"
53syn match cabalStatement "\cbuild-depends"
54syn match cabalStatement "\cbuild-tools"
55syn match cabalStatement "\cbuild-type"
56syn match cabalStatement "\cbuildable"
57syn match cabalStatement "\cc-sources"
58syn match cabalStatement "\ccabal-version"
59syn match cabalStatement "\ccategory"
60syn match cabalStatement "\ccc-options"
61syn match cabalStatement "\ccopyright"
62syn match cabalStatement "\ccpp-options"
63syn match cabalStatement "\cdata-dir"
64syn match cabalStatement "\cdata-files"
65syn match cabalStatement "\cdefault"
66syn match cabalStatement "\cdescription"
67syn match cabalStatement "\cexecutable"
68syn match cabalStatement "\cexposed-modules"
69syn match cabalStatement "\cexposed"
70syn match cabalStatement "\cextensions"
71syn match cabalStatement "\cextra-lib-dirs"
72syn match cabalStatement "\cextra-libraries"
73syn match cabalStatement "\cextra-source-files"
74syn match cabalStatement "\cextra-tmp-files"
75syn match cabalStatement "\cfor example"
76syn match cabalStatement "\cframeworks"
77syn match cabalStatement "\cghc-options"
78syn match cabalStatement "\cghc-prof-options"
79syn match cabalStatement "\cghc-shared-options"
80syn match cabalStatement "\chomepage"
81syn match cabalStatement "\chs-source-dirs"
82syn match cabalStatement "\chugs-options"
83syn match cabalStatement "\cinclude-dirs"
84syn match cabalStatement "\cincludes"
85syn match cabalStatement "\cinstall-includes"
86syn match cabalStatement "\cld-options"
87syn match cabalStatement "\clicense-file"
88syn match cabalStatement "\clicense"
89syn match cabalStatement "\clocation"
90syn match cabalStatement "\cmain-is"
91syn match cabalStatement "\cmaintainer"
92syn match cabalStatement "\cmodule"
93syn match cabalStatement "\cname"
94syn match cabalStatement "\cnhc98-options"
95syn match cabalStatement "\cother-modules"
96syn match cabalStatement "\cpackage-url"
97syn match cabalStatement "\cpkgconfig-depends"
98syn match cabalStatement "\cstability"
99syn match cabalStatement "\csubdir"
100syn match cabalStatement "\csynopsis"
101syn match cabalStatement "\ctag"
102syn match cabalStatement "\ctested-with"
103syn match cabalStatement "\ctype"
104syn match cabalStatement "\cversion"
105
106" Define the default highlighting.
107" For version 5.7 and earlier: only when not done already
108" For version 5.8 and later: only when an item doesn't have highlighting yet
109if version >= 508 || !exists("did_cabal_syn_inits")
110 if version < 508
111 let did_cabal_syn_inits = 1
112 command -nargs=+ HiLink hi link <args>
113 else
114 command -nargs=+ HiLink hi def link <args>
115 endif
116
117 HiLink cabalVersion Number
118 HiLink cabalTruth Boolean
119 HiLink cabalComment Comment
120 HiLink cabalStatement Statement
121 HiLink cabalCategory Type
122 HiLink cabalFunction Function
123 HiLink cabalConditional Conditional
124 HiLink cabalOperator Operator
125 HiLink cabalCompiler Constant
126 delcommand HiLink
127endif
128
129let b:current_syntax = "cabal"
130
131" vim: ts=8