blob: a1b4429cdec72441353bfc60c262d86df4efb120 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaar42eeac32005-06-29 22:40:58 +00002" Language: reStructuredText documentation format
3" Maintainer: Nikolai Weibull <nikolai+work.vim@bitwi.se>
4" Latest Revision: 2005-06-29
Bram Moolenaar071d4272004-06-13 20:20:40 +00005
Bram Moolenaar42eeac32005-06-29 22:40:58 +00006if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00007 finish
8endif
9
Bram Moolenaar42eeac32005-06-29 22:40:58 +000010let s:cpo_save = &cpo
11set cpo&vim
12
13syn keyword rstTodo contained FIXME TODO XXX NOTE
Bram Moolenaar071d4272004-06-13 20:20:40 +000014
15syn case ignore
16
Bram Moolenaar42eeac32005-06-29 22:40:58 +000017syn region rstComment matchgroup=rstComment
18 \ start='^\.\.\%( \%([a-z0-9_.-]\+::\)\@!\|$\)'
19 \ end='^\s\@!' contains=rstTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000020
Bram Moolenaar42eeac32005-06-29 22:40:58 +000021syn cluster rstCruft contains=rstFootnoteLabel,rstCitationLabel,
22 \ rstSubstitutionLabel,rstInline,
23 \ rstHyperlinks,rstInternalTarget
Bram Moolenaar071d4272004-06-13 20:20:40 +000024
Bram Moolenaar42eeac32005-06-29 22:40:58 +000025syn region rstBlock matchgroup=rstDelimiter
26 \ start='::$' skip='^$' end='^\s\@!'
27syn region rstDoctestBlock matchgroup=rstDelimiter
28 \ start='^>>>\s' end='^$'
Bram Moolenaar071d4272004-06-13 20:20:40 +000029
Bram Moolenaar071d4272004-06-13 20:20:40 +000030" TODO: these may actually be a bit too complicated to match correctly and
Bram Moolenaar42eeac32005-06-29 22:40:58 +000031" should perhaps be removed. We won't really needs it anyway?
32syn region rstTable transparent start='^\n\s*+[-=+]\+' end='^$'
33 \ contains=rstTableLines,@rstCruft
34syn match rstTableLines contained '^\s*[|+=-]\+$'
35syn region rstSimpleTable transparent
36 \ start='^\n\s*\%(=\+\s\+\)\%(=\+\s*\)\+$'
37 \ end='^$'
38 \ contains=rstSimpleTableLines,@rstCruft
39syn match rstSimpleTableLines contained display
40 \ '^\s*\%(=\+\s\+\)\%(=\+\s*\)\+$'
Bram Moolenaar071d4272004-06-13 20:20:40 +000041
Bram Moolenaar42eeac32005-06-29 22:40:58 +000042syn region rstFootnote matchgroup=rstDirective
43 \ start='^\.\. \[\%([#*]\|[0-9]\+\|#[a-z0-9_.-]\+\)\]\s'
44 \ end='^\s\@!' contains=@rstCruft
45syn match rstFootnoteLabel '\[\%([#*]\|[0-9]\+\|#[a-z0-9_.-]\+\)\]_'
Bram Moolenaar071d4272004-06-13 20:20:40 +000046
Bram Moolenaar42eeac32005-06-29 22:40:58 +000047syn region rstCitation matchgroup=rstDirective
48 \ start='^\.\. \[[a-z0-9_.-]\+\]\s'
49 \ end='^\s\@!' contains=@rstCruft
50syn match rstCitationLabel '\[[a-z0-9_.-]\+\]_'
Bram Moolenaar071d4272004-06-13 20:20:40 +000051
Bram Moolenaar42eeac32005-06-29 22:40:58 +000052syn region rstDirectiveBody matchgroup=rstDirective
53 \ start='^\.\. [a-z0-9_.-]\+::'
54 \ end='^\s\@!'
Bram Moolenaar071d4272004-06-13 20:20:40 +000055
Bram Moolenaar42eeac32005-06-29 22:40:58 +000056syn region rstSubstitution matchgroup=rstDirective
57 \ start='^\.\. |[a-z0-9_.-]|\s[a-z0-9_.-]\+::\s'
58 \ end='^\s\@!' contains=@rstCruft
59syn match rstSubstitutionLbl '|[a-z0-9_.-]|'
Bram Moolenaar071d4272004-06-13 20:20:40 +000060
Bram Moolenaar42eeac32005-06-29 22:40:58 +000061syn match rstInline '\*\{1,2}\S\%([^*]*\S\)\=\*\{1,2}'
62syn match rstInline '`\{1,2}\S\%([^`]*\S\)\=`\{1,2}'
Bram Moolenaar071d4272004-06-13 20:20:40 +000063
Bram Moolenaar42eeac32005-06-29 22:40:58 +000064syn region rstHyperlinks matchgroup=RstDirective
65 \ start='^\.\. _[a-z0-9_. -]\+:\s'
66 \ end='^\s\@!' contains=@rstCruft
Bram Moolenaar071d4272004-06-13 20:20:40 +000067
Bram Moolenaar42eeac32005-06-29 22:40:58 +000068syn match rstHyperlinksLabel '`\S\%([^`]*\S\)\=`__\=\>'
69syn match rstHyperlinksLabel '\w\+__\=\>'
Bram Moolenaar071d4272004-06-13 20:20:40 +000070
Bram Moolenaar42eeac32005-06-29 22:40:58 +000071syn match rstInternalTarget '_`\S\%([^`]*\S\)\=`'
Bram Moolenaar071d4272004-06-13 20:20:40 +000072
Bram Moolenaar42eeac32005-06-29 22:40:58 +000073syn match rstListItem '^:\%(\w\+\s*\)\+:'
74syn match rstListItem '^\s*[-*+]\s\+'
Bram Moolenaar071d4272004-06-13 20:20:40 +000075
76syn sync minlines=50
77
Bram Moolenaar42eeac32005-06-29 22:40:58 +000078hi def link rstTodo Todo
79hi def link rstComment Comment
80hi def link rstDelimiter Delimiter
81hi def link rstBlock String
82hi def link rstDoctestBlock PreProc
83hi def link rstTableLines Delimiter
84hi def link rstSimpleTableLines rstTableLines
85hi def link rstFootnote String
86hi def link rstFootnoteLabel Identifier
87hi def link rstCitation String
88hi def link rstCitationLabel Identifier
89hi def link rstDirective Keyword
90hi def link rstDirectiveBody Type
91hi def link rstSubstitution String
92hi def link rstSubstitutionLbl Identifier
93hi def link rstHyperlinks String
94hi def link rstHyperlinksLabel Identifier
95hi def link rstListItem Identifier
96hi def rstInline term=italic cterm=italic gui=italic
97hi def rstInternalTarget term=italic cterm=italic gui=italic
Bram Moolenaar071d4272004-06-13 20:20:40 +000098
99let b:current_syntax = "rst"
100
Bram Moolenaar42eeac32005-06-29 22:40:58 +0000101let &cpo = s:cpo_save
102unlet s:cpo_save