diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-08-19 00:18:41 +0200 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-08-27 21:19:10 +0200 |
commit | 68ea9a7c8a7a74ec6ec9782528527cf70b92a376 (patch) | |
tree | 0b05e5f1ad611912163dcccf100bf965c1499a4f /src | |
parent | 6d277f43a287d62c10fb1ed8d93247ddf4a437d9 (diff) | |
download | rneovim-68ea9a7c8a7a74ec6ec9782528527cf70b92a376.tar.gz rneovim-68ea9a7c8a7a74ec6ec9782528527cf70b92a376.tar.bz2 rneovim-68ea9a7c8a7a74ec6ec9782528527cf70b92a376.zip |
TUI/paste: always flush on paste mode-change
Flush input before entering, not only when leaving, paste mode. Else
there could be pending input which will erroneously be sent to the paste
handler.
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/lua/vim.lua | 10 | ||||
-rw-r--r-- | src/nvim/tui/input.c | 6 |
2 files changed, 7 insertions, 9 deletions
diff --git a/src/nvim/lua/vim.lua b/src/nvim/lua/vim.lua index 922878d6ce..47feba0f85 100644 --- a/src/nvim/lua/vim.lua +++ b/src/nvim/lua/vim.lua @@ -96,17 +96,19 @@ end -- Default paste function. local function _paste(data) -- local eof = (data == {''}) - local curline = vim.api.nvim_call_function('line', {'.'}) + local curline = vim.api.nvim_call_function('line', {'.'}) - 1 vim.api.nvim_buf_set_lines( 0, curline, curline, false, data) - vim.api.nvim_call_function('cursor', {curline + #data, 1}) + vim.api.nvim_call_function( + 'cursor', + {curline + #data, 9999999}) + -- TODO: do not redraw (slow!) until paste is finished. -- if eof then - -- vim.api.nvim_command('redraw') - -- end + vim.api.nvim_command('redraw') return 0 end diff --git a/src/nvim/tui/input.c b/src/nvim/tui/input.c index dc79a22862..b16f93ae66 100644 --- a/src/nvim/tui/input.c +++ b/src/nvim/tui/input.c @@ -16,8 +16,6 @@ #include "nvim/os/input.h" #include "nvim/event/rstream.h" -#define PASTE_KEY "<Paste>" -#define PASTEPOST_KEY "<PastePost>" #define KEY_BUFFER_SIZE 0xfff #ifdef INCLUDE_GENERATED_DECLARATIONS @@ -401,9 +399,7 @@ static bool handle_bracketed_paste(TermInput *input) return true; } - if (!enable) { - tinput_flush(input, true); - } + tinput_flush(input, true); input->paste_enabled = enable; return true; } |