diff options
-rw-r--r-- | src/nvim/lua/vim.lua | 4 | ||||
-rw-r--r-- | test/functional/terminal/tui_spec.lua | 29 |
2 files changed, 31 insertions, 2 deletions
diff --git a/src/nvim/lua/vim.lua b/src/nvim/lua/vim.lua index f8e52d31c9..98519f7848 100644 --- a/src/nvim/lua/vim.lua +++ b/src/nvim/lua/vim.lua @@ -196,7 +196,9 @@ paste = (function() if phase < 2 and mode ~= 'i' and mode ~= 'R' then vim.api.nvim_put(lines, 'c', true, true) -- XXX: Normal-mode: workaround bad cursor-placement after first chunk. - vim.api.nvim_command('normal! a') + if mode ~= 't' then + vim.api.nvim_command('normal! a') + end else vim.api.nvim_put(lines, 'c', false, true) end diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index 3d9623a158..789f5d4c2f 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -306,6 +306,33 @@ describe('TUI', function() expect_child_buf_lines({''}) end) + it('paste: terminal mode', function() + feed_data(':set statusline=^^^^^^^\n') + feed_data(':terminal '..nvim_dir..'/tty-test\n') + feed_data('i') + screen:expect{grid=[[ + tty ready | + {1: } | + | + | + {5:^^^^^^^ }| + {3:-- TERMINAL --} | + {3:-- TERMINAL --} | + ]]} + feed_data('\027[200~') + feed_data('hallo') + feed_data('\027[201~') + screen:expect{grid=[[ + tty ready | + hallo{1: } | + | + | + {5:^^^^^^^ }| + {3:-- TERMINAL --} | + {3:-- TERMINAL --} | + ]]} + end) + it('paste: normal-mode (+CRLF #10872)', function() feed_data(':set ruler') wait_for_mode('c') @@ -512,7 +539,7 @@ describe('TUI', function() | {4:~ }| {5: }| - {8:paste: Error executing lua: vim.lua:196: Vim:E21: }| + {8:paste: Error executing lua: vim.lua:197: Vim:E21: }| {8:Cannot make changes, 'modifiable' is off} | {10:Press ENTER or type command to continue}{1: } | {3:-- TERMINAL --} | |