window.c: do BufEnter in correct window after closing help #7431

closes #7429

Problem: after a help window was closed, a window was selected and its
autocommands triggered. After that, restore_snapshot was called and the
focused window changed, confusing the user.

Solution: Add function get_snapshot_focus() that returns the window that
holds the cursor in a snapshot. Use this function in win_close to make
sure the right window is selected before any autocommand is triggered.
This commit is contained in:
glacambre
2017-11-26 13:29:32 +01:00
committed by Justin M. Keyes
parent 4a5bc6275d
commit abe38f7d26
2 changed files with 42 additions and 0 deletions

View File

@@ -31,4 +31,17 @@ describe('autocmd BufEnter', function()
eq(1, eval("exists('g:dir_bufenter')")) -- Did BufEnter for the directory.
eq(2, eval("bufnr('%')")) -- Switched to the dir buffer.
end)
it('triggered by ":split normal|:help|:bw"', function()
command("split normal")
command("wincmd j")
command("helptags runtime/doc")
command("help")
command("wincmd L")
command("autocmd BufEnter normal let g:bufentered = 1")
command("bw")
eq(1, eval('bufnr("%")')) -- The cursor is back to the bottom window
eq(0, eval("exists('g:bufentered')")) -- The autocmd hasn't been triggered
end)
end)