aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/lua/executor.c
diff options
context:
space:
mode:
authorGregory Anders <greg@gpanders.com>2025-03-07 12:16:39 -0600
committerGitHub <noreply@github.com>2025-03-07 12:16:39 -0600
commit3d49c55d3c33a243f4236cf57b179608c288b145 (patch)
tree506520f8fd41fe820ee039f18d9e8ea42d66356b /src/nvim/lua/executor.c
parent8da59060c6dc9899d1f66d1c9b501b80496cc2e8 (diff)
downloadrneovim-3d49c55d3c33a243f4236cf57b179608c288b145.tar.gz
rneovim-3d49c55d3c33a243f4236cf57b179608c288b145.tar.bz2
rneovim-3d49c55d3c33a243f4236cf57b179608c288b145.zip
fix(terminal): avoid rescheduling events onto the same queue (#32755)
Problem: When a function like vim.wait() is used, we continuously drain the main event queue until it is empty, never stopping for user input. This means the libuv timer never runs and the terminal never gets refreshed, so emit_termrequest continously reschedules itself onto the same event queue, causing an infinite loop. Solution: Use a separate "pending" event queue, where events that require a terminal refresh are temporarily placed. Drain this queue after a terminal refresh and events are copied back onto the main queue. This prevents infinite loops since the main event queue will always be able to properly drain.
Diffstat (limited to 'src/nvim/lua/executor.c')
0 files changed, 0 insertions, 0 deletions