diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-02-07 12:11:22 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-07 12:11:22 +0800 |
commit | 6725565258930ba430cfb925fd1671596a8a4342 (patch) | |
tree | 9671a7cab469f5ea309be6ce3c4ab3f39f55e97a /src/nvim/state.c | |
parent | c0b99bb1de8de967d82fc29780996ed4060516c1 (diff) | |
download | rneovim-6725565258930ba430cfb925fd1671596a8a4342.tar.gz rneovim-6725565258930ba430cfb925fd1671596a8a4342.tar.bz2 rneovim-6725565258930ba430cfb925fd1671596a8a4342.zip |
fix(event-loop): process input before events (#27358)
Problem:
When nvim_input is followed immediately by non-fast events on RPC, both
events and input are available after the polling done by the os_inchar()
in state_enter(), but state_enter() then chooses to process events even
if input is available, which is inconsistent with state_handle_k_event()
that stops processing events once input is available.
Solution:
Also check for available input after the os_inchar() in state_enter().
Diffstat (limited to 'src/nvim/state.c')
-rw-r--r-- | src/nvim/state.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/nvim/state.c b/src/nvim/state.c index 527acee306..0df060ecf4 100644 --- a/src/nvim/state.c +++ b/src/nvim/state.c @@ -79,7 +79,7 @@ getkey: // mapping engine. os_inchar(NULL, 0, -1, typebuf.tb_change_cnt, main_loop.events); // If an event was put into the queue, we send K_EVENT directly. - if (!multiqueue_empty(main_loop.events)) { + if (!input_available() && !multiqueue_empty(main_loop.events)) { key = K_EVENT; } else { goto getkey; |