Mercurial > vim
diff src/testdir/test_suspend.vim @ 23165:a916fca16d4b v8.2.2128
patch 8.2.2128: there is no way to do something on CTRL-Z
Commit: https://github.com/vim/vim/commit/100118c73ac068137cd298d22953896242752523
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Dec 11 19:30:34 2020 +0100
patch 8.2.2128: there is no way to do something on CTRL-Z
Problem: There is no way to do something on CTRL-Z.
Solution: Add VimSuspend and VimResume autocommand events. (closes https://github.com/vim/vim/issues/7450)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 11 Dec 2020 19:45:04 +0100 |
parents | 08940efa6b4e |
children | 3071d91e52f0 |
line wrap: on
line diff
--- a/src/testdir/test_suspend.vim +++ b/src/testdir/test_suspend.vim @@ -61,4 +61,48 @@ func Test_suspend() call delete('Xfoo') endfunc +func Test_suspend_autocmd() + CheckFeature terminal + CheckExecutable /bin/sh + + let buf = term_start('/bin/sh', #{term_rows: 6}) + " Wait for shell prompt. + call WaitForAssert({-> assert_match('[$#] $', term_getline(buf, '.'))}) + + call term_sendkeys(buf, v:progpath + \ . " --clean -X" + \ . " -c 'set nu'" + \ . " -c 'let g:count = 0'" + \ . " -c 'au VimSuspend * let g:count += 1'" + \ . " -c 'au VimResume * let g:count += 1'" + \ . " -c 'call setline(1, \"foo\")'" + \ . " Xfoo\<CR>") + " Cursor in terminal buffer should be on first line in spawned vim. + call WaitForAssert({-> assert_equal(' 1 foo', term_getline(buf, '.'))}) + + for suspend_cmd in [":suspend\<CR>", + \ ":stop\<CR>", + \ ":suspend!\<CR>", + \ ":stop!\<CR>", + \ "\<C-Z>"] + " Suspend and wait for shell prompt. Then "fg" will restore Vim. + call term_sendkeys(buf, suspend_cmd) + call CheckSuspended(buf, 0) + endfor + + call term_sendkeys(buf, ":echo g:count\<CR>") + call TermWait(buf) + call WaitForAssert({-> assert_match('^10', term_getline(buf, 6))}) + + " Quit gracefully to dump coverage information. + call term_sendkeys(buf, ":qall!\<CR>") + call TermWait(buf) + " Wait until Vim actually exited and shell shows a prompt + call WaitForAssert({-> assert_match('[$#] $', term_getline(buf, '.'))}) + call StopShellInTerminal(buf) + + exe buf . 'bwipe!' + call delete('Xfoo') +endfunc + " vim: shiftwidth=2 sts=2 expandtab