man.vim: never switch to non-man window #11286

In order to find if there was already an open man page, the :Man command
would cycle through each window to see if &ft=='man'. This triggers
autocmds, e.g. BufEnter, unnecessarily and can have unexpected
side-effects.

Change the logic to check each window's ft without switching to it
unless it is actually a man window.

Signed-off-by: Joshua Rubin <me@jawa.dev>
This commit is contained in:
Joshua Rubin 2019-10-25 10:41:22 -06:00 committed by Justin M. Keyes
parent 4f4f5ef4fd
commit 99aa166cb1

View File

@ -284,20 +284,16 @@ function! s:extract_sect_and_name_path(path) abort
endfunction
function! s:find_man() abort
if &filetype ==# 'man'
return 1
elseif winnr('$') ==# 1
return 0
endif
let thiswin = winnr()
while 1
wincmd w
if &filetype ==# 'man'
let l:win = 1
while l:win <= winnr('$')
let l:buf = winbufnr(l:win)
if getbufvar(l:buf, '&filetype', '') ==# 'man'
execute l:win.'wincmd w'
return 1
elseif thiswin ==# winnr()
return 0
endif
let l:win += 1
endwhile
return 0
endfunction
function! s:error(msg) abort