.vim/syntax/cabal.vim 5.8 KiB raw
1
" Vim syntax file
2
" Language:	Haskell Cabal Build file
3
" Maintainer:	Vincent Berthoux <twinside@gmail.com>
4
" File Types:	.cabal
5
" v1.4: Add benchmark support, thanks to Simon Meier
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 match	cabalCategory	"\c\<executable\>"
30
syn match	cabalCategory	"\c\<library\>"
31
syn match	cabalCategory	"\c\<benchmark\>"
32
syn match	cabalCategory	"\c\<test-suite\>"
33
syn match	cabalCategory	"\c\<source-repository\>"
34
syn match	cabalCategory	"\c\<flag\>"
35
36
syn keyword     cabalConditional    if else
37
syn match       cabalOperator       "&&\|||\|!\|==\|>=\|<="
38
syn keyword     cabalFunction       os arche impl flag
39
syn match       cabalComment    /--.*$/
40
syn match       cabalVersion    "\d\+\(\.\(\d\)\+\)\+\(\.\*\)\?"
41
42
syn match       cabalTruth      "\c\<true\>"
43
syn match       cabalTruth      "\c\<false\>"
44
45
syn match       cabalCompiler   "\c\<ghc\>"
46
syn match       cabalCompiler   "\c\<nhc\>"
47
syn match       cabalCompiler   "\c\<yhc\>"
48
syn match       cabalCompiler   "\c\<hugs\>"
49
syn match       cabalCompiler   "\c\<hbc\>"
50
syn match       cabalCompiler   "\c\<helium\>"
51
syn match       cabalCompiler   "\c\<jhc\>"
52
syn match       cabalCompiler   "\c\<lhc\>"
53
54
syn match	cabalStatement	/^\c\s*\<default-language\s*:/me=e-1
55
syn match	cabalStatement	/^\c\s*\<default-extensions\s*:/me=e-1
56
57
syn match	cabalStatement	/^\c\s*\<author\s*:/me=e-1
58
syn match	cabalStatement	/^\c\s*\<branch\s*:/me=e-1
59
syn match	cabalStatement	/^\c\s*\<bug-reports\s*:/me=e-1
60
syn match	cabalStatement	/^\c\s*\<build-depends\s*:/me=e-1
61
syn match	cabalStatement	/^\c\s*\<build-tools\s*:/me=e-1
62
syn match	cabalStatement	/^\c\s*\<build-type\s*:/me=e-1
63
syn match	cabalStatement	/^\c\s*\<buildable\s*:/me=e-1
64
syn match	cabalStatement	/^\c\s*\<c-sources\s*:/me=e-1
65
syn match	cabalStatement	/^\c\s*\<cabal-version\s*:/me=e-1
66
syn match	cabalStatement	/^\c\s*\<category\s*:/me=e-1
67
syn match	cabalStatement	/^\c\s*\<cc-options\s*:/me=e-1
68
syn match	cabalStatement	/^\c\s*\<copyright\s*:/me=e-1
69
syn match   cabalStatement  /^\c\s*\<cpp-options\s*:/me=e-1
70
syn match	cabalStatement	/^\c\s*\<data-dir\s*:/me=e-1
71
syn match	cabalStatement	/^\c\s*\<data-files\s*:/me=e-1
72
syn match	cabalStatement	/^\c\s*\<default\s*:/me=e-1
73
syn match	cabalStatement	/^\c\s*\<description\s*:/me=e-1
74
syn match	cabalStatement	/^\c\s*\<executable\s*:/me=e-1
75
syn match	cabalStatement	/^\c\s*\<exposed-modules\s*:/me=e-1
76
syn match	cabalStatement	/^\c\s*\<exposed\s*:/me=e-1
77
syn match	cabalStatement	/^\c\s*\<extensions\s*:/me=e-1
78
syn match	cabalStatement	/^\c\s*\<extra-lib-dirs\s*:/me=e-1
79
syn match	cabalStatement	/^\c\s*\<extra-libraries\s*:/me=e-1
80
syn match	cabalStatement	/^\c\s*\<extra-source-files\s*:/me=e-1
81
syn match	cabalStatement	/^\c\s*\<extra-tmp-files\s*:/me=e-1
82
syn match	cabalStatement	/^\c\s*\<for example\s*:/me=e-1
83
syn match	cabalStatement	/^\c\s*\<frameworks\s*:/me=e-1
84
syn match	cabalStatement	/^\c\s*\<ghc-options\s*:/me=e-1
85
syn match	cabalStatement	/^\c\s*\<ghc-prof-options\s*:/me=e-1
86
syn match	cabalStatement	/^\c\s*\<ghc-shared-options\s*:/me=e-1
87
syn match	cabalStatement	/^\c\s*\<homepage\s*:/me=e-1
88
syn match	cabalStatement	/^\c\s*\<hs-source-dirs\s*:/me=e-1
89
syn match	cabalStatement	/^\c\s*\<hugs-options\s*:/me=e-1
90
syn match	cabalStatement	/^\c\s*\<include-dirs\s*:/me=e-1
91
syn match	cabalStatement	/^\c\s*\<includes\s*:/me=e-1
92
syn match	cabalStatement	/^\c\s*\<install-includes\s*:/me=e-1
93
syn match	cabalStatement	/^\c\s*\<ld-options\s*:/me=e-1
94
syn match	cabalStatement	/^\c\s*\<license-file\s*:/me=e-1
95
syn match	cabalStatement	/^\c\s*\<license\s*:/me=e-1
96
syn match	cabalStatement	/^\c\s*\<location\s*:/me=e-1
97
syn match	cabalStatement	/^\c\s*\<main-is\s*:/me=e-1
98
syn match	cabalStatement	/^\c\s*\<maintainer\s*:/me=e-1
99
syn match	cabalStatement	/^\c\s*\<module\s*:/me=e-1
100
syn match	cabalStatement	/^\c\s*\<name\s*:/me=e-1
101
syn match	cabalStatement	/^\c\s*\<nhc98-options\s*:/me=e-1
102
syn match	cabalStatement	/^\c\s*\<other-modules\s*:/me=e-1
103
syn match	cabalStatement	/^\c\s*\<package-url\s*:/me=e-1
104
syn match	cabalStatement	/^\c\s*\<pkgconfig-depends\s*:/me=e-1
105
syn match	cabalStatement	/^\c\s*\<stability\s*:/me=e-1
106
syn match	cabalStatement	/^\c\s*\<subdir\s*:/me=e-1
107
syn match	cabalStatement	/^\c\s*\<synopsis\s*:/me=e-1
108
syn match	cabalStatement	/^\c\s*\<tag\s*:/me=e-1
109
syn match	cabalStatement	/^\c\s*\<tested-with\s*:/me=e-1
110
syn match	cabalStatement	/^\c\s*\<type\s*:/me=e-1
111
syn match	cabalStatement	/^\c\s*\<version\s*:/me=e-1
112
113
" Define the default highlighting.
114
" For version 5.7 and earlier: only when not done already
115
" For version 5.8 and later: only when an item doesn't have highlighting yet
116
if version >= 508 || !exists("did_cabal_syn_inits")
117
  if version < 508
118
    let did_cabal_syn_inits = 1
119
    command -nargs=+ HiLink hi link <args>
120
  else
121
    command -nargs=+ HiLink hi def link <args>
122
  endif
123
124
  HiLink cabalVersion       Number
125
  HiLink cabalTruth         Boolean
126
  HiLink cabalComment       Comment
127
  HiLink cabalStatement     Statement
128
  HiLink cabalCategory      Type
129
  HiLink cabalFunction      Function
130
  HiLink cabalConditional   Conditional
131
  HiLink cabalOperator      Operator
132
  HiLink cabalCompiler      Constant
133
  delcommand HiLink
134
endif
135
136
let b:current_syntax = "cabal"
137
138
" vim: ts=8