@@ -105,32 +105,42 @@ function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_righ
105105 let first = a: start [0 ]
106106 endif
107107
108- execute ' syn match rstEscape' .a: name .' +\\\\\|\\' .first .' +' .' contained'
108+ if a: start != ' ``'
109+ let rst_contains= ' contains=rstEscape' . a: name
110+ execute ' syn match rstEscape' .a: name .' +\\\\\|\\' .first .' +' .' contained'
111+ else
112+ let rst_contains= ' '
113+ endif
109114
110115 execute ' syn region rst' . a: name .
111116 \ ' start=+' . a: char_left . ' \zs' . a: start .
112117 \ ' \ze[^[:space:]' . a: char_right . a: start [strlen (a: start ) - 1 ] . ' ]+' .
113118 \ a: middle .
114119 \ ' end=+' . a: end . ' \ze\%($\|\s\|['' "’)\]}>/:.,;!?\\-]\)+' .
115- \ ' contains=rstEscape ' . a: name
120+ \ rst_contains
116121
117- execute ' hi def link rstEscape' .a: name .' Special'
122+ if a: start != ' ``'
123+ execute ' hi def link rstEscape' .a: name .' Special'
124+ endif
118125endfunction
119126
120127function ! s: DefineInlineMarkup (name, start , middle, end )
121- let middle = a: middle != " " ?
122- \ (' skip=+\\\\\|\\' . a: middle . ' \|\s' . a: middle . ' +' ) :
123- \ " "
128+ if a: middle == ' `'
129+ let middle = ' skip=+\s' .a: middle .' +'
130+ else
131+ let middle = ' skip=+\\\\\|\\' . a: middle . ' \|\s' . a: middle . ' +'
132+ endif
124133
134+ " Some characters may precede or follow an inline token
125135 call s: DefineOneInlineMarkup (a: name , a: start , middle, a: end , " '" , " '" )
126136 call s: DefineOneInlineMarkup (a: name , a: start , middle, a: end , ' "' , ' "' )
127137 call s: DefineOneInlineMarkup (a: name , a: start , middle, a: end , ' (' , ' )' )
128138 call s: DefineOneInlineMarkup (a: name , a: start , middle, a: end , ' \[' , ' \]' )
129139 call s: DefineOneInlineMarkup (a: name , a: start , middle, a: end , ' {' , ' }' )
130140 call s: DefineOneInlineMarkup (a: name , a: start , middle, a: end , ' <' , ' >' )
131141 call s: DefineOneInlineMarkup (a: name , a: start , middle, a: end , ' ’' , ' ’' )
132- " TODO: Additional Unicode Pd, Po, Pi, Pf, Ps characters
133142
143+ " TODO: Additional whitespace Unicode characters: Pd, Po, Pi, Pf, Ps
134144 call s: DefineOneInlineMarkup (a: name , a: start , middle, a: end , ' \%(^\|\s\|\%ua0\|[/:]\)' , ' ' )
135145
136146 execute ' syn match rst' . a: name .
@@ -144,7 +154,7 @@ endfunction
144154call s: DefineInlineMarkup (' Emphasis' , ' \*' , ' \*' , ' \*' )
145155call s: DefineInlineMarkup (' StrongEmphasis' , ' \*\*' , ' \*' , ' \*\*' )
146156call s: DefineInlineMarkup (' InterpretedTextOrHyperlinkReference' , ' `' , ' `' , ' `_\{0,2}' )
147- call s: DefineInlineMarkup (' InlineLiteral' , ' ``' , " " , ' ``' )
157+ call s: DefineInlineMarkup (' InlineLiteral' , ' ``' , ' ` ' , ' ``' )
148158call s: DefineInlineMarkup (' SubstitutionReference' , ' |' , ' |' , ' |_\{0,2}' )
149159call s: DefineInlineMarkup (' InlineInternalTargets' , ' _`' , ' `' , ' `' )
150160
0 commit comments