143 lines
4.7 KiB
VimL
143 lines
4.7 KiB
VimL
" Vim syntax file
|
|
" Language: mom
|
|
" Maintainer: Christian V. J. Brüssow <cvjb@cvjb.de>
|
|
" Last Change: So 06 Mär 2005 17:28:13 CET
|
|
" Filenames: *.mom
|
|
" URL: http://www.cvjb.de/comp/vim/mom.vim
|
|
" Note: Remove or overwrite troff syntax for *.mom-files with filetype/filedetect.
|
|
" Version: 0.1
|
|
"
|
|
" Mom: Macro set for easy typesetting with troff/nroff/groff.
|
|
|
|
" 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
|
|
|
|
" Mom is case sensitive
|
|
syn case match
|
|
|
|
" Synchronization, I know it is a huge number, but normal texts can be
|
|
" _very_ long ;-)
|
|
syn sync lines=1000
|
|
|
|
" Characters allowed in keywords
|
|
if version >= 600
|
|
setlocal iskeyword=@,#,$,%,48-57,.,@-@,_,192-255
|
|
else
|
|
set iskeyword=@,#,$,%,48-57,.,@-@,_,192-255
|
|
endif
|
|
|
|
" Some special keywords
|
|
syn keyword momTodo contained TODO FIXME
|
|
syn keyword momDefine .de .. .ALIAS .ALIASN
|
|
|
|
" Preprocessor keywords
|
|
syn keyword momPreprocessor .EQ .EN .GS .GE .GF .PS .PE .R1 .R2 .TS .TE .TH
|
|
syn keyword momPreprocessor .G1 .G2 .IS .IE .cstart .cend
|
|
|
|
" Number Registers
|
|
syn match momNumberReg '\.#[A-Za-z][_0-9A-Za-z]*'
|
|
|
|
" String Registers
|
|
syn match momStringReg '\.\$[A-Za-z][_0-9A-Za-z]*'
|
|
|
|
" Strings
|
|
syn region momString start='"' end='"' contains=momNoLineBreak,momGreek,momInteger,momFloatEN,momFloatDE,momBracketRegion,momBracketError,momSpecialMove
|
|
|
|
" Special characters
|
|
syn match momSpecialChar '\\([-+A-Za-z0-9*<>=~!]\+'
|
|
|
|
" Greek symbols
|
|
syn match momGreek '\\(\*[A-Za-z]\+'
|
|
|
|
" Hyphenation marks
|
|
syn match momHyphenation '\\%'
|
|
|
|
" Masking of line breaks
|
|
syn match momNoLineBreak '\\\s*$'
|
|
|
|
" Numbers (with optional units)
|
|
syn match momInteger '[-+]\=[0-9]\+[iPpv]\='
|
|
syn match momFloatEN '[-+]\=[0-9]*\.[0-9]\+[iPpv]\='
|
|
syn match momFloatDE '[-+]\=[0-9]\+,[0-9]\+'
|
|
|
|
" Mom Macros
|
|
syn match momKeyword '\(^\|\s\+\)\.[A-Za-z][_0-9A-Za-z]*'
|
|
syn match momKeywordParam '\(^\|\s\+\)\.[A-Za-z][_0-9A-Za-z]*\s\+[^-\\"]\+' contains=momInteger,momFloatEN,momString,momSpecialParam
|
|
syn keyword momSpecialParam contained ON OFF T H C R I B L J N QUAD CLEAR NAMED DRAFT FINAL DEFAULT TYPESET TYPEWRITE CHAPTER BLOCK
|
|
|
|
" Brackets
|
|
syn match momBrackets '[[]]'
|
|
syn match momBracketError '\]'
|
|
syn region momBracketRegion transparent matchgroup=Delimiter start='\[' matchgroup=Delimiter end='\]' contains=ALLBUT,momBracketError
|
|
|
|
" Special movements, e.g. \*[BU<#>] or \*[BP<#>]
|
|
syn region momSpecialMove matchgroup=Delimiter start='\\\*\[' matchgroup=Delimiter end='\]' contains=ALLBUT,momBracketError
|
|
|
|
" Quotes
|
|
syn region momQuote matchgroup=momKeyword start='\<\.QUOTE\>' matchgroup=momKeyword end='\<\.QUOTE\s\+OFF\>' skip='$' contains=ALL
|
|
syn region momBlockQuote matchgroup=momKeyword start='\<\.BLOCKQUOTE\>' matchgroup=momKeyword end='\<\.BLOCKQUOTE\s\+OFF\>' skip='$' contains=ALL
|
|
syn keyword momBreakQuote .BREAK_QUOTE'
|
|
|
|
" Footnotes
|
|
syn region momFootnote matchgroup=momKeyword start='\<\.FOOTNOTE\>' matchgroup=momKeyword end='\<\.FOOTNOTE\s\+OFF\>' skip='$' contains=ALL
|
|
|
|
" Comments
|
|
syn region momCommentLine start='\(\\!\)\|\(\\"\)\|\(\\#\)' end='$' contains=momTodo
|
|
syn region momCommentRegion matchgroup=momKeyword start='\<\.\(COMMENT\)\|\(SILENT\)\>' matchgroup=momKeyword end='\<\.\(COMMENT\s\+OFF\)\|\(SILENT\s\+OFF\)\>' skip='$'
|
|
|
|
" 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_mom_syn_inits")
|
|
if version < 508
|
|
let did_mom_syn_inits = 1
|
|
command -nargs=+ HiLink hi link <args>
|
|
else
|
|
command -nargs=+ HiLink hi def link <args>
|
|
endif
|
|
|
|
" The default methods for highlighting. Can be overrriden later.
|
|
HiLink momTodo Todo
|
|
HiLink momDefine Define
|
|
HiLink momPreprocessor PreProc
|
|
HiLink momNumberReg Special
|
|
HiLink momStringReg Special
|
|
HiLink momCommentLine Comment
|
|
HiLink momCommentRegion Comment
|
|
HiLink momInteger Number
|
|
HiLink momFloatEN Number
|
|
HiLink momFloatDE Number
|
|
HiLink momString String
|
|
HiLink momHyphenation Tag
|
|
HiLink momNoLineBreak Special
|
|
HiLink momKeyword Keyword
|
|
HiLink momSpecialParam Special
|
|
HiLink momKeywordParam Keyword
|
|
|
|
HiLink momBracketError Error
|
|
HiLink momBrackets Delimiter
|
|
|
|
hi momNormal term=none cterm=none gui=none
|
|
hi momItalic term=italic cterm=italic gui=italic
|
|
hi momBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
|
|
HiLink momGreek momBoldItalic
|
|
HiLink momSpecialChar momItalic
|
|
HiLink momSpecialMove momBoldItalic
|
|
|
|
HiLink momQuote momBoldItalic
|
|
HiLink momBlockQuote momBoldItalic
|
|
HiLink momBreakQuote momNormal
|
|
|
|
HiLink momFootnote momItalic
|
|
|
|
delcommand HiLink
|
|
endif
|
|
|
|
let b:current_syntax = "mom"
|
|
|
|
" vim:ts=8:sw=4:nocindent:smartindent:
|