Mercurial > hg > RemoteEditor > vim7
comparison runtime/syntax/nroff.vim @ 0:76efa0be13f1
Initial revision
author | atsuki |
---|---|
date | Sat, 10 Nov 2007 15:07:22 +0900 |
parents | |
children | 67300faee616 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:76efa0be13f1 |
---|---|
1 " VIM syntax file | |
2 " Language: nroff/groff | |
3 " Maintainer: Alejandro López-Valencia <dradul@yahoo.com> | |
4 " URL: http://dradul.tripod.com/vim | |
5 " Last Change: 2006 Apr 14 | |
6 " | |
7 " {{{1 Acknowledgements | |
8 " | |
9 " ACKNOWLEDGEMENTS: | |
10 " | |
11 " My thanks to Jérôme Plût <Jerome.Plut@ens.fr>, who was the | |
12 " creator and maintainer of this syntax file for several years. | |
13 " May I be as good at it as he has been. | |
14 " | |
15 " {{{1 Todo | |
16 " | |
17 " TODO: | |
18 " | |
19 " * Write syntax highlighting files for the preprocessors, | |
20 " and integrate with nroff.vim. | |
21 " | |
22 " | |
23 " {{{1 Start syntax highlighting. | |
24 " | |
25 " For version 5.x: Clear all syntax items | |
26 " For version 6.x: Quit when a syntax file was already loaded | |
27 " | |
28 if version < 600 | |
29 syntax clear | |
30 elseif exists("b:current_syntax") | |
31 finish | |
32 endif | |
33 | |
34 " | |
35 " {{{1 plugin settings... | |
36 " | |
37 " {{{2 enable spacing error highlighting | |
38 " | |
39 if exists("nroff_space_errors") | |
40 syn match nroffError /\s\+$/ | |
41 syn match nroffSpaceError /[.,:;!?]\s\{2,}/ | |
42 endif | |
43 " | |
44 " | |
45 " {{{1 Special file settings | |
46 " | |
47 " {{{2 ms exdented paragraphs are not in the default paragraphs list. | |
48 " | |
49 setlocal paragraphs+=XP | |
50 " | |
51 " {{{2 Activate navigation to preporcessor sections. | |
52 " | |
53 if exists("b:preprocs_as_sections") | |
54 setlocal sections=EQTSPS[\ G1GS | |
55 endif | |
56 | |
57 " {{{1 Escape sequences | |
58 " ------------------------------------------------------------ | |
59 | |
60 syn match nroffEscChar /\\[CN]/ nextgroup=nroffEscCharArg | |
61 syn match nroffEscape /\\[*fgmnYV]/ nextgroup=nroffEscRegPar,nroffEscRegArg | |
62 syn match nroffEscape /\\s[+-]\=/ nextgroup=nroffSize | |
63 syn match nroffEscape /\\[$AbDhlLRvxXZ]/ nextgroup=nroffEscPar,nroffEscArg | |
64 | |
65 syn match nroffEscRegArg /./ contained | |
66 syn match nroffEscRegArg2 /../ contained | |
67 syn match nroffEscRegPar /(/ contained nextgroup=nroffEscRegArg2 | |
68 syn match nroffEscArg /./ contained | |
69 syn match nroffEscArg2 /../ contained | |
70 syn match nroffEscPar /(/ contained nextgroup=nroffEscArg2 | |
71 syn match nroffSize /\((\d\)\=\d/ contained | |
72 | |
73 syn region nroffEscCharArg start=/'/ end=/'/ contained | |
74 syn region nroffEscArg start=/'/ end=/'/ contained contains=nroffEscape,@nroffSpecial | |
75 | |
76 if exists("b:nroff_is_groff") | |
77 syn region nroffEscRegArg matchgroup=nroffEscape start=/\[/ end=/\]/ contained oneline | |
78 syn region nroffSize matchgroup=nroffEscape start=/\[/ end=/\]/ contained | |
79 endif | |
80 | |
81 syn match nroffEscape /\\[adprtu{}]/ | |
82 syn match nroffEscape /\\$/ | |
83 syn match nroffEscape /\\\$[@*]/ | |
84 | |
85 " {{{1 Strings and special characters | |
86 " ------------------------------------------------------------ | |
87 | |
88 syn match nroffSpecialChar /\\[\\eE?!-]/ | |
89 syn match nroffSpace "\\[&%~|^0)/,]" | |
90 syn match nroffSpecialChar /\\(../ | |
91 | |
92 if exists("b:nroff_is_groff") | |
93 syn match nroffSpecialChar /\\\[[^]]*]/ | |
94 syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\?/ end=/\\?/ oneline | |
95 endif | |
96 | |
97 syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\!/ end=/$/ oneline | |
98 | |
99 syn cluster nroffSpecial contains=nroffSpecialChar,nroffSpace | |
100 | |
101 | |
102 syn region nroffString start=/"/ end=/"/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained | |
103 syn region nroffString start=/'/ end=/'/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained | |
104 | |
105 | |
106 " {{{1 Numbers and units | |
107 " ------------------------------------------------------------ | |
108 syn match nroffNumBlock /[0-9.]\a\=/ contained contains=nroffNumber | |
109 syn match nroffNumber /\d\+\(\.\d*\)\=/ contained nextgroup=nroffUnit,nroffBadChar | |
110 syn match nroffNumber /\.\d\+)/ contained nextgroup=nroffUnit,nroffBadChar | |
111 syn match nroffBadChar /./ contained | |
112 syn match nroffUnit /[icpPszmnvMu]/ contained | |
113 | |
114 | |
115 " {{{1 Requests | |
116 " ------------------------------------------------------------ | |
117 | |
118 " Requests begin with . or ' at the beginning of a line, or | |
119 " after .if or .ie. | |
120 | |
121 syn match nroffReqLeader /^[.']/ nextgroup=nroffReqName skipwhite | |
122 syn match nroffReqLeader /[.']/ contained nextgroup=nroffReqName skipwhite | |
123 | |
124 if exists("b:nroff_is_groff") | |
125 " | |
126 " GNU troff allows long request names | |
127 " | |
128 syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg | |
129 else | |
130 syn match nroffReqName /[^\t \\\[?]\{1,2}/ contained nextgroup=nroffReqArg | |
131 endif | |
132 | |
133 syn region nroffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment | |
134 | |
135 " {{{2 Conditional: .if .ie .el | |
136 syn match nroffReqName /\(if\|ie\)/ contained nextgroup=nroffCond skipwhite | |
137 syn match nroffReqName /el/ contained nextgroup=nroffReqLeader skipwhite | |
138 syn match nroffCond /\S\+/ contained nextgroup=nroffReqLeader skipwhite | |
139 | |
140 " {{{2 String definition: .ds .as | |
141 syn match nroffReqname /[da]s/ contained nextgroup=nroffDefIdent skipwhite | |
142 syn match nroffDefIdent /\S\+/ contained nextgroup=nroffDefinition skipwhite | |
143 syn region nroffDefinition matchgroup=nroffSpecialChar start=/"/ matchgroup=NONE end=/\\"/me=e-2 skip=/\\$/ start=/\S/ end=/$/ contained contains=nroffDefSpecial | |
144 syn match nroffDefSpecial /\\$/ contained | |
145 syn match nroffDefSpecial /\\\((.\)\=./ contained | |
146 | |
147 if exists("b:nroff_is_groff") | |
148 syn match nroffDefSpecial /\\\[[^]]*]/ contained | |
149 endif | |
150 | |
151 " {{{2 Macro definition: .de .am, also diversion: .di | |
152 syn match nroffReqName /\(d[ei]\|am\)/ contained nextgroup=nroffIdent skipwhite | |
153 syn match nroffIdent /[^[?( \t]\+/ contained | |
154 if exists("b:nroff_is_groff") | |
155 syn match nroffReqName /als/ contained nextgroup=nroffIdent skipwhite | |
156 endif | |
157 | |
158 " {{{2 Register definition: .rn .rr | |
159 syn match nroffReqName /[rn]r/ contained nextgroup=nroffIdent skipwhite | |
160 if exists("b:nroff_is_groff") | |
161 syn match nroffReqName /\(rnn\|aln\)/ contained nextgroup=nroffIdent skipwhite | |
162 endif | |
163 | |
164 | |
165 " {{{1 eqn/tbl/pic | |
166 " ------------------------------------------------------------ | |
167 " <jp> | |
168 " XXX: write proper syntax highlight for eqn / tbl / pic ? | |
169 " <jp /> | |
170 | |
171 syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/ | |
172 syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/ | |
173 syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/ | |
174 syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ | |
175 syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/ | |
176 syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/ | |
177 | |
178 " {{{1 Comments | |
179 " ------------------------------------------------------------ | |
180 | |
181 syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./ | |
182 syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo | |
183 syn match nroffComment /^'''.*/ contains=nroffTodo | |
184 | |
185 if exists("b:nroff_is_groff") | |
186 syn match nroffComment "\\#.*$" contains=nroffTodo | |
187 endif | |
188 | |
189 syn keyword nroffTodo TODO XXX FIXME contained | |
190 | |
191 " {{{1 Hilighting | |
192 " ------------------------------------------------------------ | |
193 " | |
194 | |
195 " | |
196 " Define the default highlighting. | |
197 " For version 5.7 and earlier: only when not done already | |
198 " For version 5.8 and later: only when an item doesn't have highlighting yet | |
199 " | |
200 if version >= 508 || !exists("did_nroff_syn_inits") | |
201 | |
202 if version < 508 | |
203 let did_nroff_syn_inits = 1 | |
204 command -nargs=+ HiLink hi link <args> | |
205 else | |
206 command -nargs=+ HiLink hi def link <args> | |
207 endif | |
208 | |
209 HiLink nroffEscChar nroffSpecialChar | |
210 HiLink nroffEscCharAr nroffSpecialChar | |
211 HiLink nroffSpecialChar SpecialChar | |
212 HiLink nroffSpace Delimiter | |
213 | |
214 HiLink nroffEscRegArg2 nroffEscRegArg | |
215 HiLink nroffEscRegArg nroffIdent | |
216 | |
217 HiLink nroffEscArg2 nroffEscArg | |
218 HiLink nroffEscPar nroffEscape | |
219 | |
220 HiLink nroffEscRegPar nroffEscape | |
221 HiLink nroffEscArg nroffEscape | |
222 HiLink nroffSize nroffEscape | |
223 HiLink nroffEscape Preproc | |
224 | |
225 HiLink nroffIgnore Comment | |
226 HiLink nroffComment Comment | |
227 HiLink nroffTodo Todo | |
228 | |
229 HiLink nroffReqLeader nroffRequest | |
230 HiLink nroffReqName nroffRequest | |
231 HiLink nroffRequest Statement | |
232 HiLink nroffCond PreCondit | |
233 HiLink nroffDefIdent nroffIdent | |
234 HiLink nroffIdent Identifier | |
235 | |
236 HiLink nroffEquation PreProc | |
237 HiLink nroffTable PreProc | |
238 HiLink nroffPicture PreProc | |
239 HiLink nroffRefer PreProc | |
240 HiLink nroffGrap PreProc | |
241 HiLink nroffGremlin PreProc | |
242 | |
243 HiLink nroffNumber Number | |
244 HiLink nroffBadChar nroffError | |
245 HiLink nroffSpaceError nroffError | |
246 HiLink nroffError Error | |
247 | |
248 HiLink nroffPreserve String | |
249 HiLink nroffString String | |
250 HiLink nroffDefinition String | |
251 HiLink nroffDefSpecial Special | |
252 | |
253 delcommand HiLink | |
254 | |
255 endif | |
256 | |
257 let b:current_syntax = "nroff" | |
258 | |
259 " vim600: set fdm=marker fdl=2: |