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