mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
paste: tickle cursor
HACK: The cursor does not get repositioned after the paste completes. Scheduling a dummy event seems to fix it. Test case: 0. Revert this commit. 1. Paste some text in Normal-mode. 2. Notice the cursor is still in the cmdline area.
This commit is contained in:
parent
5b41070c63
commit
4344ac1111
@ -1252,11 +1252,15 @@ Boolean nvim_paste(String data, Integer phase, Error *err)
|
||||
}
|
||||
}
|
||||
}
|
||||
api_free_object(rv);
|
||||
api_free_array(args);
|
||||
if (!(State & CMDLINE) && !(State & INSERT) && (phase == -1 || phase == 3)) {
|
||||
AppendCharToRedobuff(ESC); // Dot-repeat.
|
||||
}
|
||||
api_free_object(rv);
|
||||
api_free_array(args);
|
||||
if (phase == -1 || phase == 3) {
|
||||
// XXX: Tickle main loop to ensure cursor is updated.
|
||||
loop_schedule_deferred(&main_loop, event_create(loop_dummy_event, 0));
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
@ -162,6 +162,10 @@ size_t loop_size(Loop *loop)
|
||||
return rv;
|
||||
}
|
||||
|
||||
void loop_dummy_event(void **argv)
|
||||
{
|
||||
}
|
||||
|
||||
static void async_cb(uv_async_t *handle)
|
||||
{
|
||||
Loop *l = handle->loop->data;
|
||||
|
@ -430,7 +430,7 @@ static void tui_main(UIBridgeData *bridge, UI *ui)
|
||||
tui_terminal_after_startup(ui);
|
||||
// Tickle `main_loop` with a dummy event, else the initial "focus-gained"
|
||||
// terminal response may not get processed until user hits a key.
|
||||
loop_schedule_deferred(&main_loop, event_create(tui_dummy_event, 0));
|
||||
loop_schedule_deferred(&main_loop, event_create(loop_dummy_event, 0));
|
||||
}
|
||||
// "Passive" (I/O-driven) loop: TUI thread "main loop".
|
||||
while (!tui_is_stopped(ui)) {
|
||||
@ -449,10 +449,6 @@ static void tui_main(UIBridgeData *bridge, UI *ui)
|
||||
xfree(data);
|
||||
}
|
||||
|
||||
static void tui_dummy_event(void **argv)
|
||||
{
|
||||
}
|
||||
|
||||
/// Handoff point between the main (ui_bridge) thread and the TUI thread.
|
||||
static void tui_scheduler(Event event, void *d)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user