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
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_markdow_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)
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')
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>)