mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			250 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			250 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " VIM syntax file
 | |
| " Language:	nroff/groff
 | |
| " Maintainer:	Pedro Alejandro López-Valencia <palopezv@gmail.com>
 | |
| " URL:		http://vorbote.wordpress.com/
 | |
| " Last Change:	2012 Feb 2
 | |
| "
 | |
| " {{{1 Acknowledgements
 | |
| "
 | |
| " ACKNOWLEDGEMENTS:
 | |
| "
 | |
| " My thanks to Jérôme Plû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.
 | |
| "
 | |
| " quit when a syntax file was already loaded
 | |
| "
 | |
| if exists("b:current_syntax")
 | |
| 	finish
 | |
| endif
 | |
| 
 | |
| let s:cpo_save = &cpo
 | |
| set cpo&vim
 | |
| 
 | |
| "
 | |
| " {{{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 nroffReqArg 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.
 | |
| " Only when an item doesn't have highlighting yet
 | |
| "
 | |
| 
 | |
| hi def link nroffEscChar nroffSpecialChar
 | |
| hi def link nroffEscCharAr nroffSpecialChar
 | |
| hi def link nroffSpecialChar SpecialChar
 | |
| hi def link nroffSpace Delimiter
 | |
| 
 | |
| hi def link nroffEscRegArg2 nroffEscRegArg
 | |
| hi def link nroffEscRegArg nroffIdent
 | |
| 
 | |
| hi def link nroffEscArg2 nroffEscArg
 | |
| hi def link nroffEscPar nroffEscape
 | |
| 
 | |
| hi def link nroffEscRegPar nroffEscape
 | |
| hi def link nroffEscArg nroffEscape
 | |
| hi def link nroffSize nroffEscape
 | |
| hi def link nroffEscape Preproc
 | |
| 
 | |
| hi def link nroffIgnore Comment
 | |
| hi def link nroffComment Comment
 | |
| hi def link nroffTodo Todo
 | |
| 
 | |
| hi def link nroffReqLeader nroffRequest
 | |
| hi def link nroffReqName nroffRequest
 | |
| hi def link nroffRequest Statement
 | |
| hi def link nroffCond PreCondit
 | |
| hi def link nroffDefIdent nroffIdent
 | |
| hi def link nroffIdent Identifier
 | |
| 
 | |
| hi def link nroffEquation PreProc
 | |
| hi def link nroffTable PreProc
 | |
| hi def link nroffPicture PreProc
 | |
| hi def link nroffRefer PreProc
 | |
| hi def link nroffGrap PreProc
 | |
| hi def link nroffGremlin PreProc
 | |
| 
 | |
| hi def link nroffNumber Number
 | |
| hi def link nroffBadChar nroffError
 | |
| hi def link nroffSpaceError nroffError
 | |
| hi def link nroffError Error
 | |
| 
 | |
| hi def link nroffPreserve String
 | |
| hi def link nroffString String
 | |
| hi def link nroffDefinition String
 | |
| hi def link nroffDefSpecial Special
 | |
| 
 | |
| 
 | |
| let b:current_syntax = "nroff"
 | |
| 
 | |
| let &cpo = s:cpo_save
 | |
| unlet s:cpo_save
 | |
| " vim600: set fdm=marker fdl=2:
 | 
