From 4389401a7c82ca43a3634f65f57815af06fe9abd Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Mon, 19 Aug 2019 00:41:58 +0200 Subject: paste: abort paste if handler does not return true --- src/nvim/lua/vim.lua | 2 +- src/nvim/tui/input.c | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/nvim/lua/vim.lua b/src/nvim/lua/vim.lua index 47feba0f85..54fce47fd0 100644 --- a/src/nvim/lua/vim.lua +++ b/src/nvim/lua/vim.lua @@ -109,7 +109,7 @@ local function _paste(data) -- TODO: do not redraw (slow!) until paste is finished. -- if eof then vim.api.nvim_command('redraw') - return 0 + return true -- Paste will not continue if not returning `true`. end -- TODO(ZyX-I): Create compatibility layer. diff --git a/src/nvim/tui/input.c b/src/nvim/tui/input.c index b16f93ae66..163bc41dae 100644 --- a/src/nvim/tui/input.c +++ b/src/nvim/tui/input.c @@ -133,9 +133,8 @@ static void tinput_wait_enqueue(void **argv) Object fret = nvim_execute_lua(STATIC_CSTR_AS_STRING("return vim._paste(...)"), args, &err); - if ((fret.type == kObjectTypeInteger && fret.data.integer) - || (fret.type == kObjectTypeBoolean && fret.data.boolean) - || (fret.type == kObjectTypeString && fret.data.string.size)) { + if (fret.type != kObjectTypeBoolean || !fret.data.boolean) { + // Abort paste if handler does not return true. input->paste_enabled = false; } api_free_object(fret); -- cgit