mirror of
https://github.com/neovim/neovim.git
synced 2025-09-29 06:28:35 +00:00
refactor(sleep): simplify rube goldberg implementation of :sleep
As neovim does have event handling, we are checking for CTRL-C all the time, not once per second. Also, do_sleep() reimplements the same loop as LOOP_PROCESS_EVENTS_UNTIL() already contains internally. Fix the latter to use the right integer type, so we do not need the extra indirection.
This commit is contained in:
@@ -5658,15 +5658,11 @@ static void ex_sleep(exarg_T *eap)
|
||||
do_sleep(len);
|
||||
}
|
||||
|
||||
/// Sleep for "msec" milliseconds, but keep checking for a CTRL-C every second.
|
||||
/// Sleep for "msec" milliseconds, but return early on CTRL-C.
|
||||
void do_sleep(long msec)
|
||||
{
|
||||
ui_flush(); // flush before waiting
|
||||
for (long left = msec; !got_int && left > 0; left -= 1000L) {
|
||||
int next = left > 1000L ? 1000 : (int)left;
|
||||
LOOP_PROCESS_EVENTS_UNTIL(&main_loop, main_loop.events, (int)next, got_int);
|
||||
os_breakcheck();
|
||||
}
|
||||
LOOP_PROCESS_EVENTS_UNTIL(&main_loop, main_loop.events, msec, got_int);
|
||||
|
||||
// If CTRL-C was typed to interrupt the sleep, drop the CTRL-C from the
|
||||
// input buffer, otherwise a following call to input() fails.
|
||||
|
Reference in New Issue
Block a user