mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	
		
			
	
	
		
			260 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			260 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " VIM syntax file | |||
|  | " Language:	nroff/groff | |||
|  | " Maintainer:	Alejandro L<>pez-Valencia <dradul@yahoo.com> | |||
|  | " URL:		http://dradul.tripod.com/vim | |||
|  | " Last Change:	2003 May 24 | |||
|  | " | |||
|  | " {{{1 Acknowledgements | |||
|  | " | |||
|  | " ACKNOWLEDGEMENTS: | |||
|  | " | |||
|  | " My thanks to J<>r<EFBFBD>me Pl<50>t <Jerome.Plut@ens.fr>, who was the | |||
|  | " creator and maintainer of this syntax file for several years. | |||
|  | " May I be as good at it as he has been. | |||
|  | " | |||
|  | " {{{1 Todo | |||
|  | " | |||
|  | " TODO: | |||
|  | " | |||
|  | " * Write syntax highlighting files for the preprocessors, | |||
|  | "	and integrate with nroff.vim. | |||
|  | " | |||
|  | " | |||
|  | " {{{1 Start syntax highlighting. | |||
|  | " | |||
|  | " For version 5.x: Clear all syntax items | |||
|  | " For version 6.x: Quit when a syntax file was already loaded | |||
|  | " | |||
|  | if version < 600 | |||
|  | 	syntax clear | |||
|  | elseif exists("b:current_syntax") | |||
|  | 	finish | |||
|  | endif | |||
|  | 
 | |||
