mirror of
https://github.com/tpope/vim-markdown.git
synced 2025-11-12 03:43:48 -05:00
Avoid E403 error on :syn-include
Example .vimrc:
let g:markdown_fenced_languages = ['vim', 'viml=vim']
syntax on
causes
"/tmp/test.mkd" 6L, 98C
Error detected while processing /usr/share/vim/vim74/syntax/vim.vim:
line 777:
E403: syntax sync: line continuations pattern specified twice
E403: syntax sync: line continuations pattern specified twice
Example "test.mkd" file:
```vim
echo 'hi'
```
This commit is contained in:
@@ -18,14 +18,20 @@ unlet! b:current_syntax
|
|||||||
if !exists('g:markdown_fenced_languages')
|
if !exists('g:markdown_fenced_languages')
|
||||||
let g:markdown_fenced_languages = []
|
let g:markdown_fenced_languages = []
|
||||||
endif
|
endif
|
||||||
|
let s:done_include = {}
|
||||||
for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")')
|
for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")')
|
||||||
|
if has_key(s:done_include, matchstr(s:type,'[^.]*'))
|
||||||
|
continue
|
||||||
|
endif
|
||||||
if s:type =~ '\.'
|
if s:type =~ '\.'
|
||||||
let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
|
let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
|
||||||
endif
|
endif
|
||||||
exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
|
exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
|
||||||
unlet! b:current_syntax
|
unlet! b:current_syntax
|
||||||
|
let s:done_include[matchstr(s:type,'[^.]*')] = 1
|
||||||
endfor
|
endfor
|
||||||
unlet! s:type
|
unlet! s:type
|
||||||
|
unlet! s:done_include
|
||||||
|
|
||||||
syn sync minlines=10
|
syn sync minlines=10
|
||||||
syn case ignore
|
syn case ignore
|
||||||
@@ -91,10 +97,16 @@ syn match markdownFootnote "\[^[^\]]\+\]"
|
|||||||
syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:"
|
syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:"
|
||||||
|
|
||||||
if main_syntax ==# 'markdown'
|
if main_syntax ==# 'markdown'
|
||||||
|
let s:done_include = {}
|
||||||
for s:type in g:markdown_fenced_languages
|
for s:type in g:markdown_fenced_languages
|
||||||
|
if has_key(s:done_include, matchstr(s:type,'[^.]*'))
|
||||||
|
continue
|
||||||
|
endif
|
||||||
exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```*\s*'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```*\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g')
|
exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```*\s*'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```*\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g')
|
||||||
|
let s:done_include[matchstr(s:type,'[^.]*')] = 1
|
||||||
endfor
|
endfor
|
||||||
unlet! s:type
|
unlet! s:type
|
||||||
|
unlet! s:done_include
|
||||||
endif
|
endif
|
||||||
|
|
||||||
syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]"
|
syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]"
|
||||||
|
|||||||
Reference in New Issue
Block a user