mirror of
https://github.com/neovim/neovim.git
synced 2025-12-10 00:22:41 +00:00
fix(paste): escape control characters in Cmdline mode
This commit is contained in:
@@ -175,7 +175,8 @@ do
|
|||||||
if not got_line1 then
|
if not got_line1 then
|
||||||
got_line1 = (#lines > 1)
|
got_line1 = (#lines > 1)
|
||||||
vim.api.nvim_set_option('paste', true) -- For nvim_input().
|
vim.api.nvim_set_option('paste', true) -- For nvim_input().
|
||||||
local line1 = lines[1]:gsub('<', '<lt>'):gsub('[\r\n\012\027]', ' ') -- Scrub.
|
-- Escape "<" and control characters
|
||||||
|
local line1 = lines[1]:gsub('<', '<lt>'):gsub('(%c)', '\022%1')
|
||||||
vim.api.nvim_input(line1)
|
vim.api.nvim_input(line1)
|
||||||
vim.api.nvim_set_option('paste', false)
|
vim.api.nvim_set_option('paste', false)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1097,6 +1097,18 @@ describe('API', function()
|
|||||||
:Foo^ |
|
:Foo^ |
|
||||||
]])
|
]])
|
||||||
end)
|
end)
|
||||||
|
it('pasting text with control characters in Cmdline mode', function()
|
||||||
|
local screen = Screen.new(20, 4)
|
||||||
|
screen:attach()
|
||||||
|
feed(':')
|
||||||
|
nvim('paste', 'normal! \023\022\006\027', true, -1)
|
||||||
|
screen:expect([[
|
||||||
|
|
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
:normal! ^W^V^F^[^ |
|
||||||
|
]])
|
||||||
|
end)
|
||||||
it('crlf=false does not break lines at CR, CRLF', function()
|
it('crlf=false does not break lines at CR, CRLF', function()
|
||||||
nvim('paste', 'line 1\r\n\r\rline 2\nline 3\rline 4\r', false, -1)
|
nvim('paste', 'line 1\r\n\r\rline 2\nline 3\rline 4\r', false, -1)
|
||||||
expect('line 1\r\n\r\rline 2\nline 3\rline 4\r')
|
expect('line 1\r\n\r\rline 2\nline 3\rline 4\r')
|
||||||
|
|||||||
Reference in New Issue
Block a user