xref: /vim-8.2.3635/runtime/syntax/nroff.vim (revision 89bcfda6)
1" VIM syntax file
2" Language:	nroff/groff
3" Maintainer:	Pedro Alejandro L�pez-Valencia <[email protected]>
4" URL:		http://vorbote.wordpress.com/
5" Last Change:	2012 Feb 2
6"
7" {{{1 Acknowledgements
8"
9" ACKNOWLEDGEMENTS:
10"
11" My thanks to J�r�me Pl�t <[email protected]>, 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" quit when a syntax file was already loaded
26"
27if exists("b:current_syntax")
28	finish
29endif
30
31let s:cpo_save = &cpo
32set cpo&vim
33
34"
35" {{{1 plugin settings...
36"
37" {{{2 enable spacing error highlighting
38"
39if exists("nroff_space_errors")
40	syn match nroffError /\s\+$/
41	syn match nroffSpaceError /[.,:;!?]\s\{2,}/
42endif
43"
44"
45" {{{1 Special file settings
46"
47" {{{2  ms exdented paragraphs are not in the default paragraphs list.
48"
49setlocal paragraphs+=XP
50"
51" {{{2 Activate navigation to preporcessor sections.
52"
53if exists("b:preprocs_as_sections")
54	setlocal sections=EQTSPS[\ G1GS
55endif
56
57" {{{1 Escape sequences
58" ------------------------------------------------------------
59
60syn match nroffEscChar /\\[CN]/ nextgroup=nroffEscCharArg
61syn match nroffEscape /\\[*fgmnYV]/ nextgroup=nroffEscRegPar,nroffEscRegArg
62syn match nroffEscape /\\s[+-]\=/ nextgroup=nroffSize
63syn match nroffEscape /\\[$AbDhlLRvxXZ]/ nextgroup=nroffEscPar,nroffEscArg
64
65syn match nroffEscRegArg /./ contained
66syn match nroffEscRegArg2 /../ contained
67syn match nroffEscRegPar /(/ contained nextgroup=nroffEscRegArg2
68syn match nroffEscArg /./ contained
69syn match nroffEscArg2 /../ contained
70syn match nroffEscPar /(/ contained nextgroup=nroffEscArg2
71syn match nroffSize /\((\d\)\=\d/ contained
72
73syn region nroffEscCharArg start=/'/ end=/'/ contained
74syn region nroffEscArg start=/'/ end=/'/ contained contains=nroffEscape,@nroffSpecial
75
76if exists("b:nroff_is_groff")
77	syn region nroffEscRegArg matchgroup=nroffEscape start=/\[/ end=/\]/ contained oneline
78	syn region nroffSize matchgroup=nroffEscape start=/\[/ end=/\]/ contained
79endif
80
81syn match nroffEscape /\\[adprtu{}]/
82syn match nroffEscape /\\$/
83syn match nroffEscape /\\\$[@*]/
84
85" {{{1 Strings and special characters
86" ------------------------------------------------------------
87
88syn match nroffSpecialChar /\\[\\eE?!-]/
89syn match nroffSpace "\\[&%~|^0)/,]"
90syn match nroffSpecialChar /\\(../
91
92if exists("b:nroff_is_groff")
93	syn match nroffSpecialChar /\\\[[^]]*]/
94	syn region nroffPreserve  matchgroup=nroffSpecialChar start=/\\?/ end=/\\?/ oneline
95endif
96
97syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\!/ end=/$/ oneline
98
99syn cluster nroffSpecial contains=nroffSpecialChar,nroffSpace
100
101
102syn region nroffString start=/"/ end=/"/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained
103syn region nroffString start=/'/ end=/'/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained
104
105
106" {{{1 Numbers and units
107" ------------------------------------------------------------
108syn match nroffNumBlock /[0-9.]\a\=/ contained contains=nroffNumber
109syn match nroffNumber /\d\+\(\.\d*\)\=/ contained nextgroup=nroffUnit,nroffBadChar
110syn match nroffNumber /\.\d\+)/ contained nextgroup=nroffUnit,nroffBadChar
111syn match nroffBadChar /./ contained
112syn 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
121syn match nroffReqLeader /^[.']/	nextgroup=nroffReqName skipwhite
122syn match nroffReqLeader /[.']/	contained nextgroup=nroffReqName skipwhite
123
124if exists("b:nroff_is_groff")
125"
126" GNU troff allows long request names
127"
128	syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg
129else
130	syn match nroffReqName /[^\t \\\[?]\{1,2}/ contained nextgroup=nroffReqArg
131endif
132
133syn region nroffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment
134
135" {{{2 Conditional: .if .ie .el
136syn match nroffReqName /\(if\|ie\)/ contained nextgroup=nroffCond skipwhite
137syn match nroffReqName /el/ contained nextgroup=nroffReqLeader skipwhite
138syn match nroffCond /\S\+/ contained nextgroup=nroffReqLeader skipwhite
139
140" {{{2 String definition: .ds .as
141syn match nroffReqname /[da]s/ contained nextgroup=nroffDefIdent skipwhite
142syn match nroffDefIdent /\S\+/ contained nextgroup=nroffDefinition skipwhite
143syn region nroffDefinition matchgroup=nroffSpecialChar start=/"/ matchgroup=NONE end=/\\"/me=e-2 skip=/\\$/ start=/\S/ end=/$/ contained contains=nroffDefSpecial
144syn match nroffDefSpecial /\\$/ contained
145syn match nroffDefSpecial /\\\((.\)\=./ contained
146
147if exists("b:nroff_is_groff")
148	syn match nroffDefSpecial /\\\[[^]]*]/ contained
149endif
150
151" {{{2 Macro definition: .de .am, also diversion: .di
152syn match nroffReqName /\(d[ei]\|am\)/ contained nextgroup=nroffIdent skipwhite
153syn match nroffIdent /[^[?( \t]\+/ contained
154if exists("b:nroff_is_groff")
155	syn match nroffReqName /als/ contained nextgroup=nroffIdent skipwhite
156endif
157
158" {{{2 Register definition: .rn .rr
159syn match nroffReqName /[rn]r/ contained nextgroup=nroffIdent skipwhite
160if exists("b:nroff_is_groff")
161	syn match nroffReqName /\(rnn\|aln\)/ contained nextgroup=nroffIdent skipwhite
162endif
163
164
165" {{{1 eqn/tbl/pic
166" ------------------------------------------------------------
167" <jp>
168" XXX: write proper syntax highlight for eqn / tbl / pic ?
169" <jp />
170
171syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/
172syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/
173syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/
174syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/
175syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/
176syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/
177
178" {{{1 Comments
179" ------------------------------------------------------------
180
181syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./
182syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo
183syn match nroffComment /^'''.*/  contains=nroffTodo
184
185if exists("b:nroff_is_groff")
186	syn match nroffComment "\\#.*$" contains=nroffTodo
187endif
188
189syn keyword nroffTodo TODO XXX FIXME contained
190
191" {{{1 Hilighting
192" ------------------------------------------------------------
193"
194
195"
196" Define the default highlighting.
197" Only when an item doesn't have highlighting yet
198"
199command -nargs=+ HiLink hi def link <args>
200
201HiLink nroffEscChar nroffSpecialChar
202HiLink nroffEscCharAr nroffSpecialChar
203HiLink nroffSpecialChar SpecialChar
204HiLink nroffSpace Delimiter
205
206HiLink nroffEscRegArg2 nroffEscRegArg
207HiLink nroffEscRegArg nroffIdent
208
209HiLink nroffEscArg2 nroffEscArg
210HiLink nroffEscPar nroffEscape
211
212HiLink nroffEscRegPar nroffEscape
213HiLink nroffEscArg nroffEscape
214HiLink nroffSize nroffEscape
215HiLink nroffEscape Preproc
216
217HiLink nroffIgnore Comment
218HiLink nroffComment Comment
219HiLink nroffTodo Todo
220
221HiLink nroffReqLeader nroffRequest
222HiLink nroffReqName nroffRequest
223HiLink nroffRequest Statement
224HiLink nroffCond PreCondit
225HiLink nroffDefIdent nroffIdent
226HiLink nroffIdent Identifier
227
228HiLink nroffEquation PreProc
229HiLink nroffTable PreProc
230HiLink nroffPicture PreProc
231HiLink nroffRefer PreProc
232HiLink nroffGrap PreProc
233HiLink nroffGremlin PreProc
234
235HiLink nroffNumber Number
236HiLink nroffBadChar nroffError
237HiLink nroffSpaceError nroffError
238HiLink nroffError Error
239
240HiLink nroffPreserve String
241HiLink nroffString String
242HiLink nroffDefinition String
243HiLink nroffDefSpecial Special
244
245delcommand HiLink
246
247let b:current_syntax = "nroff"
248
249let &cpo = s:cpo_save
250unlet s:cpo_save
251" vim600: set fdm=marker fdl=2:
252