Skip to content

Commit cdec132

Browse files
authored
Merge pull request #475 from lambdalisue/fix-viewer-auto-duplication
fix: Do NOT count popup windows on auto duplication (#474)
2 parents e3e6ce4 + 6db56d1 commit cdec132

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

autoload/fern/internal/viewer/auto_duplication.vim

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function! fern#internal#viewer#auto_duplication#init() abort
1111
endfunction
1212

1313
function! s:duplicate() abort
14-
if len(win_findbuf(bufnr('%'))) < 2
14+
if s:count_non_popup_windows('%') < 2
1515
return
1616
endif
1717
" Only one window is allowed to display one fern buffer.
@@ -21,3 +21,22 @@ function! s:duplicate() abort
2121
let bufname = fern#fri#format(fri)
2222
execute printf('silent! keepalt edit %s', fnameescape(bufname))
2323
endfunction
24+
25+
function! s:count_non_popup_windows(expr) abort
26+
let winids = win_findbuf(bufnr(a:expr))
27+
return len(filter(winids, {_, v -> !s:is_popup_window(v)}))
28+
endfunction
29+
30+
if exists('*win_gettype')
31+
function! s:is_popup_window(winid) abort
32+
return win_gettype(a:winid) ==# 'popup'
33+
endfunction
34+
elseif exists('*nvim_win_get_config')
35+
function! s:is_popup_window(winid) abort
36+
return nvim_win_get_config(a:winid).relative !=# ''
37+
endfunction
38+
else
39+
function! s:is_popup_window(winid) abort
40+
return getbufvar(winbufnr(a:winid), '&buftype') ==# 'popup'
41+
endfunction
42+
endif

0 commit comments

Comments
 (0)