blob: 70ec47ed5f4da73245744c5abbb98327f3931e55 [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>
Bram Moolenaar899dddf2006-03-26 21:06:50 +00004" Latest Revision: 2006-03-26
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 Moolenaar0dc065e2005-07-04 22:49:24 +000017syn region rstComment start='^\.\.\%( \%([a-z0-9_.-]\+::\)\@!\|$\)'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000018 \ end='^\s\@!' contains=rstTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000019
Bram Moolenaar42eeac32005-06-29 22:40:58 +000020syn cluster rstCruft contains=rstFootnoteLabel,rstCitationLabel,
21 \ rstSubstitutionLabel,rstInline,
22 \ rstHyperlinks,rstInternalTarget
Bram Moolenaar071d4272004-06-13 20:20:40 +000023
Bram Moolenaar42eeac32005-06-29 22:40:58 +000024syn region rstBlock matchgroup=rstDelimiter
25 \ start='::$' skip='^$' end='^\s\@!'
26syn region rstDoctestBlock matchgroup=rstDelimiter
27 \ start='^>>>\s' end='^$'
Bram Moolenaar071d4272004-06-13 20:20:40 +000028
Bram Moolenaar071d4272004-06-13 20:20:40 +000029" TODO: these may actually be a bit too complicated to match correctly and
Bram Moolenaar42eeac32005-06-29 22:40:58 +000030" 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
Bram Moolenaar899dddf2006-03-26 21:06:50 +000035 \ start='^\n\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000036 \ end='^$'
37 \ contains=rstSimpleTableLines,@rstCruft
38syn match rstSimpleTableLines contained display
Bram Moolenaar899dddf2006-03-26 21:06:50 +000039 \ '^\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$'
Bram Moolenaar071d4272004-06-13 20:20:40 +000040
Bram Moolenaar42eeac32005-06-29 22:40:58 +000041syn 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_.-]\+\)\]_'
Bram Moolenaar071d4272004-06-13 20:20:40 +000045
Bram Moolenaar42eeac32005-06-29 22:40:58 +000046syn region rstCitation matchgroup=rstDirective
47 \ start='^\.\. \[[a-z0-9_.-]\+\]\s'
48 \ end='^\s\@!' contains=@rstCruft
49syn match rstCitationLabel '\[[a-z0-9_.-]\+\]_'
Bram Moolenaar071d4272004-06-13 20:20:40 +000050
Bram Moolenaar42eeac32005-06-29 22:40:58 +000051syn region rstDirectiveBody matchgroup=rstDirective
52 \ start='^\.\. [a-z0-9_.-]\+::'
53 \ end='^\s\@!'
Bram Moolenaar071d4272004-06-13 20:20:40 +000054
Bram Moolenaar42eeac32005-06-29 22:40:58 +000055syn 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_.-]|'
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
Bram Moolenaar42eeac32005-06-29 22:40:58 +000060syn match rstInline '\*\{1,2}\S\%([^*]*\S\)\=\*\{1,2}'
61syn match rstInline '`\{1,2}\S\%([^`]*\S\)\=`\{1,2}'
Bram Moolenaar071d4272004-06-13 20:20:40 +000062
Bram Moolenaar42eeac32005-06-29 22:40:58 +000063syn region rstHyperlinks matchgroup=RstDirective
64 \ start='^\.\. _[a-z0-9_. -]\+:\s'
65 \ end='^\s\@!' contains=@rstCruft
Bram Moolenaar071d4272004-06-13 20:20:40 +000066
Bram Moolenaar42eeac32005-06-29 22:40:58 +000067syn match rstHyperlinksLabel '`\S\%([^`]*\S\)\=`__\=\>'
68syn match rstHyperlinksLabel '\w\+__\=\>'
Bram Moolenaar071d4272004-06-13 20:20:40 +000069
Bram Moolenaar42eeac32005-06-29 22:40:58 +000070syn match rstInternalTarget '_`\S\%([^`]*\S\)\=`'
Bram Moolenaar071d4272004-06-13 20:20:40 +000071
Bram Moolenaar899dddf2006-03-26 21:06:50 +000072syn match rstListItem '^:\w\+\%(\s\+\w\+\)*:'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000073syn match rstListItem '^\s*[-*+]\s\+'
Bram Moolenaar071d4272004-06-13 20:20:40 +000074
75syn sync minlines=50
76
Bram Moolenaar42eeac32005-06-29 22:40:58 +000077hi 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000097
98let b:current_syntax = "rst"
99
Bram Moolenaar42eeac32005-06-29 22:40:58 +0000100let &cpo = s:cpo_save
101unlet s:cpo_save