1" Vim syntax file
2" Language:         nanorc(5) - GNU nano configuration file
3" Maintainer:       Nikolai Weibull <now@bitwi.se>
4" Latest Revision:  2006-04-19
5
6if exists("b:current_syntax")
7  finish
8endif
9
10let s:cpo_save = &cpo
11set cpo&vim
12
13syn keyword nanorcTodo          contained TODO FIXME XXX NOTE
14
15syn region  nanorcComment       display oneline start='^\s*#' end='$'
16                                \ contains=nanorcTodo,@Spell
17
18syn match   nanorcBegin         display '^'
19                                \ nextgroup=nanorcKeyword,nanorcComment
20                                \ skipwhite
21
22syn keyword nanorcKeyword       contained set unset
23                                \ nextgroup=nanorcBoolOption,
24                                \ nanorcStringOption,nanorcNumberOption
25                                \ skipwhite
26
27syn keyword nanorcKeyword       contained syntax
28                                \ nextgroup=nanorcSynGroupName skipwhite
29
30syn keyword nanorcKeyword       contained color
31                                \ nextgroup=@nanorcFGColor skipwhite
32
33syn keyword nanorcBoolOption    contained autoindent backup const cut
34                                \ historylog morespace mouse multibuffer
35                                \ noconvert nofollow nohelp nowrap preserve
36                                \ rebinddelete regexp smarthome smooth suspend
37                                \ tempfile view
38
39syn keyword nanorcStringOption  contained backupdir brackets operatingdir
40                                \ punct quotestr speller whitespace
41                                \ nextgroup=nanorcString skipwhite
42
43syn keyword nanorcNumberOption  contained fill tabsize
44                                \ nextgroup=nanorcNumber skipwhite
45
46syn region  nanorcSynGroupName  contained display oneline start=+"+
47                                \ end=+"\ze\%([[:blank:]]\|$\)+
48                                \ nextgroup=nanorcRegexes skipwhite
49
50syn match   nanorcString        contained display '".*"'
51
52syn region  nanorcRegexes       contained display oneline start=+"+
53                                \ end=+"\ze\%([[:blank:]]\|$\)+
54                                \ nextgroup=nanorcRegexes skipwhite
55
56syn match   nanorcNumber        contained display '[+-]\=\<\d\+\>'
57
58syn cluster nanorcFGColor       contains=nanorcFGWhite,nanorcFGBlack,
59                                \ nanorcFGRed,nanorcFGBlue,nanorcFGGreen,
60                                \ nanorcFGYellow,nanorcFGMagenta,nanorcFGCyan,
61                                \ nanorcFGBWhite,nanorcFGBBlack,nanorcFGBRed,
62                                \ nanorcFGBBlue,nanorcFGBGreen,nanorcFGBYellow,
63                                \ nanorcFGBMagenta,nanorcFGBCyan
64
65syn keyword nanorcFGWhite       contained white
66                                \ nextgroup=@nanorcFGSpec skipwhite
67
68syn keyword nanorcFGBlack       contained black
69                                \ nextgroup=@nanorcFGSpec skipwhite
70
71syn keyword nanorcFGRed         contained red
72                                \ nextgroup=@nanorcFGSpec skipwhite
73
74syn keyword nanorcFGBlue        contained blue
75                                \ nextgroup=@nanorcFGSpec skipwhite
76
77syn keyword nanorcFGGreen       contained green
78                                \ nextgroup=@nanorcFGSpec skipwhite
79
80syn keyword nanorcFGYellow      contained yellow
81                                \ nextgroup=@nanorcFGSpec skipwhite
82
83syn keyword nanorcFGMagenta     contained magenta
84                                \ nextgroup=@nanorcFGSpec skipwhite
85
86syn keyword nanorcFGCyan        contained cyan
87                                \ nextgroup=@nanorcFGSpec skipwhite
88
89syn keyword nanorcFGBWhite      contained brightwhite
90                                \ nextgroup=@nanorcFGSpec skipwhite
91
92syn keyword nanorcFGBBlack      contained brightblack
93                                \ nextgroup=@nanorcFGSpec skipwhite
94
95syn keyword nanorcFGBRed        contained brightred
96                                \ nextgroup=@nanorcFGSpec skipwhite
97
98syn keyword nanorcFGBBlue       contained brightblue
99                                \ nextgroup=@nanorcFGSpec skipwhite
100
101syn keyword nanorcFGBGreen      contained brightgreen
102                                \ nextgroup=@nanorcFGSpec skipwhite
103
104syn keyword nanorcFGBYellow     contained brightyellow
105                                \ nextgroup=@nanorcFGSpec skipwhite
106
107syn keyword nanorcFGBMagenta    contained brightmagenta
108                                \ nextgroup=@nanorcFGSpec skipwhite
109
110syn keyword nanorcFGBCyan       contained brightcyan
111                                \ nextgroup=@nanorcFGSpec skipwhite
112
113syn cluster nanorcBGColor       contains=nanorcBGWhite,nanorcBGBlack,
114                                \ nanorcBGRed,nanorcBGBlue,nanorcBGGreen,
115                                \ nanorcBGYellow,nanorcBGMagenta,nanorcBGCyan,
116                                \ nanorcBGBWhite,nanorcBGBBlack,nanorcBGBRed,
117                                \ nanorcBGBBlue,nanorcBGBGreen,nanorcBGBYellow,
118                                \ nanorcBGBMagenta,nanorcBGBCyan
119
120syn keyword nanorcBGWhite       contained white
121                                \ nextgroup=@nanorcBGSpec skipwhite
122
123syn keyword nanorcBGBlack       contained black
124                                \ nextgroup=@nanorcBGSpec skipwhite
125
126syn keyword nanorcBGRed         contained red
127                                \ nextgroup=@nanorcBGSpec skipwhite
128
129syn keyword nanorcBGBlue        contained blue
130                                \ nextgroup=@nanorcBGSpec skipwhite
131
132syn keyword nanorcBGGreen       contained green
133                                \ nextgroup=@nanorcBGSpec skipwhite
134
135syn keyword nanorcBGYellow      contained yellow
136                                \ nextgroup=@nanorcBGSpec skipwhite
137
138syn keyword nanorcBGMagenta     contained magenta
139                                \ nextgroup=@nanorcBGSpec skipwhite
140
141syn keyword nanorcBGCyan        contained cyan
142                                \ nextgroup=@nanorcBGSpec skipwhite
143
144syn keyword nanorcBGBWhite      contained brightwhite
145                                \ nextgroup=@nanorcBGSpec skipwhite
146
147syn keyword nanorcBGBBlack      contained brightblack
148                                \ nextgroup=@nanorcBGSpec skipwhite
149
150syn keyword nanorcBGBRed        contained brightred
151                                \ nextgroup=@nanorcBGSpec skipwhite
152
153syn keyword nanorcBGBBlue       contained brightblue
154                                \ nextgroup=@nanorcBGSpec skipwhite
155
156syn keyword nanorcBGBGreen      contained brightgreen
157                                \ nextgroup=@nanorcBGSpec skipwhite
158
159syn keyword nanorcBGBYellow     contained brightyellow
160                                \ nextgroup=@nanorcBGSpec skipwhite
161
162syn keyword nanorcBGBMagenta    contained brightmagenta
163                                \ nextgroup=@nanorcBGSpec skipwhite
164
165syn keyword nanorcBGBCyan       contained brightcyan
166                                \ nextgroup=@nanorcBGSpec skipwhite
167
168syn match   nanorcBGColorSep    contained ',' nextgroup=@nanorcBGColor
169
170syn cluster nanorcFGSpec        contains=nanorcBGColorSep,nanorcRegexes,
171                                \ nanorcStartRegion
172
173syn cluster nanorcBGSpec        contains=nanorcRegexes,nanorcStartRegion
174
175syn keyword nanorcStartRegion   contained start nextgroup=nanorcStartRegionEq
176
177syn match   nanorcStartRegionEq contained '=' nextgroup=nanorcRegion
178
179syn region  nanorcRegion        contained display oneline start=+"+
180                                \ end=+"\ze\%([[:blank:]]\|$\)+
181                                \ nextgroup=nanorcEndRegion skipwhite
182
183syn keyword nanorcEndRegion     contained end nextgroup=nanorcStartRegionEq
184
185syn match   nanorcEndRegionEq   contained '=' nextgroup=nanorcRegex
186
187syn region  nanorcRegex         contained display oneline start=+"+
188                                \ end=+"\ze\%([[:blank:]]\|$\)+
189
190hi def link nanorcTodo          Todo
191hi def link nanorcComment       Comment
192hi def link nanorcKeyword       Keyword
193hi def link nanorcBoolOption    Identifier
194hi def link nanorcStringOption  Identifier
195hi def link nanorcNumberOption  Identifier
196hi def link nanorcSynGroupName  String
197hi def link nanorcString        String
198hi def link nanorcRegexes       nanorcString
199hi def link nanorcNumber        Number
200hi def      nanorcFGWhite       ctermfg=Gray guifg=Gray
201hi def      nanorcFGBlack       ctermfg=Black guifg=Black
202hi def      nanorcFGRed         ctermfg=DarkRed guifg=DarkRed
203hi def      nanorcFGBlue        ctermfg=DarkBlue guifg=DarkBlue
204hi def      nanorcFGGreen       ctermfg=DarkGreen guifg=DarkGreen
205hi def      nanorcFGYellow      ctermfg=Brown guifg=Brown
206hi def      nanorcFGMagenta     ctermfg=DarkMagenta guifg=DarkMagenta
207hi def      nanorcFGCyan        ctermfg=DarkCyan guifg=DarkCyan
208hi def      nanorcFGBWhite      ctermfg=White guifg=White
209hi def      nanorcFGBBlack      ctermfg=DarkGray guifg=DarkGray
210hi def      nanorcFGBRed        ctermfg=Red guifg=Red
211hi def      nanorcFGBBlue       ctermfg=Blue guifg=Blue
212hi def      nanorcFGBGreen      ctermfg=Green guifg=Green
213hi def      nanorcFGBYellow     ctermfg=Yellow guifg=Yellow
214hi def      nanorcFGBMagenta    ctermfg=Magenta guifg=Magenta
215hi def      nanorcFGBCyan       ctermfg=Cyan guifg=Cyan
216hi def link nanorcBGColorSep    Normal
217hi def      nanorcBGWhite       ctermbg=Gray guibg=Gray
218hi def      nanorcBGBlack       ctermbg=Black guibg=Black
219hi def      nanorcBGRed         ctermbg=DarkRed guibg=DarkRed
220hi def      nanorcBGBlue        ctermbg=DarkBlue guibg=DarkBlue
221hi def      nanorcBGGreen       ctermbg=DarkGreen guibg=DarkGreen
222hi def      nanorcBGYellow      ctermbg=Brown guibg=Brown
223hi def      nanorcBGMagenta     ctermbg=DarkMagenta guibg=DarkMagenta
224hi def      nanorcBGCyan        ctermbg=DarkCyan guibg=DarkCyan
225hi def      nanorcBGBWhite      ctermbg=White guibg=White
226hi def      nanorcBGBBlack      ctermbg=DarkGray guibg=DarkGray
227hi def      nanorcBGBRed        ctermbg=Red guibg=Red
228hi def      nanorcBGBBlue       ctermbg=Blue guibg=Blue
229hi def      nanorcBGBGreen      ctermbg=Green guibg=Green
230hi def      nanorcBGBYellow     ctermbg=Yellow guibg=Yellow
231hi def      nanorcBGBMagenta    ctermbg=Magenta guibg=Magenta
232hi def      nanorcBGBCyan       ctermbg=Cyan guibg=Cyan
233hi def link nanorcStartRegion   Type
234hi def link nanorcStartRegionEq Operator
235hi def link nanorcRegion        nanorcString
236hi def link nanorcEndRegion     Type
237hi def link nanorcEndRegionEq   Operator
238hi def link nanorcRegex         nanoRegexes
239
240let b:current_syntax = "nanorc"
241
242let &cpo = s:cpo_save
243unlet s:cpo_save
244