aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-09-08 13:48:46 -0700
committerJustin M. Keyes <justinkz@gmail.com>2019-09-08 15:37:32 -0700
commit0dea44f93ce925baedf0f2d39d799f36671986b6 (patch)
tree359e022dcf6fe122a463dbd45cdeebce610aa592
parentccd947ca4a25edb59e00724d6fb20fb01f3b73f7 (diff)
downloadrneovim-0dea44f93ce925baedf0f2d39d799f36671986b6.tar.gz
rneovim-0dea44f93ce925baedf0f2d39d799f36671986b6.tar.bz2
rneovim-0dea44f93ce925baedf0f2d39d799f36671986b6.zip
paste/cmdline: discard all chunks after first line
Problem: If multiple paste "chunks" are streamed, chunks after the first line are pasted into the buffer. Solution: Check for cmdline-mode for all chunks in a paste-stream.
-rw-r--r--src/nvim/lua/vim.lua6
-rw-r--r--test/functional/terminal/tui_spec.lua7
2 files changed, 7 insertions, 6 deletions
diff --git a/src/nvim/lua/vim.lua b/src/nvim/lua/vim.lua
index e76dd9d062..7d5dc0bffc 100644
--- a/src/nvim/lua/vim.lua
+++ b/src/nvim/lua/vim.lua
@@ -191,10 +191,8 @@ paste = (function()
local line1, _ = string.gsub(lines[1], '[\r\n\012\027]', ' ') -- Scrub.
vim.api.nvim_input(line1)
vim.api.nvim_set_option('paste', false)
- elseif mode == 'i' or mode == 'R' then
- vim.api.nvim_put(lines, 'c', false, true)
- else
- vim.api.nvim_put(lines, 'c', true, true)
+ elseif mode ~= 'c' then
+ vim.api.nvim_put(lines, 'c', (mode ~= 'i' and mode ~= 'R'), true)
end
if phase ~= -1 and (now - tdots >= 100) then
local dots = ('.'):rep(tick % 4)
diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua
index e0d29d27ff..8fa7442087 100644
--- a/test/functional/terminal/tui_spec.lua
+++ b/test/functional/terminal/tui_spec.lua
@@ -363,7 +363,10 @@ describe('TUI', function()
feed_data('\027[D') -- <Left> to place cursor between quotes.
wait_for_mode('c')
-- "bracketed paste"
- feed_data('\027[200~line 1\nline 2\n\027[201~')
+ feed_data('\027[200~line 1\nline 2\n')
+ wait_for_mode('c')
+ feed_data('line 3\nline 4\n\027[201~')
+ wait_for_mode('c')
screen:expect{grid=[[
foo |
|
@@ -505,7 +508,7 @@ describe('TUI', function()
|
{4:~ }|
{5: }|
- {8:paste: Error executing lua: vim.lua:197: Vim:E21: }|
+ {8:paste: Error executing lua: vim.lua:195: Vim:E21: }|
{8:Cannot make changes, 'modifiable' is off} |
{10:Press ENTER or type command to continue}{1: } |
{3:-- TERMINAL --} |