X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/edffbe1c16e39301b91972037ecc6f0b1359d311..9dd8d7c09eff15f845edfa88cb22df88a5b6b8c6:/ftplugin/markdown.vim?ds=sidebyside diff --git a/ftplugin/markdown.vim b/ftplugin/markdown.vim index d68e7c0..c7fba7f 100644 --- a/ftplugin/markdown.vim +++ b/ftplugin/markdown.vim @@ -614,11 +614,21 @@ command! -buffer Tocv call s:Toc('vertical') command! -buffer Toct call s:Toc('tab') " Heavily based on vim-notes - http://peterodding.com/code/vim/notes/ -let s:filetype_dict = { - \ 'c++': 'cpp', - \ 'viml': 'vim', - \ 'bash': 'sh' -\ } +if exists('g:vim_markdown_fenced_languages') + let s:filetype_dict = {} + for s:filetype in g:vim_markdown_fenced_languages + let key = matchstr(s:filetype, "[^=]*") + let val = matchstr(s:filetype, "[^=]*$") + let s:filetype_dict[key] = val + endfor +else + let s:filetype_dict = { + \ 'c++': 'cpp', + \ 'viml': 'vim', + \ 'bash': 'sh', + \ 'ini': 'dosini' + \ } +endif function! s:MarkdownHighlightSources(force) " Syntax highlight source code embedded in notes. @@ -631,6 +641,10 @@ function! s:MarkdownHighlightSources(force) 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 @@ -646,9 +660,14 @@ function! s:MarkdownHighlightSources(force) 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(command, group, startgroup, ft, endgroup, include, has('conceal') && get(g:, 'vim_markdown_conceal', 1) ? ' concealends' : '') execute printf('syntax cluster mkdNonListItem add=%s', group) let b:mkd_known_filetypes[ft] = 1 @@ -687,9 +706,16 @@ function! s:MarkdownRefreshSyntax(force) endif endfunction +function! s:MarkdownClearSyntaxVariables() + if &filetype == 'markdown' + unlet! b:mkd_included_filetypes + endif +endfunction + augroup Mkd autocmd! au BufWinEnter * call s:MarkdownRefreshSyntax(1) + au BufUnload * call s:MarkdownClearSyntaxVariables() au BufWritePost * call s:MarkdownRefreshSyntax(0) au InsertEnter,InsertLeave * call s:MarkdownRefreshSyntax(0) au CursorHold,CursorHoldI * call s:MarkdownRefreshSyntax(0)