All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
When alias names of a language are used with fenced code block,
syntax include is executed twice and causes errors.
We add `b:mkd_included_filetypes` to check syntax included.
Fix #251
if !exists('b:mkd_known_filetypes')
let b:mkd_known_filetypes = {}
endif
if !exists('b:mkd_known_filetypes')
let b:mkd_known_filetypes = {}
endif
+ if !exists('b:mkd_included_filetypes')
+ " set syntax file name included
+ let b:mkd_included_filetypes = {}
+ endif
if !a:force && (b:mkd_known_filetypes == filetypes || empty(filetypes))
return
endif
if !a:force && (b:mkd_known_filetypes == filetypes || empty(filetypes))
return
endif
let filetype = ft
endif
let group = 'mkdSnippet' . toupper(substitute(filetype, "[+-]", "_", "g"))
let filetype = ft
endif
let group = 'mkdSnippet' . toupper(substitute(filetype, "[+-]", "_", "g"))
- let include = s:SyntaxInclude(filetype)
+ if !has_key(b:mkd_included_filetypes, filetype)
+ let include = s:SyntaxInclude(filetype)
+ let b:mkd_included_filetypes[filetype] = 1
+ else
+ let include = '@' . toupper(filetype)
+ endif
let command = 'syntax region %s matchgroup=%s start="^\s*```%s$" matchgroup=%s end="\s*```$" keepend contains=%s%s'
execute printf(command, group, startgroup, ft, endgroup, include, has('conceal') ? ' concealends' : '')
execute printf('syntax cluster mkdNonListItem add=%s', group)
let command = 'syntax region %s matchgroup=%s start="^\s*```%s$" matchgroup=%s end="\s*```$" keepend contains=%s%s'
execute printf(command, group, startgroup, ft, endgroup, include, has('conceal') ? ' concealends' : '')
execute printf('syntax cluster mkdNonListItem add=%s', group)
AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
AssertEqual SyntaxOf('def'), 'rubyDefine'
AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
AssertEqual SyntaxOf('def'), 'rubyDefine'
+Given markdown;
+```vim
+let g:a = 1
+```
+
+```viml
+let g:b = 1
+```
+
+Execute (fenced code block syntax with alias language specifier):
+ let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
+ call b:func(0)
+ AssertEqual SyntaxOf('g:a'), 'vimVar'
+ AssertEqual SyntaxOf('g:b'), 'vimVar'
+
Given markdown;
```a+b-
code
Given markdown;
```a+b-
code
call b:func(0)
AssertEqual SyntaxOf('code'), 'mkdSnippetA_B_'
call b:func(0)
AssertEqual SyntaxOf('code'), 'mkdSnippetA_B_'