diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-08-26 03:15:09 +0200 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-08-27 22:13:45 +0200 |
commit | 4344ac11119abd20ba911d72cf540321277dd150 (patch) | |
tree | 59eaf35103fb7cd8fdc6c3bf96703b4d3dbf46e8 /src/nvim/api/vim.c | |
parent | 5b41070c639f979023178042bea8e5fcc8a898fe (diff) | |
download | rneovim-4344ac11119abd20ba911d72cf540321277dd150.tar.gz rneovim-4344ac11119abd20ba911d72cf540321277dd150.tar.bz2 rneovim-4344ac11119abd20ba911d72cf540321277dd150.zip |
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.
Diffstat (limited to 'src/nvim/api/vim.c')
-rw-r--r-- | src/nvim/api/vim.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index 6d6fd85266..3631fbff66 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -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; } |