mirror of
https://github.com/neovim/neovim.git
synced 2025-09-30 15:08:35 +00:00
fix(tui): don't wait for DA1 response when stdin is closed (#35745)
(cherry picked from commit 4a69847df4
)
This commit is contained in:

committed by
github-actions[bot]
![github-actions[bot]](/assets/img/avatar_default.png)
parent
85e4503f18
commit
924a8e4238
@@ -646,8 +646,13 @@ void tui_stop(TUIData *tui)
|
||||
tui->input.callbacks.primary_device_attr = tui_stop_cb;
|
||||
terminfo_disable(tui);
|
||||
|
||||
// Wait until DA1 response is received
|
||||
LOOP_PROCESS_EVENTS_UNTIL(tui->loop, tui->loop->events, EXIT_TIMEOUT_MS, tui->stopped);
|
||||
// Wait until DA1 response is received, or stdin is closed (#35744).
|
||||
LOOP_PROCESS_EVENTS_UNTIL(tui->loop, tui->loop->events, EXIT_TIMEOUT_MS,
|
||||
tui->stopped || tui->input.read_stream.did_eof);
|
||||
if (!tui->stopped && !tui->input.read_stream.did_eof) {
|
||||
WLOG("TUI: timed out waiting for DA1 response");
|
||||
}
|
||||
tui->stopped = true;
|
||||
|
||||
tui_terminal_stop(tui);
|
||||
stream_set_blocking(tui->input.in_fd, true); // normalize stream (#2598)
|
||||
|
@@ -2159,6 +2159,16 @@ describe('TUI', function()
|
||||
screen:expect({ any = vim.pesc('[Process exited 1]') })
|
||||
end)
|
||||
|
||||
it('exits immediately when stdin is closed #35744', function()
|
||||
local chan = api.nvim_get_option_value('channel', { buf = 0 })
|
||||
local pid = fn.jobpid(chan)
|
||||
fn.chanclose(chan)
|
||||
retry(nil, 50, function()
|
||||
eq(vim.NIL, api.nvim_get_proc(pid))
|
||||
end)
|
||||
screen:expect({ any = vim.pesc('[Process exited 1]') })
|
||||
end)
|
||||
|
||||
it('no stack-use-after-scope with cursor color #22432', function()
|
||||
screen:set_option('rgb', true)
|
||||
command('set termguicolors')
|
||||
|
Reference in New Issue
Block a user