]>
git.madduck.net Git - etc/vim.git/blobdiff - ftplugin/markdown.vim
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
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.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
+ call setloclist(0, l:header_list)
if len(l:header_list) == 0
echom "Toc: No headers."
return
endif
if len(l:header_list) == 0
echom "Toc: No headers."
return
endif
- call setloclist(0, l:header_list)
if l:window_type ==# 'horizontal'
lopen
if l:window_type ==# 'horizontal'
lopen
" Search instead of `normal! j` because of the table at beginning of file edge case.
call search('|')
normal! j
" Search instead of `normal! j` because of the table at beginning of file edge case.
call search('|')
normal! j
- " Remove everything that is not a pipe othewise well formated tables would grow
- " because of addition of 2 spaces on the separator line by Tabularize /|.
+ " Remove everything that is not a pipe, colon or hyphen next to a colon othewise
+ " well formated tables would grow because of addition of 2 spaces on the separator
+ " line by Tabularize /|.
let l:flags = (&gdefault ? '' : 'g')
let l:flags = (&gdefault ? '' : 'g')
- execute 's/[^|]//' . l:flags
+ execute 's/\(:\@<!-:\@!\|[^|:-]\)//e' . l:flags
+ execute 's/--/-/e' . l:flags
+ " Move colons for alignment to left or right side of the cell.
+ execute 's/:\( \+\)|/\1:|/e' . l:flags
+ execute 's/|\( \+\):/|:\1/e' . l:flags
execute 's/ /-/' . l:flags
call setpos('.', l:pos)
endfunction
execute 's/ /-/' . l:flags
call setpos('.', l:pos)
endfunction
+" We need a definition guard because we invoke 'edit' which will reload this
+" script while this function is running. We must not replace it.
+if !exists("*s:EditUrlUnderCursor")
+ function s:EditUrlUnderCursor()
+ let l:url = s:Markdown_GetUrlForPosition(line('.'), col('.'))
+ if l:url != ''
+ execute 'edit' l:url
+ else
+ echomsg 'The cursor is not on a link.'
+ endif
+ endfunction
+endif
+
function! s:VersionAwareNetrwBrowseX(url)
if has('patch-7.4.567')
call netrw#BrowseX(a:url, 0)
function! s:VersionAwareNetrwBrowseX(url)
if has('patch-7.4.567')
call netrw#BrowseX(a:url, 0)
call <sid>MapNormVis('<Plug>Markdown_MoveToParentHeader', '<sid>MoveToParentHeader')
call <sid>MapNormVis('<Plug>Markdown_MoveToCurHeader', '<sid>MoveToCurHeader')
nnoremap <Plug>Markdown_OpenUrlUnderCursor :call <sid>OpenUrlUnderCursor()<cr>
call <sid>MapNormVis('<Plug>Markdown_MoveToParentHeader', '<sid>MoveToParentHeader')
call <sid>MapNormVis('<Plug>Markdown_MoveToCurHeader', '<sid>MoveToCurHeader')
nnoremap <Plug>Markdown_OpenUrlUnderCursor :call <sid>OpenUrlUnderCursor()<cr>
+nnoremap <Plug>Markdown_EditUrlUnderCursor :call <sid>EditUrlUnderCursor()<cr>
if !get(g:, 'vim_markdown_no_default_key_mappings', 0)
call <sid>MapNotHasmapto(']]', 'Markdown_MoveToNextHeader')
if !get(g:, 'vim_markdown_no_default_key_mappings', 0)
call <sid>MapNotHasmapto(']]', 'Markdown_MoveToNextHeader')
call <sid>MapNotHasmapto(']u', 'Markdown_MoveToParentHeader')
call <sid>MapNotHasmapto(']c', 'Markdown_MoveToCurHeader')
call <sid>MapNotHasmapto('gx', 'Markdown_OpenUrlUnderCursor')
call <sid>MapNotHasmapto(']u', 'Markdown_MoveToParentHeader')
call <sid>MapNotHasmapto(']c', 'Markdown_MoveToCurHeader')
call <sid>MapNotHasmapto('gx', 'Markdown_OpenUrlUnderCursor')
+ call <sid>MapNotHasmapto('ge', 'Markdown_EditUrlUnderCursor')
endif
command! -buffer -range=% HeaderDecrease call s:HeaderDecrease(<line1>, <line2>)
endif
command! -buffer -range=% HeaderDecrease call s:HeaderDecrease(<line1>, <line2>)
" Look for code blocks in the current file
let filetypes = {}
for line in getline(1, '$')
" Look for code blocks in the current file
let filetypes = {}
for line in getline(1, '$')
- let ft = matchstr(line, '```\zs[0-9A-Za-z_+-]*')
+ let ft = matchstr(line, '```\s*\ zs[0-9A-Za-z_+-]*')
if !empty(ft) && ft !~ '^\d*$' | let filetypes[ft] = 1 | endif
endfor
if !exists('b:mkd_known_filetypes')
if !empty(ft) && ft !~ '^\d*$' | let filetypes[ft] = 1 | endif
endfor
if !exists('b:mkd_known_filetypes')
else
let include = '@' . toupper(filetype)
endif
else
let include = '@' . toupper(filetype)
endif
- let command = 'syntax region %s matchgroup=%s start="^\s*```%s$" matchgroup=%s end="\s*```$" keepend contains=%s%s'
+ let command = 'syntax region %s matchgroup=%s start="^\s*```\s* %s$" matchgroup=%s end="\s*```$" keepend contains=%s%s'
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)
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)
+function! s:MarkdownClearSyntaxVariables()
+ if &filetype == 'markdown'
+ unlet! b:mkd_included_filetypes
+ endif
+endfunction
+
augroup Mkd
autocmd!
au BufWinEnter * call s:MarkdownRefreshSyntax(1)
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)
au BufWritePost * call s:MarkdownRefreshSyntax(0)
au InsertEnter,InsertLeave * call s:MarkdownRefreshSyntax(0)
au CursorHold,CursorHoldI * call s:MarkdownRefreshSyntax(0)