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