diff options
Diffstat (limited to 'syntax/rst.vim')
-rw-r--r-- | syntax/rst.vim | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/syntax/rst.vim b/syntax/rst.vim index a875a44b..43b17aa8 100644 --- a/syntax/rst.vim +++ b/syntax/rst.vim @@ -94,7 +94,14 @@ execute 'syn match rstSubstitutionDefinition contained' . \ ' /|.*|\_s\+/ nextgroup=@rstDirectives' function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right) - execute 'syn match rstEscape'.a:name.' +\\\\\|\\'.a:start.'+'.' contained' + " Only escape the first char of a multichar delimiter (e.g. \* inside **) + if a:start[0] == '\' + let first = a:start[0:1] + else + let first = a:start[0] + endif + + execute 'syn match rstEscape'.a:name.' +\\\\\|\\'.first.'+'.' contained' execute 'syn region rst' . a:name . \ ' start=+' . a:char_left . '\zs' . a:start . @@ -170,7 +177,7 @@ syn match rstStandaloneHyperlink contains=@NoSpell \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]" syn region rstCodeBlock contained matchgroup=rstDirective - \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s\+.*\_s*\n\ze\z(\s\+\)+ + \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s*\n\%(\s*:.*:\s*.*\s*\n\)*\n\ze\z(\s\+\)+ \ skip=+^$+ \ end=+^\z1\@!+ \ contains=@NoSpell |