diff --git a/README.mkd b/README.mkd index fd4f2a2..5cd7406 100644 --- a/README.mkd +++ b/README.mkd @@ -1,5 +1,8 @@ # vimux - +## begin fork notes +### Feature: VimuxUseLast +`let g:VimuxUseLast = 1` => when choosing vimux runner pane, use last active tmux pane +## end fork notes Easily interact with tmux from vim. ![vimux](https://www.braintreepayments.com/assets/images/blog/vimux3.png) diff --git a/plugin/vimux.vim b/plugin/vimux.vim index 9170668..39b0f35 100644 --- a/plugin/vimux.vim +++ b/plugin/vimux.vim @@ -66,8 +66,11 @@ endfunction function! VimuxOpenRunner() let nearestIndex = _VimuxNearestIndex() + let lastIndex = _VimuxLastIndex() - if _VimuxOption("g:VimuxUseNearest", 1) == 1 && nearestIndex != -1 + if _VimuxOption("g:VimuxUseLast", 1) == 1 && lastIndex != -1 + let g:VimuxRunnerIndex = lastIndex + elseif _VimuxOption("g:VimuxUseNearest", 1) == 1 && nearestIndex != -1 let g:VimuxRunnerIndex = nearestIndex else if _VimuxRunnerType() == "pane" @@ -182,6 +185,28 @@ function! _VimuxNearestIndex() return -1 endfunction +function! _VimuxLastIndex() + + let currentID = _VimuxTmuxPaneIndex() + + call _VimuxTmux("last-pane") + let lastID = _VimuxTmuxPaneIndex() + call _VimuxTmux("last-pane") + + if currentID != lastID + if _VimuxRunnerType() == "window" + return lastID + elseif _VimuxRunnerType() == "pane" + if split(currentID, "\\.")[0] == split(lastID, "\\.")[0] + return lastID + endif + endif + endif + + return -1 + +endfunction + function! _VimuxRunnerType() return _VimuxOption("g:VimuxRunnerType", "pane") endfunction @@ -199,5 +224,5 @@ function! _VimuxTmuxProperty(property) endfunction function! _VimuxHasRunner(index) - return match(_VimuxTmux("list-"._VimuxRunnerType()."s -a"), a:index.":") + return match(_VimuxTmux("list-"._VimuxRunnerType()."s -a"), _VimuxTmuxSession().":".a:index.":") endfunction