mirror of
https://github.com/neovim/neovim.git
synced 2026-02-07 04:17:22 +00:00
Merge #15440 close 'shell' :terminal automatically
This commit is contained in:
@@ -103,12 +103,13 @@ describe('autocmd TermClose', function()
|
||||
|
||||
it('reports the correct <abuf>', function()
|
||||
command('set hidden')
|
||||
command('set shellcmdflag=EXE')
|
||||
command('autocmd TermClose * let g:abuf = expand("<abuf>")')
|
||||
command('edit foo')
|
||||
command('edit bar')
|
||||
eq(2, eval('bufnr("%")'))
|
||||
|
||||
command('terminal')
|
||||
command('terminal ls')
|
||||
retry(nil, nil, function() eq(3, eval('bufnr("%")')) end)
|
||||
|
||||
command('buffer 1')
|
||||
|
||||
@@ -137,23 +137,29 @@ describe(':terminal (with fake shell)', function()
|
||||
-- shell-test.c is a fake shell that prints its arguments and exits.
|
||||
nvim('set_option_value', 'shell', testprg('shell-test'), {})
|
||||
nvim('set_option_value', 'shellcmdflag', 'EXE', {})
|
||||
nvim('set_option_value', 'shellxquote', '', {})
|
||||
end)
|
||||
|
||||
-- Invokes `:terminal {cmd}` using a fake shell (shell-test.c) which prints
|
||||
-- the {cmd} and exits immediately .
|
||||
-- the {cmd} and exits immediately.
|
||||
-- When no argument is given and the exit code is zero, the terminal buffer
|
||||
-- closes automatically.
|
||||
local function terminal_with_fake_shell(cmd)
|
||||
feed_command("terminal "..(cmd and cmd or ""))
|
||||
end
|
||||
|
||||
it('with no argument, acts like termopen()', function()
|
||||
skip(is_os('win'))
|
||||
terminal_with_fake_shell()
|
||||
-- Use the EXIT subcommand to end the process with a non-zero exit code to
|
||||
-- prevent the buffer from closing automatically
|
||||
nvim('set_option_value', 'shellcmdflag', 'EXIT', {})
|
||||
terminal_with_fake_shell(1)
|
||||
retry(nil, 4 * screen.timeout, function()
|
||||
screen:expect([[
|
||||
^ready $ |
|
||||
[Process exited 0] |
|
||||
^ |
|
||||
[Process exited 1] |
|
||||
|
|
||||
:terminal |
|
||||
:terminal 1 |
|
||||
]])
|
||||
end)
|
||||
end)
|
||||
@@ -245,12 +251,13 @@ describe(':terminal (with fake shell)', function()
|
||||
|
||||
it('works with :find', function()
|
||||
skip(is_os('win'))
|
||||
terminal_with_fake_shell()
|
||||
nvim('set_option_value', 'shellcmdflag', 'EXIT', {})
|
||||
terminal_with_fake_shell(1)
|
||||
screen:expect([[
|
||||
^ready $ |
|
||||
[Process exited 0] |
|
||||
^ |
|
||||
[Process exited 1] |
|
||||
|
|
||||
:terminal |
|
||||
:terminal 1 |
|
||||
]])
|
||||
eq('term://', string.match(eval('bufname("%")'), "^term://"))
|
||||
feed([[<C-\><C-N>]])
|
||||
|
||||
@@ -514,7 +514,9 @@ describe("'scrollback' option", function()
|
||||
|
||||
-- _Global_ scrollback=-1 defaults :terminal to 10_000.
|
||||
command('setglobal scrollback=-1')
|
||||
command('terminal')
|
||||
-- Pass a command to prevent the terminal buffer from automatically
|
||||
-- closing. The ':' command is just a no-op.
|
||||
command('terminal :')
|
||||
eq(10000, meths.get_option_value('scrollback', {}))
|
||||
|
||||
-- _Local_ scrollback=-1 in :terminal forces the _maximum_.
|
||||
|
||||
@@ -2075,26 +2075,26 @@ describe('TUI FocusGained/FocusLost', function()
|
||||
end)
|
||||
|
||||
it('in terminal-mode', function()
|
||||
feed_data(':set shell='..testprg('shell-test')..'\n')
|
||||
feed_data(':set shell='..testprg('shell-test')..' shellcmdflag=EXE\n')
|
||||
feed_data(':set noshowmode laststatus=0\n')
|
||||
|
||||
feed_data(':terminal\n')
|
||||
feed_data(':terminal zia\n')
|
||||
-- Wait for terminal to be ready.
|
||||
screen:expect{grid=[[
|
||||
{1:r}eady $ |
|
||||
{1:r}eady $ zia |
|
||||
|
|
||||
[Process exited 0] |
|
||||
|
|
||||
|
|
||||
|
|
||||
:terminal |
|
||||
:terminal zia |
|
||||
{3:-- TERMINAL --} |
|
||||
]]}
|
||||
|
||||
feed_data('\027[I')
|
||||
screen:expect{grid=[[
|
||||
{1:r}eady $ |
|
||||
[Process exited 0] |
|
||||
{1:r}eady $ zia |
|
||||
|
|
||||
[Process exited 0] |
|
||||
|
|
||||
|
|
||||
gained |
|
||||
@@ -2103,9 +2103,9 @@ describe('TUI FocusGained/FocusLost', function()
|
||||
|
||||
feed_data('\027[O')
|
||||
screen:expect([[
|
||||
{1:r}eady $ |
|
||||
[Process exited 0] |
|
||||
{1:r}eady $ zia |
|
||||
|
|
||||
[Process exited 0] |
|
||||
|
|
||||
|
|
||||
lost |
|
||||
|
||||
Reference in New Issue
Block a user