1" Vim syntax file 2" Language: Lout 3" Maintainer: Christian V. J. Brüssow <[email protected]> 4" Last Change: So 12 Feb 2012 15:15:03 CET 5" Filenames: *.lout,*.lt 6" URL: http://www.cvjb.de/comp/vim/lout.vim 7 8" $Id: lout.vim,v 1.4 2012/02/12 15:16:17 bruessow Exp $ 9" 10" Lout: Basser Lout document formatting system. 11 12" Many Thanks to... 13" 14" 2012-02-12: 15" Thilo Six <T.Six at gmx dot de> send a patch for cpoptions. 16" See the discussion at http://thread.gmane.org/gmane.editors.vim.devel/32151 17 18 19" quit when a syntax file was already loaded 20if exists("b:current_syntax") 21 finish 22endif 23 24let s:cpo_save=&cpo 25set cpo&vim 26 27" Lout is case sensitive 28syn case match 29 30" Synchronization, I know it is a huge number, but normal texts can be 31" _very_ long ;-) 32syn sync lines=1000 33 34" Characters allowed in keywords 35" I don't know if 128-255 are allowed in ANS-FORHT 36setlocal iskeyword=@,48-57,.,@-@,_,192-255 37 38" Some special keywords 39syn keyword loutTodo contained TODO lout Lout LOUT 40syn keyword loutDefine def macro 41 42" Some big structures 43syn keyword loutKeyword @Begin @End @Figure @Tab 44syn keyword loutKeyword @Book @Doc @Document @Report 45syn keyword loutKeyword @Introduction @Abstract @Appendix 46syn keyword loutKeyword @Chapter @Section @BeginSections @EndSections 47 48" All kind of Lout keywords 49syn match loutFunction '\<@[^ \t{}]\+\>' 50 51" Braces -- Don`t edit these lines! 52syn match loutMBraces '[{}]' 53syn match loutIBraces '[{}]' 54syn match loutBBrace '[{}]' 55syn match loutBIBraces '[{}]' 56syn match loutHeads '[{}]' 57 58" Unmatched braces. 59syn match loutBraceError '}' 60 61" End of multi-line definitions, like @Document, @Report and @Book. 62syn match loutEOmlDef '^//$' 63 64" Grouping of parameters and objects. 65syn region loutObject transparent matchgroup=Delimiter start='{' matchgroup=Delimiter end='}' contains=ALLBUT,loutBraceError 66 67" The NULL object has a special meaning 68syn keyword loutNULL {} 69 70" Comments 71syn region loutComment start='\#' end='$' contains=loutTodo 72 73" Double quotes 74syn region loutSpecial start=+"+ skip=+\\\\\|\\"+ end=+"+ 75 76" ISO-LATIN-1 characters created with @Char, or Adobe symbols 77" created with @Sym 78syn match loutSymbols '@\(\(Char\)\|\(Sym\)\)\s\+[A-Za-z]\+' 79 80" Include files 81syn match loutInclude '@IncludeGraphic\s\+\k\+' 82syn region loutInclude start='@\(\(SysInclude\)\|\(IncludeGraphic\)\|\(Include\)\)\s*{' end='}' 83 84" Tags 85syn match loutTag '@\(\(Tag\)\|\(PageMark\)\|\(PageOf\)\|\(NumberOf\)\)\s\+\k\+' 86syn region loutTag start='@Tag\s*{' end='}' 87 88" Equations 89syn match loutMath '@Eq\s\+\k\+' 90syn region loutMath matchgroup=loutMBraces start='@Eq\s*{' matchgroup=loutMBraces end='}' contains=ALLBUT,loutBraceError 91" 92" Fonts 93syn match loutItalic '@I\s\+\k\+' 94syn region loutItalic matchgroup=loutIBraces start='@I\s*{' matchgroup=loutIBraces end='}' contains=ALLBUT,loutBraceError 95syn match loutBold '@B\s\+\k\+' 96syn region loutBold matchgroup=loutBBraces start='@B\s*{' matchgroup=loutBBraces end='}' contains=ALLBUT,loutBraceError 97syn match loutBoldItalic '@BI\s\+\k\+' 98syn region loutBoldItalic matchgroup=loutBIBraces start='@BI\s*{' matchgroup=loutBIBraces end='}' contains=ALLBUT,loutBraceError 99syn region loutHeadings matchgroup=loutHeads start='@\(\(Title\)\|\(Caption\)\)\s*{' matchgroup=loutHeads end='}' contains=ALLBUT,loutBraceError 100 101" Define the default highlighting. 102" Only when an item doesn't have highlighting yet 103 104" The default methods for highlighting. Can be overrriden later. 105hi def link loutTodo Todo 106hi def link loutDefine Define 107hi def link loutEOmlDef Define 108hi def link loutFunction Function 109hi def link loutBraceError Error 110hi def link loutNULL Special 111hi def link loutComment Comment 112hi def link loutSpecial Special 113hi def link loutSymbols Character 114hi def link loutInclude Include 115hi def link loutKeyword Keyword 116hi def link loutTag Tag 117hi def link loutMath Number 118 119hi def link loutMBraces loutMath 120hi loutItalic term=italic cterm=italic gui=italic 121hi def link loutIBraces loutItalic 122hi loutBold term=bold cterm=bold gui=bold 123hi def link loutBBraces loutBold 124hi loutBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic 125hi def link loutBIBraces loutBoldItalic 126hi loutHeadings term=bold cterm=bold guifg=indianred 127hi def link loutHeads loutHeadings 128 129 130let b:current_syntax = "lout" 131 132let &cpo=s:cpo_save 133unlet s:cpo_save 134 135" vim:ts=8:sw=4:nocindent:smartindent: 136