commit e47e588705bd7d205a3b5a60ac7090c9a2504ba2 parent 68572ef46143c5c7d420a6ec86f1ec4595765ce5 Author: Phil Runninger <PhilRunninger@users.noreply.github.com> Date: Fri, 2 Feb 2018 09:19:53 -0500 Merge pull request #801 from mrubli/focus-on-close Fix focussing previous buffer when closing NERDTree Diffstat:
| M | lib/nerdtree/nerdtree.vim | | | 15 | ++++++++++++--- |
1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/nerdtree/nerdtree.vim b/lib/nerdtree/nerdtree.vim @@ -38,17 +38,26 @@ function! s:NERDTree.Close() endif if winnr("$") != 1 + " Use the window ID to identify the currently active window or fall + " back on the buffer ID if win_getid/win_gotoid are not available, in + " which case we'll focus an arbitrary window showing the buffer. + let l:useWinId = exists('*win_getid') && exists('*win_gotoid') + if winnr() == s:NERDTree.GetWinNum() call nerdtree#exec("wincmd p") - let bufnr = bufnr("") + let l:activeBufOrWin = l:useWinId ? win_getid() : bufnr("") call nerdtree#exec("wincmd p") else - let bufnr = bufnr("") + let l:activeBufOrWin = l:useWinId ? win_getid() : bufnr("") endif call nerdtree#exec(s:NERDTree.GetWinNum() . " wincmd w") close - call nerdtree#exec(bufwinnr(bufnr) . " wincmd w") + if l:useWinId + call nerdtree#exec("call win_gotoid(" . l:activeBufOrWin . ")") + else + call nerdtree#exec(bufwinnr(l:activeBufOrWin) . " wincmd w") + endif else close endif
