1" Vim syntax file 2" Language: reStructuredText documentation format 3" Maintainer: Nikolai Weibull <[email protected]> 4" Latest Revision: 2005-07-04 5 6if exists("b:current_syntax") 7 finish 8endif 9 10let s:cpo_save = &cpo 11set cpo&vim 12 13syn keyword rstTodo contained FIXME TODO XXX NOTE 14 15syn case ignore 16 17syn region rstComment start='^\.\.\%( \%([a-z0-9_.-]\+::\)\@!\|$\)' 18 \ end='^\s\@!' contains=rstTodo 19 20syn cluster rstCruft contains=rstFootnoteLabel,rstCitationLabel, 21 \ rstSubstitutionLabel,rstInline, 22 \ rstHyperlinks,rstInternalTarget 23 24syn region rstBlock matchgroup=rstDelimiter 25 \ start='::$' skip='^$' end='^\s\@!' 26syn region rstDoctestBlock matchgroup=rstDelimiter 27 \ start='^>>>\s' end='^$' 28 29" TODO: these may actually be a bit too complicated to match correctly and 30" should perhaps be removed. We won't really needs it anyway? 31syn region rstTable transparent start='^\n\s*+[-=+]\+' end='^$' 32 \ contains=rstTableLines,@rstCruft 33syn match rstTableLines contained '^\s*[|+=-]\+$' 34syn region rstSimpleTable transparent 35 \ start='^\n\s*\%(=\+\s\+\)\%(=\+\s*\)\+$' 36 \ end='^$' 37 \ contains=rstSimpleTableLines,@rstCruft 38syn match rstSimpleTableLines contained display 39 \ '^\s*\%(=\+\s\+\)\%(=\+\s*\)\+$' 40 41syn region rstFootnote matchgroup=rstDirective 42 \ start='^\.\. \[\%([#*]\|[0-9]\+\|#[a-z0-9_.-]\+\)\]\s' 43 \ end='^\s\@!' contains=@rstCruft 44syn match rstFootnoteLabel '\[\%([#*]\|[0-9]\+\|#[a-z0-9_.-]\+\)\]_' 45 46syn region rstCitation matchgroup=rstDirective 47 \ start='^\.\. \[[a-z0-9_.-]\+\]\s' 48 \ end='^\s\@!' contains=@rstCruft 49syn match rstCitationLabel '\[[a-z0-9_.-]\+\]_' 50 51syn region rstDirectiveBody matchgroup=rstDirective 52 \ start='^\.\. [a-z0-9_.-]\+::' 53 \ end='^\s\@!' 54 55syn region rstSubstitution matchgroup=rstDirective 56 \ start='^\.\. |[a-z0-9_.-]|\s[a-z0-9_.-]\+::\s' 57 \ end='^\s\@!' contains=@rstCruft 58syn match rstSubstitutionLbl '|[a-z0-9_.-]|' 59 60syn match rstInline '\*\{1,2}\S\%([^*]*\S\)\=\*\{1,2}' 61syn match rstInline '`\{1,2}\S\%([^`]*\S\)\=`\{1,2}' 62 63syn region rstHyperlinks matchgroup=RstDirective 64 \ start='^\.\. _[a-z0-9_. -]\+:\s' 65 \ end='^\s\@!' contains=@rstCruft 66 67syn match rstHyperlinksLabel '`\S\%([^`]*\S\)\=`__\=\>' 68syn match rstHyperlinksLabel '\w\+__\=\>' 69 70syn match rstInternalTarget '_`\S\%([^`]*\S\)\=`' 71 72syn match rstListItem '^:\%(\w\+\s*\)\+:' 73syn match rstListItem '^\s*[-*+]\s\+' 74 75syn sync minlines=50 76 77hi def link rstTodo Todo 78hi def link rstComment Comment 79hi def link rstDelimiter Delimiter 80hi def link rstBlock String 81hi def link rstDoctestBlock PreProc 82hi def link rstTableLines Delimiter 83hi def link rstSimpleTableLines rstTableLines 84hi def link rstFootnote String 85hi def link rstFootnoteLabel Identifier 86hi def link rstCitation String 87hi def link rstCitationLabel Identifier 88hi def link rstDirective Keyword 89hi def link rstDirectiveBody Type 90hi def link rstSubstitution String 91hi def link rstSubstitutionLbl Identifier 92hi def link rstHyperlinks String 93hi def link rstHyperlinksLabel Identifier 94hi def link rstListItem Identifier 95hi def rstInline term=italic cterm=italic gui=italic 96hi def rstInternalTarget term=italic cterm=italic gui=italic 97 98let b:current_syntax = "rst" 99 100let &cpo = s:cpo_save 101unlet s:cpo_save 102