Skip to content

Commit

Permalink
fix: Do NOT count popup windows on auto duplication (#474)
Browse files Browse the repository at this point in the history
  • Loading branch information
lambdalisue committed May 27, 2023
1 parent e08060c commit 6db56d1
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion autoload/fern/internal/viewer/auto_duplication.vim
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ function! fern#internal#viewer#auto_duplication#init() abort
endfunction

function! s:duplicate() abort
if len(win_findbuf(bufnr('%'))) < 2
if s:count_non_popup_windows('%') < 2
return
endif
" Only one window is allowed to display one fern buffer.
Expand All @@ -21,3 +21,22 @@ function! s:duplicate() abort
let bufname = fern#fri#format(fri)
execute printf('silent! keepalt edit %s', fnameescape(bufname))
endfunction

function! s:count_non_popup_windows(expr) abort
let winids = win_findbuf(bufnr(a:expr))
return len(filter(winids, {_, v -> !s:is_popup_window(v)}))
endfunction

if exists('*win_gettype')
function! s:is_popup_window(winid) abort
return win_gettype(a:winid) ==# 'popup'
endfunction
elseif exists('*nvim_win_get_config')
function! s:is_popup_window(winid) abort
return nvim_win_get_config(a:winid).relative !=# ''
endfunction
else
function! s:is_popup_window(winid) abort
return getbufvar(winbufnr(a:winid), '&buftype') ==# 'popup'
endfunction
endif

0 comments on commit 6db56d1

Please sign in to comment.