X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/d6d59eef6f604b6430fd6adade9e18364666232b..256f9f10d3a43dc265ffd0ac8d416d4a33c6dbdc:/ftplugin/markdown.vim?ds=sidebyside diff --git a/ftplugin/markdown.vim b/ftplugin/markdown.vim index 21c9442..35c8a63 100644 --- a/ftplugin/markdown.vim +++ b/ftplugin/markdown.vim @@ -578,22 +578,37 @@ 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) - execute 'edit' fnamemodify(expand('%:~'), ':p:h').'/'.l:url.'.md' - else - execute 'edit' l:url - endif - else - echomsg 'The cursor is not on a link.' - endif - endfunction +if !exists('*s:EditUrlUnderCursor') + function s:EditUrlUnderCursor() + let l:url = s:Markdown_GetUrlForPosition(line('.'), col('.')) + let l:anchor = '' + if l:url != '' + if get(g:, 'vim_markdown_autowrite', 0) + write + endif + if get(g:, 'vim_markdown_follow_anchor', 0) + let l:parts = split(l:url, '#') + if len(l:parts) == 2 + let [l:url, l:anchor] = parts + let l:anchorexpr = get(g:, 'vim_markdown_anchorexpr', '') + if l:anchorexpr != '' + let l:anchor = eval(substitute( + \ l:anchorexpr, 'v:anchor', + \ escape('"'.l:anchor.'"', '"'), '')) + endif + endif + endif + if get(g:, 'vim_markdown_no_extensions_in_markdown', 0) + let l:url = fnamemodify(expand('%:~'), ':p:h').'/'.l:url.'.md' + endif + execute 'edit' l:url + if l:anchor != '' + silent! execute '/'.l:anchor + endif + else + echomsg 'The cursor is not on a link.' + endif + endfunction endif function! s:VersionAwareNetrwBrowseX(url)