fix(events): trigger VimResume on next UI request

(cherry picked from commit cdd076d6c1)
This commit is contained in:
zeertzjq
2023-07-22 21:54:09 +08:00
committed by github-actions[bot]
parent d82f386201
commit e8ff921ed3
6 changed files with 94 additions and 33 deletions

View File

@@ -1,8 +1,11 @@
local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
local clear = helpers.clear
local command = helpers.command
local eq = helpers.eq
local eval = helpers.eval
local exec = helpers.exec
local feed = helpers.feed
local meths = helpers.meths
local request = helpers.request
local pcall_err = helpers.pcall_err
@@ -76,3 +79,59 @@ it('autocmds UIEnter/UILeave', function()
'UILeave',
}, eval('g:evs'))
end)
it('autocmds VimSuspend/VimResume #22041', function()
clear()
local screen = Screen.new()
screen:attach()
exec([[
let g:ev = []
autocmd VimResume * :call add(g:ev, 'r')
autocmd VimSuspend * :call add(g:ev, 's')
]])
eq(false, screen.suspended)
feed('<C-Z>')
screen:expect(function() eq (true, screen.suspended) end)
eq({ 's' }, eval('g:ev'))
screen.suspended = false
feed('<Ignore>')
eq({ 's', 'r' }, eval('g:ev'))
command('suspend')
screen:expect(function() eq (true, screen.suspended) end)
eq({ 's', 'r', 's' }, eval('g:ev'))
screen.suspended = false
meths.input_mouse('move', '', '', 0, 0, 0)
eq({ 's', 'r', 's', 'r' }, eval('g:ev'))
feed('<C-Z>')
screen:expect(function() eq (true, screen.suspended) end)
meths.ui_set_focus(false)
eq({ 's', 'r', 's', 'r', 's' }, eval('g:ev'))
screen.suspended = false
meths.ui_set_focus(true)
eq({ 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev'))
command('suspend')
screen:expect(function() eq (true, screen.suspended) end)
screen:detach()
eq({ 's', 'r', 's', 'r', 's', 'r', 's' }, eval('g:ev'))
screen.suspended = false
screen:attach()
eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev'))
eq(false, screen.suspended)
feed('<C-Z><C-Z><C-Z><C-Z>')
screen:expect(function() eq (true, screen.suspended) end)
eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's' }, eval('g:ev'))
screen.suspended = false
feed('<C-Z><C-Z><C-Z><C-Z>')
eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's' }, eval('g:ev'))
screen:expect(function() eq (true, screen.suspended) end)
screen.suspended = false
feed('i<C-R>=g:ev<CR>')
eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev'))
eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', '' },
meths.buf_get_lines(0, 0, -1, true))
end)