mirror of
https://github.com/neovim/neovim.git
synced 2025-09-30 23:18:33 +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;
|
tui->input.callbacks.primary_device_attr = tui_stop_cb;
|
||||||
terminfo_disable(tui);
|
terminfo_disable(tui);
|
||||||
|
|
||||||
// Wait until DA1 response is received
|
// 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);
|
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);
|
tui_terminal_stop(tui);
|
||||||
stream_set_blocking(tui->input.in_fd, true); // normalize stream (#2598)
|
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]') })
|
screen:expect({ any = vim.pesc('[Process exited 1]') })
|
||||||
end)
|
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()
|
it('no stack-use-after-scope with cursor color #22432', function()
|
||||||
screen:set_option('rgb', true)
|
screen:set_option('rgb', true)
|
||||||
command('set termguicolors')
|
command('set termguicolors')
|
||||||
|
Reference in New Issue
Block a user