follow_link: reuse existing tabs with tab drop (closes #238)
Replaces :e in `vimwiki#base#follow_link()` with :drop, making this the default behavior for pressing <CR> on a link. Checks for the existence of :drop first, since this isn't available in some builds. Adds a new :VimwikiTabDropLink and makes this a default for the keybindings formerly occupied by :VimwikiTabnewLink; leaving :VimwikiTabnewLink available for backwards compatibility and anyone who still wants the old behavior. Doesn't touch the split window reuse functionality, or the :VimwikiGoBackLink behavior, although I can see an argument for adding :drop to the latter. I've wanted this for a while and happened to notice @davidlmontgomery's patch from 2016 in #238. Code has moved around a little since, but I think this is correct.
This commit is contained in:
committed by
Brennen Bearnes
parent
3ac8e1ae14
commit
8e4202847f
@@ -1670,8 +1670,17 @@ function! vimwiki#base#follow_link(split, ...) abort
|
|||||||
let cmd = ':badd '
|
let cmd = ':badd '
|
||||||
elseif a:split ==# 'tab'
|
elseif a:split ==# 'tab'
|
||||||
let cmd = ':tabnew '
|
let cmd = ':tabnew '
|
||||||
|
elseif a:split ==# 'tabdrop'
|
||||||
|
" Use tab drop if we've already got the file open in an existing tab
|
||||||
|
let cmd = ':tab drop '
|
||||||
else
|
else
|
||||||
|
" Same as above - doing this by default reduces incidence of multiple
|
||||||
|
" tabs with the same file. We default to :e just in case :drop doesn't
|
||||||
|
" exist in the current build.
|
||||||
let cmd = ':e '
|
let cmd = ':e '
|
||||||
|
if exists(':drop')
|
||||||
|
let cmd = ':drop '
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" if we want to and can reuse a split window, jump to that window and open
|
" if we want to and can reuse a split window, jump to that window and open
|
||||||
@@ -1684,7 +1693,6 @@ function! vimwiki#base#follow_link(split, ...) abort
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown'
|
if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown'
|
||||||
let processed_by_markdown_reflink = vimwiki#markdown_base#open_reflink(lnk)
|
let processed_by_markdown_reflink = vimwiki#markdown_base#open_reflink(lnk)
|
||||||
if processed_by_markdown_reflink
|
if processed_by_markdown_reflink
|
||||||
|
|||||||
+10
-2
@@ -370,8 +370,10 @@ MAP MODE
|
|||||||
<C-S-CR>, <D-CR> n Follow wiki link (create target wiki page if needed),
|
<C-S-CR>, <D-CR> n Follow wiki link (create target wiki page if needed),
|
||||||
opening in a new tab.
|
opening in a new tab.
|
||||||
May not work in some terminals. Remapping could help.
|
May not work in some terminals. Remapping could help.
|
||||||
Maps to |:VimwikiTabnewLink|.
|
Maps to |:VimwikiTabDropLink|.
|
||||||
Remap command: `<Plug>VimwikiTabnewLink`
|
Remap command: `<Plug>VimwikiTabDropLink`
|
||||||
|
See |:VimwikiTabnewLink| for old behavior which
|
||||||
|
always opens a new tab.
|
||||||
|
|
||||||
*vimwiki_<Backspace>*
|
*vimwiki_<Backspace>*
|
||||||
<Backspace> n Go back to previously visited wiki page.
|
<Backspace> n Go back to previously visited wiki page.
|
||||||
@@ -810,6 +812,11 @@ Vimwiki file.
|
|||||||
*:VimwikiTabnewLink*
|
*:VimwikiTabnewLink*
|
||||||
Follow wiki link in a new tab (create target wiki page if needed).
|
Follow wiki link in a new tab (create target wiki page if needed).
|
||||||
|
|
||||||
|
*:VimwikiTabDropLink*
|
||||||
|
Follow wiki link with tab drop, reusing any existing tabs with the page.
|
||||||
|
Creates a new tab if the page isn't already open (create target wiki page
|
||||||
|
if needed).
|
||||||
|
|
||||||
*:VimwikiNextLink*
|
*:VimwikiNextLink*
|
||||||
Find next link on the current page.
|
Find next link on the current page.
|
||||||
|
|
||||||
@@ -3985,6 +3992,7 @@ http://code.google.com/p/vimwiki/issues/list. They may be accessible from
|
|||||||
https://github.com/vimwiki-backup/vimwiki/issues.
|
https://github.com/vimwiki-backup/vimwiki/issues.
|
||||||
|
|
||||||
New:~
|
New:~
|
||||||
|
* Feature: #238: Reuse existing tabs with tab drop
|
||||||
* Issue #621: Feature request: Highlight code listings in HTML
|
* Issue #621: Feature request: Highlight code listings in HTML
|
||||||
* Issue #290: Calendar plugin, do not sign if no wiki
|
* Issue #290: Calendar plugin, do not sign if no wiki
|
||||||
* Issue #281: Permit `\|` in tables
|
* Issue #281: Permit `\|` in tables
|
||||||
|
|||||||
@@ -312,6 +312,8 @@ command! -buffer -nargs=? VimwikiNormalizeLink call vimwiki#base#normalize_link(
|
|||||||
|
|
||||||
command! -buffer VimwikiTabnewLink call vimwiki#base#follow_link('tab', 0, 1)
|
command! -buffer VimwikiTabnewLink call vimwiki#base#follow_link('tab', 0, 1)
|
||||||
|
|
||||||
|
command! -buffer VimwikiTabDropLink call vimwiki#base#follow_link('tabdrop', 0, 1)
|
||||||
|
|
||||||
command! -buffer -nargs=? VimwikiGenerateLinks call vimwiki#base#generate_links(1, <f-args>)
|
command! -buffer -nargs=? VimwikiGenerateLinks call vimwiki#base#generate_links(1, <f-args>)
|
||||||
|
|
||||||
command! -buffer -nargs=0 VimwikiBacklinks call vimwiki#base#backlinks()
|
command! -buffer -nargs=0 VimwikiBacklinks call vimwiki#base#backlinks()
|
||||||
@@ -418,6 +420,8 @@ vnoremap <silent><script><buffer> <Plug>VimwikiNormalizeLinkVisualCR
|
|||||||
\ :<C-U>VimwikiNormalizeLink 1<CR>
|
\ :<C-U>VimwikiNormalizeLink 1<CR>
|
||||||
nnoremap <silent><script><buffer> <Plug>VimwikiTabnewLink
|
nnoremap <silent><script><buffer> <Plug>VimwikiTabnewLink
|
||||||
\ :VimwikiTabnewLink<CR>
|
\ :VimwikiTabnewLink<CR>
|
||||||
|
nnoremap <silent><script><buffer> <Plug>VimwikiTabDropLink
|
||||||
|
\ :VimwikiTabDropLink<CR>
|
||||||
nnoremap <silent><script><buffer> <Plug>VimwikiGoBackLink
|
nnoremap <silent><script><buffer> <Plug>VimwikiGoBackLink
|
||||||
\ :VimwikiGoBackLink<CR>
|
\ :VimwikiGoBackLink<CR>
|
||||||
nnoremap <silent><script><buffer> <Plug>VimwikiNextLink
|
nnoremap <silent><script><buffer> <Plug>VimwikiNextLink
|
||||||
@@ -448,8 +452,8 @@ if str2nr(vimwiki#vars#get_global('key_mappings').links)
|
|||||||
call vimwiki#u#map_key('n', '+', '<Plug>VimwikiNormalizeLink')
|
call vimwiki#u#map_key('n', '+', '<Plug>VimwikiNormalizeLink')
|
||||||
call vimwiki#u#map_key('v', '+', '<Plug>VimwikiNormalizeLinkVisual')
|
call vimwiki#u#map_key('v', '+', '<Plug>VimwikiNormalizeLinkVisual')
|
||||||
call vimwiki#u#map_key('v', '<CR>', '<Plug>VimwikiNormalizeLinkVisualCR')
|
call vimwiki#u#map_key('v', '<CR>', '<Plug>VimwikiNormalizeLinkVisualCR')
|
||||||
call vimwiki#u#map_key('n', '<D-CR>', '<Plug>VimwikiTabnewLink')
|
call vimwiki#u#map_key('n', '<D-CR>', '<Plug>VimwikiTabDropLink')
|
||||||
call vimwiki#u#map_key('n', '<C-S-CR>', '<Plug>VimwikiTabnewLink', 1)
|
call vimwiki#u#map_key('n', '<C-S-CR>', '<Plug>VimwikiTabDropLink', 1)
|
||||||
call vimwiki#u#map_key('n', '<BS>', '<Plug>VimwikiGoBackLink')
|
call vimwiki#u#map_key('n', '<BS>', '<Plug>VimwikiGoBackLink')
|
||||||
call vimwiki#u#map_key('n', '<TAB>', '<Plug>VimwikiNextLink')
|
call vimwiki#u#map_key('n', '<TAB>', '<Plug>VimwikiNextLink')
|
||||||
call vimwiki#u#map_key('n', '<S-TAB>', '<Plug>VimwikiPrevLink')
|
call vimwiki#u#map_key('n', '<S-TAB>', '<Plug>VimwikiPrevLink')
|
||||||
|
|||||||
Reference in New Issue
Block a user