mirror of
https://github.com/neovim/neovim.git
synced 2026-09-21 21:17:49 +00:00
`tui_terminal_after_startup` gets called right after resuming from
suspending (via `Ctrl-z`) already (not delayed as with the startup
itself), and would set `waiting_for_bg_response` to false then directly.
This results in the terminal response not being processed then anymore,
and leaking into Neovim itself.
This changes it to try 5 times always, which means that it typically
would stop after a few characters of input from the user typically, e.g.
with tmux, which does not send a reply.
While it might be better to have something based on the time (e.g. only
wait for max 1s), this appears to be easier to do.
Fixes regression in 8a4ae3d.
37 lines
841 B
C
37 lines
841 B
C
#ifndef NVIM_TUI_INPUT_H
|
|
#define NVIM_TUI_INPUT_H
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include <termkey.h>
|
|
#include "nvim/event/stream.h"
|
|
#include "nvim/event/time.h"
|
|
|
|
typedef struct term_input {
|
|
int in_fd;
|
|
// Phases: -1=all 0=disabled 1=first-chunk 2=continue 3=last-chunk
|
|
int8_t paste;
|
|
bool waiting;
|
|
int8_t waiting_for_bg_response;
|
|
TermKey *tk;
|
|
#if TERMKEY_VERSION_MAJOR > 0 || TERMKEY_VERSION_MINOR > 18
|
|
TermKey_Terminfo_Getstr_Hook *tk_ti_hook_fn; ///< libtermkey terminfo hook
|
|
#endif
|
|
TimeWatcher timer_handle;
|
|
Loop *loop;
|
|
Stream read_stream;
|
|
RBuffer *key_buffer;
|
|
uv_mutex_t key_buffer_mutex;
|
|
uv_cond_t key_buffer_cond;
|
|
} TermInput;
|
|
|
|
#ifdef INCLUDE_GENERATED_DECLARATIONS
|
|
# include "tui/input.h.generated.h"
|
|
#endif
|
|
|
|
#ifdef UNIT_TESTING
|
|
bool ut_handle_background_color(TermInput *input);
|
|
#endif
|
|
|
|
#endif // NVIM_TUI_INPUT_H
|