comparison runtime/syntax/nroff.vim @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children dc8197342755
comparison
equal deleted inserted replaced
6:c2daee826b8f 7:3fc0f57ecb91
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: 2003 May 24
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 roffReqArg 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: