wipeout "stale" nerdtree bufs

When :NERDTree is called several times and &hidden is set, stale
nerdtree bufs will exist. Wipe them out.
This commit is contained in:
Martin Grenfell 2015-11-19 23:44:39 +00:00
parent cedb40b4f5
commit a0de028688

View File

@ -62,7 +62,8 @@ function! s:Creator.createTabTree(name)
if g:NERDTree.IsOpen() if g:NERDTree.IsOpen()
call g:NERDTree.Close() call g:NERDTree.Close()
endif endif
unlet t:NERDTreeBufName
call self._removeTreeBufForTab()
endif endif
call self._createTreeWin() call self._createTreeWin()
@ -197,6 +198,15 @@ function! s:Creator._createTreeWin()
call self._setCommonBufOptions() call self._setCommonBufOptions()
endfunction endfunction
"FUNCTION: s:Creator._isBufHidden(nr) {{{1
function! s:Creator._isBufHidden(nr)
redir => bufs
ls!
redir END
return bufs =~ a:nr . '..h'
endfunction
"FUNCTION: s:Creator.New() {{{1 "FUNCTION: s:Creator.New() {{{1
function! s:Creator.New() function! s:Creator.New()
let newCreator = copy(self) let newCreator = copy(self)
@ -251,6 +261,23 @@ function! s:Creator._pathForString(str)
return path return path
endfunction endfunction
" Function: s:Creator._removeTreeBufForTab() {{{1
function! s:Creator._removeTreeBufForTab()
let buf = bufnr(t:NERDTreeBufName)
"if &hidden is not set then it will already be gone
if buf != -1
"nerdtree buf may be mirrored/displayed elsewhere
if self._isBufHidden(buf)
exec "bwipeout " . buf
endif
endif
unlet t:NERDTreeBufName
endfunction
"FUNCTION: s:Creator._setCommonBufOptions() {{{1 "FUNCTION: s:Creator._setCommonBufOptions() {{{1
function! s:Creator._setCommonBufOptions() function! s:Creator._setCommonBufOptions()
"throwaway buffer options "throwaway buffer options