X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/67ccef9f3e32d56b9d63e2ac55527af760a4e109..9893e1c01d0129e063589872128051e91abf4f7e:/plugin/mkd.vim diff --git a/plugin/mkd.vim b/plugin/mkd.vim index 2eb1aff..368485e 100644 --- a/plugin/mkd.vim +++ b/plugin/mkd.vim @@ -1,5 +1,5 @@ " Heavily based on vim-notes - http://peterodding.com/code/vim/notes/ -function! s:Markdown_highlight_sources() +function! s:Markdown_highlight_sources(force) " Syntax highlight source code embedded in notes. " Look for code blocks in the current file let filetypes = {} @@ -10,7 +10,7 @@ function! s:Markdown_highlight_sources() if !exists('b:mkd_known_filetypes') let b:mkd_known_filetypes = {} endif - if b:mkd_known_filetypes == filetypes || empty(filetypes) + if !a:force && (b:mkd_known_filetypes == filetypes || empty(filetypes)) return endif @@ -18,11 +18,11 @@ function! s:Markdown_highlight_sources() let startgroup = 'mkdCodeStart' let endgroup = 'mkdCodeEnd' for ft in keys(filetypes) - if !has_key(b:mkd_known_filetypes, ft) + if a:force || !has_key(b:mkd_known_filetypes, ft) let group = 'mkdSnippet' . toupper(ft) let include = s:syntax_include(ft) - let command = 'syntax region %s matchgroup=%s start="```%s$" matchgroup=%s end="```" keepend contains=%s%s' + 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) @@ -56,16 +56,16 @@ function! s:syntax_include(filetype) endfunction -function! s:Markdown_refresh_syntax() - if &filetype == 'mkd' && line('$') > 1 - call s:Markdown_highlight_sources() +function! s:Markdown_refresh_syntax(force) + if &filetype == 'markdown' && line('$') > 1 + call s:Markdown_highlight_sources(a:force) endif endfunction augroup Mkd autocmd! - au BufReadPost * call s:Markdown_refresh_syntax() - au BufReadPost,BufWritePost * call s:Markdown_refresh_syntax() - au InsertEnter,InsertLeave * call s:Markdown_refresh_syntax() - au CursorHold,CursorHoldI * call s:Markdown_refresh_syntax() + au BufReadPost * call s:Markdown_refresh_syntax(1) + au BufWritePost * call s:Markdown_refresh_syntax(0) + au InsertEnter,InsertLeave * call s:Markdown_refresh_syntax(0) + au CursorHold,CursorHoldI * call s:Markdown_refresh_syntax(0) augroup END