From: memeplex Date: Sat, 25 Feb 2017 19:33:28 +0000 (-0300) Subject: Allow local anchors and improve buffer filename. X-Git-Url: https://git.madduck.net/etc/vim.git/commitdiff_plain/64148cf1095569fb03b57f3842d941727a2a5812 Allow local anchors and improve buffer filename. Now urls of the form #anchor works (by searching the -transformed- anchor in the current buffer). I've fixed the new buffer file naming code in two senses (and note that both are unrelated to named anchors, but since the problem it's in the same part of the code I decided to include the fix here): 1. The previous code only expanded the filename relative to the current file when vim_markdown_no_extensions_in_markdown was set, but concatenation of .md is unrelated to filename expansion. 2. The previous code was expanding relative to the home dir (:~) then making the path absolute (:p), which made not much sense and also produced long, absolute, buffer names. Now the full path is computed relative to the current file but the buffer is named relative to the current working directory (:.). --- diff --git a/ftplugin/markdown.vim b/ftplugin/markdown.vim index 35c8a63..d7c3777 100644 --- a/ftplugin/markdown.vim +++ b/ftplugin/markdown.vim @@ -581,13 +581,13 @@ 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 + let l:anchor = '' if get(g:, 'vim_markdown_follow_anchor', 0) - let l:parts = split(l:url, '#') + let l:parts = split(l:url, '#', 1) if len(l:parts) == 2 let [l:url, l:anchor] = parts let l:anchorexpr = get(g:, 'vim_markdown_anchorexpr', '') @@ -598,10 +598,13 @@ if !exists('*s:EditUrlUnderCursor') endif endif endif - if get(g:, 'vim_markdown_no_extensions_in_markdown', 0) - let l:url = fnamemodify(expand('%:~'), ':p:h').'/'.l:url.'.md' + if l:url != '' + if get(g:, 'vim_markdown_no_extensions_in_markdown', 0) + let l:url .= '.md' + endif + let l:url = fnamemodify(expand('%:h').'/'.l:url, ':.') + execute 'edit' l:url endif - execute 'edit' l:url if l:anchor != '' silent! execute '/'.l:anchor endif