Bram Moolenaar | d1caa94 | 2020-04-10 22:10:56 +0200 | [diff] [blame] | 1 | " Vim reST syntax file |
Bram Moolenaar | 7d76c80 | 2014-10-15 22:51:52 +0200 | [diff] [blame] | 2 | " Language: reStructuredText documentation format |
| 3 | " Maintainer: Marshall Ward <marshall.ward@gmail.com> |
Bram Moolenaar | 7b61a54 | 2014-08-23 15:31:19 +0200 | [diff] [blame] | 4 | " Previous Maintainer: Nikolai Weibull <now@bitwi.se> |
Bram Moolenaar | 7571d55 | 2016-08-18 22:54:46 +0200 | [diff] [blame] | 5 | " Website: https://github.com/marshallward/vim-restructuredtext |
Bram Moolenaar | d1caa94 | 2020-04-10 22:10:56 +0200 | [diff] [blame] | 6 | " Latest Revision: 2020-03-31 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 7 | |
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 8 | if exists("b:current_syntax") |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 9 | finish |
| 10 | endif |
| 11 | |
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 12 | let s:cpo_save = &cpo |
| 13 | set cpo&vim |
| 14 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 15 | syn case ignore |
| 16 | |
Bram Moolenaar | 5c73622 | 2010-01-06 20:54:52 +0100 | [diff] [blame] | 17 | syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 18 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 19 | syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis, |
| 20 | \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference, |
| 21 | \ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 22 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 23 | syn region rstLiteralBlock matchgroup=rstDelimiter |
Bram Moolenaar | d1caa94 | 2020-04-10 22:10:56 +0200 | [diff] [blame] | 24 | \ start='\(^\z(\s*\).*\)\@<=::\n\s*\n' skip='^\s*$' end='^\(\z1\s\+\)\@!' |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 25 | \ contains=@NoSpell |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 26 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 27 | syn region rstQuotedLiteralBlock matchgroup=rstDelimiter |
| 28 | \ start="::\_s*\n\ze\z([!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]\)" |
| 29 | \ end='^\z1\@!' contains=@NoSpell |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 30 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 31 | syn region rstDoctestBlock oneline display matchgroup=rstDelimiter |
| 32 | \ start='^>>>\s' end='^$' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 33 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 34 | syn region rstTable transparent start='^\n\s*+[-=+]\+' end='^$' |
| 35 | \ contains=rstTableLines,@rstCruft |
| 36 | syn match rstTableLines contained display '|\|+\%(=\+\|-\+\)\=' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 37 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 38 | syn region rstSimpleTable transparent |
| 39 | \ start='^\n\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$' |
| 40 | \ end='^$' |
| 41 | \ contains=rstSimpleTableLines,@rstCruft |
| 42 | syn match rstSimpleTableLines contained display |
| 43 | \ '^\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$' |
| 44 | syn match rstSimpleTableLines contained display |
| 45 | \ '^\%(\s*\)\@>\%(\%(-\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(-\+\)\@>\%(\s*\)\@>\)\+\)\@>$' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 46 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 47 | syn cluster rstDirectives contains=rstFootnote,rstCitation, |
| 48 | \ rstHyperlinkTarget,rstExDirective |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 49 | |
Bram Moolenaar | 7b61a54 | 2014-08-23 15:31:19 +0200 | [diff] [blame] | 50 | syn match rstExplicitMarkup '^\s*\.\.\_s' |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 51 | \ nextgroup=@rstDirectives,rstComment,rstSubstitutionDefinition |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 52 | |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 53 | " "Simple reference names are single words consisting of alphanumerics plus |
| 54 | " isolated (no two adjacent) internal hyphens, underscores, periods, colons |
| 55 | " and plus signs." |
| 56 | let s:ReferenceName = '[[:alnum:]]\%([-_.:+]\?[[:alnum:]]\+\)*' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 57 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 58 | syn keyword rstTodo contained FIXME TODO XXX NOTE |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 59 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 60 | execute 'syn region rstComment contained' . |
| 61 | \ ' start=/.*/' |
Bram Moolenaar | 4c05fa0 | 2019-01-01 15:32:17 +0100 | [diff] [blame] | 62 | \ ' skip=+^$+' . |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 63 | \ ' end=/^\s\@!/ contains=rstTodo' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 64 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 65 | execute 'syn region rstFootnote contained matchgroup=rstDirective' . |
| 66 | \ ' start=+\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]\_s+' . |
| 67 | \ ' skip=+^$+' . |
| 68 | \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell' |
| 69 | |
| 70 | execute 'syn region rstCitation contained matchgroup=rstDirective' . |
| 71 | \ ' start=+\[' . s:ReferenceName . '\]\_s+' . |
| 72 | \ ' skip=+^$+' . |
| 73 | \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell' |
| 74 | |
| 75 | syn region rstHyperlinkTarget contained matchgroup=rstDirective |
| 76 | \ start='_\%(_\|[^:\\]*\%(\\.[^:\\]*\)*\):\_s' skip=+^$+ end=+^\s\@!+ |
| 77 | |
| 78 | syn region rstHyperlinkTarget contained matchgroup=rstDirective |
| 79 | \ start='_`[^`\\]*\%(\\.[^`\\]*\)*`:\_s' skip=+^$+ end=+^\s\@!+ |
| 80 | |
| 81 | syn region rstHyperlinkTarget matchgroup=rstDirective |
| 82 | \ start=+^__\_s+ skip=+^$+ end=+^\s\@!+ |
| 83 | |
| 84 | execute 'syn region rstExDirective contained matchgroup=rstDirective' . |
| 85 | \ ' start=+' . s:ReferenceName . '::\_s+' . |
| 86 | \ ' skip=+^$+' . |
Bram Moolenaar | 12969c0 | 2015-09-08 23:36:10 +0200 | [diff] [blame] | 87 | \ ' end=+^\s\@!+ contains=@rstCruft,rstLiteralBlock' |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 88 | |
| 89 | execute 'syn match rstSubstitutionDefinition contained' . |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 90 | \ ' /|.*|\_s\+/ nextgroup=@rstDirectives' |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 91 | |
| 92 | function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right) |
Bram Moolenaar | d1caa94 | 2020-04-10 22:10:56 +0200 | [diff] [blame] | 93 | " Only escape the first char of a multichar delimiter (e.g. \* inside **) |
| 94 | if a:start[0] == '\' |
| 95 | let first = a:start[0:1] |
| 96 | else |
| 97 | let first = a:start[0] |
| 98 | endif |
| 99 | |
| 100 | execute 'syn match rstEscape'.a:name.' +\\\\\|\\'.first.'+'.' contained' |
| 101 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 102 | execute 'syn region rst' . a:name . |
| 103 | \ ' start=+' . a:char_left . '\zs' . a:start . |
Bram Moolenaar | 2539402 | 2007-05-10 19:06:20 +0000 | [diff] [blame] | 104 | \ '\ze[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' . |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 105 | \ a:middle . |
Bram Moolenaar | d1caa94 | 2020-04-10 22:10:56 +0200 | [diff] [blame] | 106 | \ ' end=+' . a:end . '\ze\%($\|\s\|[''"’)\]}>/:.,;!?\\-]\)+' . |
| 107 | \ ' contains=rstEscape' . a:name |
| 108 | |
| 109 | execute 'hi def link rstEscape'.a:name.' Special' |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 110 | endfunction |
| 111 | |
| 112 | function! s:DefineInlineMarkup(name, start, middle, end) |
| 113 | let middle = a:middle != "" ? |
Bram Moolenaar | d1caa94 | 2020-04-10 22:10:56 +0200 | [diff] [blame] | 114 | \ (' skip=+\\\\\|\\' . a:middle . '\|\s' . a:middle . '+') : |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 115 | \ "" |
| 116 | |
| 117 | call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, "'", "'") |
Bram Moolenaar | 7b61a54 | 2014-08-23 15:31:19 +0200 | [diff] [blame] | 118 | call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '"', '"') |
| 119 | call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '(', ')') |
| 120 | call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\[', '\]') |
| 121 | call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '{', '}') |
| 122 | call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '<', '>') |
Bram Moolenaar | 7571d55 | 2016-08-18 22:54:46 +0200 | [diff] [blame] | 123 | call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '’', '’') |
| 124 | " TODO: Additional Unicode Pd, Po, Pi, Pf, Ps characters |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 125 | |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 126 | call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\%(^\|\s\|\%ua0\|[/:]\)', '') |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 127 | |
| 128 | execute 'syn match rst' . a:name . |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 129 | \ ' +\%(^\|\s\|\%ua0\|[''"([{</:]\)\zs' . a:start . |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 130 | \ '[^[:space:]' . a:start[strlen(a:start) - 1] . ']' |
| 131 | \ a:end . '\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+' |
| 132 | |
| 133 | execute 'hi def link rst' . a:name . 'Delimiter' . ' rst' . a:name |
| 134 | endfunction |
| 135 | |
| 136 | call s:DefineInlineMarkup('Emphasis', '\*', '\*', '\*') |
| 137 | call s:DefineInlineMarkup('StrongEmphasis', '\*\*', '\*', '\*\*') |
| 138 | call s:DefineInlineMarkup('InterpretedTextOrHyperlinkReference', '`', '`', '`_\{0,2}') |
| 139 | call s:DefineInlineMarkup('InlineLiteral', '``', "", '``') |
| 140 | call s:DefineInlineMarkup('SubstitutionReference', '|', '|', '|_\{0,2}') |
| 141 | call s:DefineInlineMarkup('InlineInternalTargets', '_`', '`', '`') |
| 142 | |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 143 | " Sections are identified through their titles, which are marked up with |
| 144 | " adornment: "underlines" below the title text, or underlines and matching |
| 145 | " "overlines" above the title. An underline/overline is a single repeated |
| 146 | " punctuation character that begins in column 1 and forms a line extending at |
| 147 | " least as far as the right edge of the title text. |
| 148 | " |
| 149 | " It is difficult to count characters in a regex, but we at least special-case |
| 150 | " the case where the title has at least three characters to require the |
| 151 | " adornment to have at least three characters as well, in order to handle |
| 152 | " properly the case of a literal block: |
| 153 | " |
| 154 | " this is the end of a paragraph |
| 155 | " :: |
| 156 | " this is a literal block |
| 157 | syn match rstSections "\v^%(([=`:.'"~^_*+#-])\1+\n)?.{1,2}\n([=`:.'"~^_*+#-])\2+$" |
| 158 | \ contains=@Spell |
| 159 | syn match rstSections "\v^%(([=`:.'"~^_*+#-])\1{2,}\n)?.{3,}\n([=`:.'"~^_*+#-])\2{2,}$" |
| 160 | \ contains=@Spell |
Bram Moolenaar | 345efa0 | 2016-01-15 20:57:49 +0100 | [diff] [blame] | 161 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 162 | " TODO: Can’t remember why these two can’t be defined like the ones above. |
| 163 | execute 'syn match rstFootnoteReference contains=@NoSpell' . |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 164 | \ ' +\%(\s\|^\)\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]_+' |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 165 | |
| 166 | execute 'syn match rstCitationReference contains=@NoSpell' . |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 167 | \ ' +\%(\s\|^\)\[' . s:ReferenceName . '\]_\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+' |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 168 | |
| 169 | execute 'syn match rstHyperlinkReference' . |
Bram Moolenaar | 2539402 | 2007-05-10 19:06:20 +0000 | [diff] [blame] | 170 | \ ' /\<' . s:ReferenceName . '__\=\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)/' |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 171 | |
| 172 | syn match rstStandaloneHyperlink contains=@NoSpell |
| 173 | \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]" |
| 174 | |
Bram Moolenaar | 97d6249 | 2012-11-15 21:28:22 +0100 | [diff] [blame] | 175 | syn region rstCodeBlock contained matchgroup=rstDirective |
Bram Moolenaar | d1caa94 | 2020-04-10 22:10:56 +0200 | [diff] [blame] | 176 | \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s*\(\S*\)\?\s*\n\%(\s*:.*:\s*.*\s*\n\)*\n\ze\z(\s\+\)+ |
Bram Moolenaar | 97d6249 | 2012-11-15 21:28:22 +0100 | [diff] [blame] | 177 | \ skip=+^$+ |
Bram Moolenaar | 7b61a54 | 2014-08-23 15:31:19 +0200 | [diff] [blame] | 178 | \ end=+^\z1\@!+ |
Bram Moolenaar | 97d6249 | 2012-11-15 21:28:22 +0100 | [diff] [blame] | 179 | \ contains=@NoSpell |
| 180 | syn cluster rstDirectives add=rstCodeBlock |
| 181 | |
| 182 | if !exists('g:rst_syntax_code_list') |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 183 | " A mapping from a Vim filetype to a list of alias patterns (pattern |
| 184 | " branches to be specific, see ':help /pattern'). E.g. given: |
| 185 | " |
| 186 | " let g:rst_syntax_code_list = { |
| 187 | " \ 'cpp': ['cpp', 'c++'], |
| 188 | " \ } |
| 189 | " |
| 190 | " then the respective contents of the following two rST directives: |
| 191 | " |
| 192 | " .. code:: cpp |
| 193 | " |
| 194 | " auto i = 42; |
| 195 | " |
| 196 | " .. code:: C++ |
| 197 | " |
| 198 | " auto i = 42; |
| 199 | " |
| 200 | " will both be highlighted as C++ code. As shown by the latter block |
| 201 | " pattern matching will be case-insensitive. |
| 202 | let g:rst_syntax_code_list = { |
| 203 | \ 'vim': ['vim'], |
| 204 | \ 'java': ['java'], |
| 205 | \ 'cpp': ['cpp', 'c++'], |
| 206 | \ 'lisp': ['lisp'], |
| 207 | \ 'php': ['php'], |
| 208 | \ 'python': ['python'], |
| 209 | \ 'perl': ['perl'], |
| 210 | \ 'sh': ['sh'], |
| 211 | \ } |
| 212 | elseif type(g:rst_syntax_code_list) == type([]) |
| 213 | " backward compatibility with former list format |
| 214 | let s:old_spec = g:rst_syntax_code_list |
| 215 | let g:rst_syntax_code_list = {} |
| 216 | for s:elem in s:old_spec |
| 217 | let g:rst_syntax_code_list[s:elem] = [s:elem] |
| 218 | endfor |
Bram Moolenaar | 97d6249 | 2012-11-15 21:28:22 +0100 | [diff] [blame] | 219 | endif |
| 220 | |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 221 | for s:filetype in keys(g:rst_syntax_code_list) |
Bram Moolenaar | 97d6249 | 2012-11-15 21:28:22 +0100 | [diff] [blame] | 222 | unlet! b:current_syntax |
Bram Moolenaar | 7d76c80 | 2014-10-15 22:51:52 +0200 | [diff] [blame] | 223 | " guard against setting 'isk' option which might cause problems (issue #108) |
| 224 | let prior_isk = &l:iskeyword |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 225 | let s:alias_pattern = '' |
| 226 | \.'\%(' |
| 227 | \.join(g:rst_syntax_code_list[s:filetype], '\|') |
| 228 | \.'\)' |
| 229 | |
| 230 | exe 'syn include @rst'.s:filetype.' syntax/'.s:filetype.'.vim' |
| 231 | exe 'syn region rstDirective'.s:filetype |
| 232 | \.' matchgroup=rstDirective fold' |
| 233 | \.' start="\c\%(sourcecode\|code\%(-block\)\=\)::\s\+'.s:alias_pattern.'\_s*\n\ze\z(\s\+\)"' |
Bram Moolenaar | a02a551 | 2016-06-17 12:48:11 +0200 | [diff] [blame] | 234 | \.' skip=#^$#' |
| 235 | \.' end=#^\z1\@!#' |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 236 | \.' contains=@NoSpell,@rst'.s:filetype |
| 237 | exe 'syn cluster rstDirectives add=rstDirective'.s:filetype |
| 238 | |
Bram Moolenaar | 7d76c80 | 2014-10-15 22:51:52 +0200 | [diff] [blame] | 239 | " reset 'isk' setting, if it has been changed |
| 240 | if &l:iskeyword !=# prior_isk |
| 241 | let &l:iskeyword = prior_isk |
| 242 | endif |
| 243 | unlet! prior_isk |
Bram Moolenaar | 97d6249 | 2012-11-15 21:28:22 +0100 | [diff] [blame] | 244 | endfor |
| 245 | |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 246 | " Enable top level spell checking |
| 247 | syntax spell toplevel |
| 248 | |
Bram Moolenaar | 203d04d | 2013-06-06 21:36:40 +0200 | [diff] [blame] | 249 | " TODO: Use better syncing. |
| 250 | syn sync minlines=50 linebreaks=2 |
| 251 | |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 252 | hi def link rstTodo Todo |
| 253 | hi def link rstComment Comment |
Bram Moolenaar | 9b45125 | 2012-08-15 17:43:31 +0200 | [diff] [blame] | 254 | hi def link rstSections Title |
| 255 | hi def link rstTransition rstSections |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 256 | hi def link rstLiteralBlock String |
| 257 | hi def link rstQuotedLiteralBlock String |
| 258 | hi def link rstDoctestBlock PreProc |
| 259 | hi def link rstTableLines rstDelimiter |
| 260 | hi def link rstSimpleTableLines rstTableLines |
| 261 | hi def link rstExplicitMarkup rstDirective |
| 262 | hi def link rstDirective Keyword |
| 263 | hi def link rstFootnote String |
| 264 | hi def link rstCitation String |
| 265 | hi def link rstHyperlinkTarget String |
| 266 | hi def link rstExDirective String |
| 267 | hi def link rstSubstitutionDefinition rstDirective |
| 268 | hi def link rstDelimiter Delimiter |
Bram Moolenaar | 779b74b | 2006-04-10 14:55:34 +0000 | [diff] [blame] | 269 | hi def link rstInterpretedTextOrHyperlinkReference Identifier |
| 270 | hi def link rstInlineLiteral String |
| 271 | hi def link rstSubstitutionReference PreProc |
| 272 | hi def link rstInlineInternalTargets Identifier |
| 273 | hi def link rstFootnoteReference Identifier |
| 274 | hi def link rstCitationReference Identifier |
| 275 | hi def link rstHyperLinkReference Identifier |
| 276 | hi def link rstStandaloneHyperlink Identifier |
Bram Moolenaar | 97d6249 | 2012-11-15 21:28:22 +0100 | [diff] [blame] | 277 | hi def link rstCodeBlock String |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 278 | if exists('g:rst_use_emphasis_colors') |
| 279 | " TODO: Less arbitrary color selection |
| 280 | hi def rstEmphasis ctermfg=13 term=italic cterm=italic gui=italic |
| 281 | hi def rstStrongEmphasis ctermfg=1 term=bold cterm=bold gui=bold |
| 282 | else |
| 283 | hi def rstEmphasis term=italic cterm=italic gui=italic |
| 284 | hi def rstStrongEmphasis term=bold cterm=bold gui=bold |
| 285 | endif |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 286 | |
| 287 | let b:current_syntax = "rst" |
| 288 | |
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 289 | let &cpo = s:cpo_save |
| 290 | unlet s:cpo_save |