From f966464168edb4cdb9d53729df0921d807abf6e3 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sat, 2 Apr 2022 23:52:36 +0800 Subject: [PATCH] fix(defx): autoclose filetree && skip floating windows --- config/plugins/defx.vim | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/config/plugins/defx.vim b/config/plugins/defx.vim index d5b3ef37e..0dc2f901c 100644 --- a/config/plugins/defx.vim +++ b/config/plugins/defx.vim @@ -61,11 +61,21 @@ augroup vfinit autocmd FileType defx call s:defx_init() " auto close last defx windows autocmd BufEnter * nested if - \ (!has('vim_starting') && winnr('$') == 1 && g:_spacevim_autoclose_filetree + \ (!has('vim_starting') && s:win_count() == 1 && g:_spacevim_autoclose_filetree \ && &filetype ==# 'defx') | \ call s:close_last_vimfiler_windows() | endif augroup END +function! s:win_count() abort + if has('nvim') && exists('*nvim_win_get_config') + return len(filter(range(1, winnr('$')), '!has_key(nvim_win_get_config(win_getid(v:val)), "col")')) + elseif exists('*popup_getoptions') + return len(filter(range(1, winnr('$')), '!has_key(popup_getoptions(win_getid(v:val)), "col")')) + else + return winnr('$') + endif +endfunction + " in this function, we should check if shell terminal still exists, " then close the terminal job before close vimfiler function! s:close_last_vimfiler_windows() abort