mirror of
https://github.com/neovim/neovim.git
synced 2025-10-19 08:11:50 +00:00
vim-patch:d7fb4cd: runtime(rst): Inline literal escape support
Escape character support was disabled for inline literals, which are
handled separately from standard inline highlights, in that escape
characters are unsupported.
related: vim/vim#18566
d7fb4cd2f8
Co-authored-by: Marshall Ward <marshall.ward@gmail.com>
This commit is contained in:
@@ -105,23 +105,33 @@ function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_righ
|
|||||||
let first = a:start[0]
|
let first = a:start[0]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
execute 'syn match rstEscape'.a:name.' +\\\\\|\\'.first.'+'.' contained'
|
if a:start != '``'
|
||||||
|
let rst_contains=' contains=rstEscape' . a:name
|
||||||
|
execute 'syn match rstEscape'.a:name.' +\\\\\|\\'.first.'+'.' contained'
|
||||||
|
else
|
||||||
|
let rst_contains=''
|
||||||
|
endif
|
||||||
|
|
||||||
execute 'syn region rst' . a:name .
|
execute 'syn region rst' . a:name .
|
||||||
\ ' start=+' . a:char_left . '\zs' . a:start .
|
\ ' start=+' . a:char_left . '\zs' . a:start .
|
||||||
\ '\ze[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' .
|
\ '\ze[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' .
|
||||||
\ a:middle .
|
\ a:middle .
|
||||||
\ ' end=+' . a:end . '\ze\%($\|\s\|[''"’)\]}>/:.,;!?\\-]\)+' .
|
\ ' end=+' . a:end . '\ze\%($\|\s\|[''"’)\]}>/:.,;!?\\-]\)+' .
|
||||||
\ ' contains=rstEscape' . a:name
|
\ rst_contains
|
||||||
|
|
||||||
execute 'hi def link rstEscape'.a:name.' Special'
|
if a:start != '``'
|
||||||
|
execute 'hi def link rstEscape'.a:name.' Special'
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:DefineInlineMarkup(name, start, middle, end)
|
function! s:DefineInlineMarkup(name, start, middle, end)
|
||||||
let middle = a:middle != "" ?
|
if a:middle == '`'
|
||||||
\ (' skip=+\\\\\|\\' . a:middle . '\|\s' . a:middle . '+') :
|
let middle = ' skip=+\s'.a:middle.'+'
|
||||||
\ ""
|
else
|
||||||
|
let middle = ' skip=+\\\\\|\\' . a:middle . '\|\s' . a:middle . '+'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Some characters may precede or follow an inline token
|
||||||
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, "'", "'")
|
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, "'", "'")
|
||||||
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '"', '"')
|
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '"', '"')
|
||||||
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '(', ')')
|
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '(', ')')
|
||||||
@@ -129,8 +139,8 @@ function! s:DefineInlineMarkup(name, start, middle, end)
|
|||||||
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '{', '}')
|
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '{', '}')
|
||||||
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '<', '>')
|
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '<', '>')
|
||||||
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '’', '’')
|
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '’', '’')
|
||||||
" TODO: Additional Unicode Pd, Po, Pi, Pf, Ps characters
|
|
||||||
|
|
||||||
|
" TODO: Additional whitespace Unicode characters: Pd, Po, Pi, Pf, Ps
|
||||||
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\%(^\|\s\|\%ua0\|[/:]\)', '')
|
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\%(^\|\s\|\%ua0\|[/:]\)', '')
|
||||||
|
|
||||||
execute 'syn match rst' . a:name .
|
execute 'syn match rst' . a:name .
|
||||||
@@ -144,7 +154,7 @@ endfunction
|
|||||||
call s:DefineInlineMarkup('Emphasis', '\*', '\*', '\*')
|
call s:DefineInlineMarkup('Emphasis', '\*', '\*', '\*')
|
||||||
call s:DefineInlineMarkup('StrongEmphasis', '\*\*', '\*', '\*\*')
|
call s:DefineInlineMarkup('StrongEmphasis', '\*\*', '\*', '\*\*')
|
||||||
call s:DefineInlineMarkup('InterpretedTextOrHyperlinkReference', '`', '`', '`_\{0,2}')
|
call s:DefineInlineMarkup('InterpretedTextOrHyperlinkReference', '`', '`', '`_\{0,2}')
|
||||||
call s:DefineInlineMarkup('InlineLiteral', '``', "", '``')
|
call s:DefineInlineMarkup('InlineLiteral', '``', '`', '``')
|
||||||
call s:DefineInlineMarkup('SubstitutionReference', '|', '|', '|_\{0,2}')
|
call s:DefineInlineMarkup('SubstitutionReference', '|', '|', '|_\{0,2}')
|
||||||
call s:DefineInlineMarkup('InlineInternalTargets', '_`', '`', '`')
|
call s:DefineInlineMarkup('InlineInternalTargets', '_`', '`', '`')
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user