|  | " | |||
|  | " {{{1 plugin settings... | |||
|  | " | |||
|  | " {{{2 enable spacing error highlighting | |||
|  | " | |||
|  | if exists("nroff_space_errors") | |||
|  | 	syn match nroffError /\s\+$/ | |||
|  | 	syn match nroffSpaceError /[.,:;!?]\s\{2,}/ | |||
|  | endif | |||
|  | " | |||
|  | " | |||
|  | " {{{1 Special file settings | |||
|  | " | |||
|  | " {{{2  ms exdented paragraphs are not in the default paragraphs list. | |||
|  | " | |||
|  | setlocal paragraphs+=XP | |||
|  | " | |||
|  | " {{{2 Activate navigation to preporcessor sections. | |||
|  | " | |||
|  | if exists("b:preprocs_as_sections") | |||
|  | 	setlocal sections=EQTSPS[\ G1GS | |||
|  | endif | |||
|  | 
 | |||
|  | " {{{1 Escape sequences | |||
|  | " ------------------------------------------------------------ | |||
|  | 
 | |||
|  | syn match nroffEscChar /\\[CN]/ nextgroup=nroffEscCharArg | |||
|  | syn match nroffEscape /\\[*fgmnYV]/ nextgroup=nroffEscRegPar,nroffEscRegArg | |||
|  | syn match nroffEscape /\\s[+-]\=/ nextgroup=nroffSize | |||
|  | syn match nroffEscape /\\[$AbDhlLRvxXZ]/ nextgroup=nroffEscPar,nroffEscArg | |||
|  | 
 | |||
|  | syn match nroffEscRegArg /./ contained | |||
|  | syn match nroffEscRegArg2 /../ contained | |||
|  | syn match nroffEscRegPar /(/ contained nextgroup=nroffEscRegArg2 | |||
|  | syn match nroffEscArg /./ contained | |||
|  | syn match nroffEscArg2 /../ contained | |||
|  | syn match nroffEscPar /(/ contained nextgroup=nroffEscArg2 | |||
|  | syn match nroffSize /\((\d\)\=\d/ contained | |||
|  | 
 | |||
|  | syn region nroffEscCharArg start=/'/ end=/'/ contained | |||
|  | syn region nroffEscArg start=/'/ end=/'/ contained contains=nroffEscape,@nroffSpecial | |||
|  | 
 | |||
|  | if exists("b:nroff_is_groff") | |||
|  | 	syn region nroffEscRegArg matchgroup=nroffEscape start=/\[/ end=/\]/ contained oneline | |||
|  | 	syn region nroffSize matchgroup=nroffEscape start=/\[/ end=/\]/ contained | |||
|  | endif | |||
|  | 
 | |||
|  | syn match nroffEscape /\\[adprtu{}]/ | |||
|  | syn match nroffEscape /\\$/ | |||
|  | syn match nroffEscape /\\\$[@*]/ | |||
|  | 
 | |||
|  | " {{{1 Strings and special characters | |||
|  | " ------------------------------------------------------------ | |||
|  | 
 | |||
|  | syn match nroffSpecialChar /\\[\\eE?!-]/ | |||
|  | syn match nroffSpace "\\[&%~|^0)/,]" | |||
|  | syn match nroffSpecialChar /\\(../ | |||
|  | 
 | |||
|  | if exists("b:nroff_is_groff") | |||
|  | 	syn match nroffSpecialChar /\\\[[^]]*]/ | |||
|  | 	syn region nroffPreserve  matchgroup=nroffSpecialChar start=/\\?/ end=/\\?/ oneline | |||
|  | endif | |||
|  | 
 | |||
|  | syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\!/ end=/$/ oneline | |||
|  | 
 | |||
|  | syn cluster nroffSpecial contains=nroffSpecialChar,nroffSpace | |||
|  | 
 | |||
|  | 
 | |||
|  | syn region nroffString start=/"/ end=/"/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained | |||
|  | syn region nroffString start=/'/ end=/'/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained | |||
|  | 
 | |||
|  | 
 | |||
|  | " {{{1 Numbers and units | |||
|  | " ------------------------------------------------------------ | |||
|  | syn match nroffNumBlock /[0-9.]\a\=/ contained contains=nroffNumber | |||
|  | syn match nroffNumber /\d\+\(\.\d*\)\=/ contained nextgroup=nroffUnit,nroffBadChar | |||
|  | syn match nroffNumber /\.\d\+)/ contained nextgroup=nroffUnit,nroffBadChar | |||
|  | syn match nroffBadChar /./ contained | |||
|  | syn match nroffUnit /[icpPszmnvMu]/ contained | |||
|  | 
 | |||
|  | 
 | |||
|  | " {{{1 Requests | |||
|  | " ------------------------------------------------------------ | |||
|  | 
 | |||
|  | " Requests begin with . or ' at the beginning of a line, or | |||
|  | " after .if or .ie. | |||
|  | 
 | |||
|  | syn match nroffReqLeader /^[.']/	nextgroup=nroffReqName skipwhite | |||
|  | syn match nroffReqLeader /[.']/	contained nextgroup=nroffReqName skipwhite | |||
|  | 
 | |||
|  | if exists("b:nroff_is_groff") | |||
|  | " | |||
|  | " GNU troff allows long request names | |||
|  | " | |||
|  | syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg | |||
|  | else | |||
|  | 	syn match nroffReqName /[^\t \\\[?]\{1,2}/ contained nextgroup=nroffReqArg | |||
|  | endif | |||
|  | 
 | |||
|  | syn region roffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment | |||
|  | 
 | |||
|  | " {{{2 Conditional: .if .ie .el | |||
|  | syn match nroffReqName /\(if\|ie\)/ contained nextgroup=nroffCond skipwhite | |||
|  | syn match nroffReqName /el/ contained nextgroup=nroffReqLeader skipwhite | |||
|  | syn match nroffCond /\S\+/ contained nextgroup=nroffReqLeader skipwhite | |||
|  | 
 | |||
|  | " {{{2 String definition: .ds .as | |||
|  | syn match nroffReqname /[da]s/ contained nextgroup=nroffDefIdent skipwhite | |||
|  | syn match nroffDefIdent /\S\+/ contained nextgroup=nroffDefinition skipwhite | |||
|  | syn region nroffDefinition matchgroup=nroffSpecialChar start=/"/ matchgroup=NONE end=/\\"/me=e-2 skip=/\\$/ start=/\S/ end=/$/ contained contains=nroffDefSpecial | |||
|  | syn match nroffDefSpecial /\\$/ contained | |||
|  | syn match nroffDefSpecial /\\\((.\)\=./ contained | |||
|  | 
 | |||
|  | if exists("b:nroff_is_groff") | |||
|  | 	syn match nroffDefSpecial /\\\[[^]]*]/ contained | |||
|  | endif | |||
|  | 
 | |||
|  | " {{{2 Macro definition: .de .am, also diversion: .di | |||
|  | syn match nroffReqName /\(d[ei]\|am\)/ contained nextgroup=nroffIdent skipwhite | |||
|  | syn match nroffIdent /[^[?( \t]\+/ contained | |||
|  | if exists("b:nroff_is_groff") | |||
|  | 	syn match nroffReqName /als/ contained nextgroup=nroffIdent skipwhite | |||
|  | endif | |||
|  | 
 | |||
|  | " {{{2 Register definition: .rn .rr | |||
|  | syn match nroffReqName /[rn]r/ contained nextgroup=nroffIdent skipwhite | |||
|  | if exists("b:nroff_is_groff") | |||
|  | 	syn match nroffReqName /\(rnn\|aln\)/ contained nextgroup=nroffIdent skipwhite | |||
|  | endif | |||
|  | 
 | |||
|  | 
 | |||
|  | " {{{1 eqn/tbl/pic | |||
|  | " ------------------------------------------------------------ | |||
|  | " <jp> | |||
|  | " XXX: write proper syntax highlight for eqn / tbl / pic ? | |||
|  | " <jp /> | |||
|  | 
 | |||
|  | syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/ | |||
|  | syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/ | |||
|  | syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/ | |||
|  | syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ | |||
|  | syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/ | |||
|  | syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/ | |||
|  | 
 | |||
|  | " {{{1 Comments | |||
|  | " ------------------------------------------------------------ | |||
|  | 
 | |||
|  | syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./ | |||
|  | syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo | |||
|  | syn match nroffComment /^'''.*/  contains=nroffTodo | |||
|  | 
 | |||
|  | if exists("b:nroff_is_groff") | |||
|  | 	syn match nroffComment "\\#.*$" contains=nroffTodo | |||
|  | endif | |||
|  | 
 | |||
|  | syn keyword nroffTodo TODO XXX FIXME contained | |||
|  | 
 | |||
|  | " {{{1 Hilighting | |||
|  | " ------------------------------------------------------------ | |||
|  | " | |||
|  | 
 | |||
|  | " | |||
|  | " Define the default highlighting. | |||
|  | " For version 5.7 and earlier: only when not done already | |||
|  | " For version 5.8 and later: only when an item doesn't have highlighting yet | |||
|  | " | |||
|  | if version >= 508 || !exists("did_nroff_syn_inits") | |||
|  | 
 | |||
|  | 	if version < 508 | |||
|  | 		let did_nroff_syn_inits = 1 | |||
|  | 		command -nargs=+ HiLink hi link <args> | |||
|  | 	else | |||
|  | 		command -nargs=+ HiLink hi def link <args> | |||
|  | 	endif | |||
|  | 
 | |||
|  | 	HiLink nroffEscChar nroffSpecialChar | |||
|  | 	HiLink nroffEscCharAr nroffSpecialChar | |||
|  | 	HiLink nroffSpecialChar SpecialChar | |||
|  | 	HiLink nroffSpace Delimiter | |||
|  | 
 | |||
|  | 	HiLink nroffEscRegArg2 nroffEscRegArg | |||
|  | 	HiLink nroffEscRegArg nroffIdent | |||
|  | 
 | |||
|  | 	HiLink nroffEscArg2 nroffEscArg | |||
|  | 	HiLink nroffEscPar nroffEscape | |||
|  | 
 | |||
|  | 	HiLink nroffEscRegPar nroffEscape | |||
|  | 	HiLink nroffEscArg nroffEscape | |||
|  | 	HiLink nroffSize nroffEscape | |||
|  | 	HiLink nroffEscape Preproc | |||
|  | 
 | |||
|  | 	HiLink nroffIgnore Comment | |||
|  | 	HiLink nroffComment Comment | |||
|  | 	HiLink nroffTodo Todo | |||
|  | 
 | |||
|  | 	HiLink nroffReqLeader nroffRequest | |||
|  | 	HiLink nroffReqName nroffRequest | |||
|  | 	HiLink nroffRequest Statement | |||
|  | 	HiLink nroffCond PreCondit | |||
|  | 	HiLink nroffDefIdent nroffIdent | |||
|  | 	HiLink nroffIdent Identifier | |||
|  | 
 | |||
|  | 	HiLink nroffEquation PreProc | |||
|  | 	HiLink nroffTable PreProc | |||
|  | 	HiLink nroffPicture PreProc | |||
|  | 	HiLink nroffRefer PreProc | |||
|  | 	HiLink nroffGrap PreProc | |||
|  | 	HiLink nroffGremlin PreProc | |||
|  | 
 | |||
|  | 	HiLink nroffNumber Number | |||
|  | 	HiLink nroffBadChar nroffError | |||
|  | 	HiLink nroffSpaceError nroffError | |||
|  | 	HiLink nroffError Error | |||
|  | 
 | |||
|  | 	HiLink nroffPreserve String | |||
|  | 	HiLink nroffString String | |||
|  | 	HiLink nroffDefinition String | |||
|  | 	HiLink nroffDefSpecial Special | |||
|  | 
 | |||
|  | 	delcommand HiLink | |||
|  | 
 | |||
|  | endif | |||
|  | 
 | |||
|  | let b:current_syntax = "nroff" | |||
|  | 
 | |||
|  | " vim600: set fdm=marker fdl=2: |