123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- " VIM syntax file
- " Language: nroff/groff
- " Maintainer: John Marshall <jmarshall@hey.com>
- " Previous Maintainer: Pedro Alejandro López-Valencia <palopezv@gmail.com>
- " Previous Maintainer: Jérôme Plût <Jerome.Plut@ens.fr>
- " Last Change: 2021 Mar 28
- "
- " {{{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
- if exists("nroff_is_groff")
- let b:nroff_is_groff = 1
- endif
- syn spell toplevel
- syn case match
- "
- " {{{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 preprocessor 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\>/ contains=@Spell
- syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/
- syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ contains=@Spell
- 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,@Spell
- syn match nroffComment /^'''.*/ contains=nroffTodo,@Spell
- if exists("b:nroff_is_groff")
- syn match nroffComment "\\#.*$" contains=nroffTodo,@Spell
- 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 nroffEscCharArg 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:
|