blob: 02d43c66d81ae26048b8aa614b59d34fa0bda6c0 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: reStructuredText Documentation Format
3" Maintainer: Nikolai Weibull <source@pcppopper.org>
4" URL: http://www.pcppopper.org/vim/syntax/pcp/rst/
5" Latest Revision: 2004-05-13
6" arch-tag: 6fae09da-d5d4-49d8-aec1-e49008ea21e6
7
8if version < 600
9 syntax clear
10elseif exists("b:current_syntax")
11 finish
12endif
13
14" todo
15syn keyword rstTodo contained FIXME TODO XXX NOTE
16
17syn case ignore
18
19" comments
20syn region rstComment matchgroup=rstComment start="^\.\.\%( \%([a-z0-9_.-]\+::\)\@!\|$\)" end="^\s\@!" contains=rstTodo
21
22syn cluster rstCruft contains=rstFootnoteLabel,rstCitationLabel,rstSubstitutionLabel,rstInline,rstHyperlinks,rstInternalTarget
23
24" blocks
25" syn region rstBlock matchgroup=rstDelimiter start=":\@<!:$" skip="^$" end="^\s\@!" contains=@rstCruft
26syn region rstBlock matchgroup=rstDelimiter start="::$" skip="^$" end="^\s\@!"
27syn region rstDoctestBlock matchgroup=rstDelimiter start="^>>>\s" end="^$"
28
29" tables
30" TODO: these may actually be a bit too complicated to match correctly and
31" should perhaps be removed. Whon really needs it anyway?
32syn region rstTable transparent start="^\n\s*+[-=+]\+" end="^$" contains=rstTableLines,@rstCruft
33syn match rstTableLines contained "^\s*[|+=-]\+$"
34syn region rstSimpleTable transparent start="^\n\s*\%(=\+\s\+\)\%(=\+\s*\)\+$" end="^$" contains=rstSimpleTableLines,@rstCruft
35syn match rstSimpleTableLines contained "^\s*\%(=\+\s\+\)\%(=\+\s*\)\+$"
36
37" footnotes
38syn region rstFootnote matchgroup=rstDirective start="^\.\. \[\%([#*]\|[0-9]\+\|#[a-z0-9_.-]\+\)\]\s" end="^\s\@!" contains=@rstCruft
39syn match rstFootnoteLabel "\[\%([#*]\|[0-9]\+\|#[a-z0-9_.-]\+\)\]_"
40
41" citations
42syn region rstCitation matchgroup=rstDirective start="^\.\. \[[a-z0-9_.-]\+\]\s" end="^\s\@!" contains=@rstCruft
43syn match rstCitationLabel "\[[a-z0-9_.-]\+\]_"
44
45" directives
46syn region rstDirectiveBody matchgroup=rstDirective start="^\.\. [a-z0-9_.-]\+::" end="^\s\@!"
47
48" substitutions
49syn region rstSubstitution matchgroup=rstDirective start="^\.\. |[a-z0-9_.-]|\s[a-z0-9_.-]\+::\s" end="^\s\@!" contains=@rstCruft
50syn match rstSubstitutionLabel "|[a-z0-9_.-]|"
51
52" inline markup
53syn match rstInline "\*\{1,2}\S\%([^*]*\S\)\=\*\{1,2}"
54syn match rstInline "`\{1,2}\S\%([^`]*\S\)\=`\{1,2}"
55
56" hyperlinks
57syn region rstHyperlinks matchgroup=RstDirective start="^\.\. _[a-z0-9_. -]\+:\s" end="^\s\@!" contains=@rstCruft
58
59syn match rstHyperlinksLabel "`\S\%([^`]*\S\)\=`__\=\>"
60syn match rstHyperlinksLabel "\w\+__\=\>"
61
62" internal targets
63syn match rstInternalTarget "_`\S\%([^`]*\S\)\=`"
64
65" lists
66syn match rstListItem "^:\%(\w\+\s*\)\+:"
67syn match rstListItem "^\s*[-*+]\s\+"
68
69syn sync minlines=50
70
71" Define the default highlighting.
72" For version 5.7 and earlier: only when not done already
73" For version 5.8 and later: only when an item doesn't have highlighting yet
74if version >= 508 || !exists("did_rst_syn_inits")
75 if version < 508
76 let did_rst_syn_inits = 1
77 command -nargs=+ HiLink hi link <args>
78 else
79 command -nargs=+ HiLink hi def link <args>
80 endif
81
82 HiLink rstTodo Todo
83 HiLink rstComment Comment
84 HiLink rstDelimiter Delimiter
85 HiLink rstBlock String
86 HiLink rstDoctestBlock PreProc
87 HiLink rstTableLines Delimiter
88 HiLink rstSimpleTableLines rstTableLines
89 HiLink rstFootnote String
90 HiLink rstFootnoteLabel Identifier
91 HiLink rstCitation String
92 HiLink rstCitationLabel Identifier
93 HiLink rstDirective Keyword
94 HiLink rstDirectiveBody Type
95 HiLink rstSubstitution String
96 HiLink rstSubstitutionLabel Identifier
97 HiLink rstHyperlinks String
98 HiLink rstHyperlinksLabel Identifier
99 HiLink rstListItem Identifier
100 hi def rstInline term=italic cterm=italic gui=italic
101 hi def rstInternalTarget term=italic cterm=italic gui=italic
102 delcommand HiLink
103endif
104
105let b:current_syntax = "rst"
106
107" vim: set sts=2 sw=2: