diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2021-01-04 19:04:21 +0100 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2021-03-08 16:08:58 +0100 |
commit | f901149de4bc69f7aa4abe00dea13bca99b9c765 (patch) | |
tree | 60857ad16af1a036af89ab7c125dc250f9423f54 /src/nvim/eval/funcs.c | |
parent | c12ea02e0b5d465e2c4b7d8bba028d069bdf7008 (diff) | |
download | rneovim-f901149de4bc69f7aa4abe00dea13bca99b9c765.tar.gz rneovim-f901149de4bc69f7aa4abe00dea13bca99b9c765.tar.bz2 rneovim-f901149de4bc69f7aa4abe00dea13bca99b9c765.zip |
state: throttle batched event processing when input is available
before, calling vim.schedule() from inside an event would execute
the scheduled callback immediately after this event without
checking for user input in between. Break event processing
whenever user input or an interrupt is available.
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r-- | src/nvim/eval/funcs.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 8c8e0d568b..60229e1ebc 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -3029,10 +3029,11 @@ static void f_getchar(typval_T *argvars, typval_T *rettv, FunPtr fptr) if (argvars[0].v_type == VAR_UNKNOWN) { // getchar(): blocking wait. + // TODO(bfredl): deduplicate shared logic with state_enter ? if (!(char_avail() || using_script() || input_available())) { (void)os_inchar(NULL, 0, -1, 0, main_loop.events); if (!multiqueue_empty(main_loop.events)) { - multiqueue_process_events(main_loop.events); + state_handle_k_event(); continue; } } |