xref: /vim-8.2.3635/runtime/syntax/rst.vim (revision 0fa313a7)
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