X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/25878961d0b526615df6ea7beb0d28cf75528205..3375792916db2503b81ee848eeb26c7376d23e42:/ftplugin/markdown.vim?ds=sidebyside diff --git a/ftplugin/markdown.vim b/ftplugin/markdown.vim index 5db57d8..48fa89e 100644 --- a/ftplugin/markdown.vim +++ b/ftplugin/markdown.vim @@ -351,17 +351,17 @@ function! s:Toc(...) endif endif " keep track of the longest header size (heading level + title) - let l:total_len = stridx(l:line, ' ') + len(l:line) + let l:total_len = stridx(l:line, ' ') + strdisplaywidth(l:line) if l:total_len > l:header_max_len let l:header_max_len = l:total_len endif endif endfor + call setloclist(0, l:header_list) if len(l:header_list) == 0 echom "Toc: No headers." return endif - call setloclist(0, l:header_list) if l:window_type ==# 'horizontal' lopen @@ -576,6 +576,32 @@ function! s:OpenUrlUnderCursor() endif 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 != '' + if get(g:, 'vim_markdown_autowrite', 0) + write + endif + if get(g:, 'vim_markdown_no_extensions_in_markdown', 0) + " use another file extension if preferred + if exists('g:vim_markdown_auto_extension_ext') + let l:ext = '.'.g:vim_markdown_auto_extension_ext + else + let l:ext = '.md' + endif + execute 'edit' fnameescape(fnamemodify(expand('%:~'), ':p:h').'/'.l:url.l:ext) + else + execute 'edit' fnameescape(l:url) + endif + 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) @@ -598,6 +624,7 @@ call MapNormVis('Markdown_MoveToPreviousSiblingHeader', 'MoveToP call MapNormVis('Markdown_MoveToParentHeader', 'MoveToParentHeader') call MapNormVis('Markdown_MoveToCurHeader', 'MoveToCurHeader') nnoremap Markdown_OpenUrlUnderCursor :call OpenUrlUnderCursor() +nnoremap Markdown_EditUrlUnderCursor :call EditUrlUnderCursor() if !get(g:, 'vim_markdown_no_default_key_mappings', 0) call MapNotHasmapto(']]', 'Markdown_MoveToNextHeader') @@ -607,6 +634,7 @@ if !get(g:, 'vim_markdown_no_default_key_mappings', 0) call MapNotHasmapto(']u', 'Markdown_MoveToParentHeader') call MapNotHasmapto(']c', 'Markdown_MoveToCurHeader') call MapNotHasmapto('gx', 'Markdown_OpenUrlUnderCursor') + call MapNotHasmapto('ge', 'Markdown_EditUrlUnderCursor') endif command! -buffer -range=% HeaderDecrease call s:HeaderDecrease(, )