nerdtree

A tree explorer plugin for vim.
Index Commits Files Refs
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:
Mlib/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