fork for IVI
[profile/ivi/vim.git] / runtime / syntax / cabal.vim
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
23 if version < 600
24   syntax clear
25 elseif exists("b:current_syntax")
26   finish
27 endif
28
29 syn keyword     cabalCategory   Library library Executable executable Flag flag
30 syn keyword     cabalCategory   source-repository Source-Repository
31
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\)\+\)\+"
37
38 syn match       cabalTruth      "\ctrue"
39 syn match       cabalTruth      "\cfalse"
40
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"
49
50
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"
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
110 if 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
128 endif
129
130 let b:current_syntax = "cabal"
131
132 " vim: ts=8