mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
fix(help): :help can focus unfocusable/hide window #34442
Problem: :help/:helpgrep/:lhelpgrep can focus unfocusable/hide window Solution: Ignore unfocusable/hidden window when reusing help buffer.
This commit is contained in:
@ -141,7 +141,7 @@ void ex_help(exarg_T *eap)
|
|||||||
} else {
|
} else {
|
||||||
wp = NULL;
|
wp = NULL;
|
||||||
FOR_ALL_WINDOWS_IN_TAB(wp2, curtab) {
|
FOR_ALL_WINDOWS_IN_TAB(wp2, curtab) {
|
||||||
if (bt_help(wp2->w_buffer)) {
|
if (bt_help(wp2->w_buffer) && !wp2->w_config.hide && wp2->w_config.focusable) {
|
||||||
wp = wp2;
|
wp = wp2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2671,7 +2671,7 @@ static win_T *qf_find_help_win(void)
|
|||||||
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
|
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
|
||||||
{
|
{
|
||||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||||
if (bt_help(wp->w_buffer)) {
|
if (bt_help(wp->w_buffer) && !wp->w_config.hide && wp->w_config.focusable) {
|
||||||
return wp;
|
return wp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6225,6 +6225,27 @@ describe('float window', function()
|
|||||||
test_float_mouse_no_focus()
|
test_float_mouse_no_focus()
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it(':help (focusable=false, hide=true)', function()
|
||||||
|
n.add_builddir_to_rtp()
|
||||||
|
local w = curwin()
|
||||||
|
for _, helpcmd in ipairs({
|
||||||
|
'help',
|
||||||
|
'helpgrep api-types',
|
||||||
|
'lhelpgrep api-types',
|
||||||
|
}) do
|
||||||
|
command(helpcmd)
|
||||||
|
local badwins = {
|
||||||
|
api.nvim_open_win(0, false, { focusable = false, relative = 'editor', width = 1, height = 1, row = 0, col = 0 }),
|
||||||
|
api.nvim_open_win(0, false, { hide = true, relative = 'editor', width = 1, height = 1, row = 0, col = 0 }),
|
||||||
|
}
|
||||||
|
command('helpclose')
|
||||||
|
command(helpcmd)
|
||||||
|
eq(false, tbl_contains(badwins, curwin()))
|
||||||
|
command('helpclose')
|
||||||
|
eq(w, curwin())
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
it('j', function()
|
it('j', function()
|
||||||
feed('<c-w>ji') -- INSERT to trigger screen change
|
feed('<c-w>ji') -- INSERT to trigger screen change
|
||||||
if multigrid then
|
if multigrid then
|
||||||
|
Reference in New Issue
Block a user