2 " Language: Haskell Cabal Build file
3 " Maintainer: Vincent Berthoux <twinside@gmail.com>
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.
11 " V1.2: Added cpp-options which was missing. Feature implemented
12 " by GHC, found with a GHC warning, but undocumented.
15 " v1.1: Fixed operator problems and added ftdetect file
16 " (thanks to Sebastian Schwarz)
18 " v1.0: Cabal syntax in vimball format
19 " (thanks to Magnus Therning)
21 " For version 5.x: Clear all syntax items
22 " For version 6.x: Quit when a syntax file was already loaded
25 elseif exists("b:current_syntax")
29 syn keyword cabalCategory Library library Executable executable Flag flag
30 syn keyword cabalCategory source-repository Source-Repository
32 syn keyword cabalConditional if else
33 syn match cabalOperator "&&\|||\|!\|==\|>=\|<="
34 syn keyword cabalFunction os arche impl flag
35 syn match cabalComment /--.*$/
36 syn match cabalVersion "\d\+\(.\(\d\)\+\)\+"
38 syn match cabalTruth "\ctrue"
39 syn match cabalTruth "\cfalse"
41 syn match cabalCompiler "\cghc"
42 syn match cabalCompiler "\cnhc"
43 syn match cabalCompiler "\cyhc"
44 syn match cabalCompiler "\chugs"
45 syn match cabalCompiler "\chbc"
46 syn match cabalCompiler "\chelium"
47 syn match cabalCompiler "\cjhc"
48 syn match cabalCompiler "\clhc"
51 syn match cabalStatement "\cauthor"
52 syn match cabalStatement "\cbranch"
53 syn match cabalStatement "\cbug-reports"
54 syn match cabalStatement "\cbuild-depends"
55 syn match cabalStatement "\cbuild-tools"
56 syn match cabalStatement "\cbuild-type"
57 syn match cabalStatement "\cbuildable"
58 syn match cabalStatement "\cc-sources"
59 syn match cabalStatement "\ccabal-version"
60 syn match cabalStatement "\ccategory"
61 syn match cabalStatement "\ccc-options"
62 syn match cabalStatement "\ccopyright"
63 syn match cabalStatement "\ccpp-options"
64 syn match cabalStatement "\cdata-dir"
65 syn match cabalStatement "\cdata-files"
66 syn match cabalStatement "\cdefault"
67 syn match cabalStatement "\cdescription"
68 syn match cabalStatement "\cexecutable"
69 syn match cabalStatement "\cexposed-modules"
70 syn match cabalStatement "\cexposed"
71 syn match cabalStatement "\cextensions"
72 syn match cabalStatement "\cextra-lib-dirs"
73 syn match cabalStatement "\cextra-libraries"
74 syn match cabalStatement "\cextra-source-files"
75 syn match cabalStatement "\cextra-tmp-files"
76 syn match cabalStatement "\cfor example"
77 syn match cabalStatement "\cframeworks"
78 syn match cabalStatement "\cghc-options"
79 syn match cabalStatement "\cghc-prof-options"
80 syn match cabalStatement "\cghc-shared-options"
81 syn match cabalStatement "\chomepage"
82 syn match cabalStatement "\chs-source-dirs"
83 syn match cabalStatement "\chugs-options"
84 syn match cabalStatement "\cinclude-dirs"
85 syn match cabalStatement "\cincludes"
86 syn match cabalStatement "\cinstall-includes"
87 syn match cabalStatement "\cld-options"
88 syn match cabalStatement "\clicense-file"
89 syn match cabalStatement "\clicense"
90 syn match cabalStatement "\clocation"
91 syn match cabalStatement "\cmain-is"
92 syn match cabalStatement "\cmaintainer"
93 syn match cabalStatement "\cmodule"
94 syn match cabalStatement "\cname"
95 syn match cabalStatement "\cnhc98-options"
96 syn match cabalStatement "\cother-modules"
97 syn match cabalStatement "\cpackage-url"
98 syn match cabalStatement "\cpkgconfig-depends"
99 syn match cabalStatement "\cstability"
100 syn match cabalStatement "\csubdir"
101 syn match cabalStatement "\csynopsis"
102 syn match cabalStatement "\ctag"
103 syn match cabalStatement "\ctested-with"
104 syn match cabalStatement "\ctype"
105 syn match cabalStatement "\cversion"
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
110 if version >= 508 || !exists("did_cabal_syn_inits")
112 let did_cabal_syn_inits = 1
113 command -nargs=+ HiLink hi link <args>
115 command -nargs=+ HiLink hi def link <args>
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
130 let b:current_syntax = "cabal"