aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/_editor.lua
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-03-06 06:56:24 +0800
committerzeertzjq <zeertzjq@outlook.com>2022-03-15 18:15:18 +0800
commit9b1e1fbc9f795921afd25ba38be5c79dec8b04d2 (patch)
tree00958d57b9a8d7691f6544512af18fe7e349ee98 /runtime/lua/vim/_editor.lua
parentbef7552f7088ff411bd68fc236cfd7b269ad157e (diff)
downloadrneovim-9b1e1fbc9f795921afd25ba38be5c79dec8b04d2.tar.gz
rneovim-9b1e1fbc9f795921afd25ba38be5c79dec8b04d2.tar.bz2
rneovim-9b1e1fbc9f795921afd25ba38be5c79dec8b04d2.zip
fix(paste): use getcmdtype() to determine whether in cmdline mode
Diffstat (limited to 'runtime/lua/vim/_editor.lua')
-rw-r--r--runtime/lua/vim/_editor.lua12
1 files changed, 6 insertions, 6 deletions
diff --git a/runtime/lua/vim/_editor.lua b/runtime/lua/vim/_editor.lua
index a0c60a7dcf..8000730795 100644
--- a/runtime/lua/vim/_editor.lua
+++ b/runtime/lua/vim/_editor.lua
@@ -156,21 +156,21 @@ do
--- - 3: ends the paste (exactly once)
---@returns false if client should cancel the paste.
function vim.paste(lines, phase)
- local call = vim.api.nvim_call_function
local now = vim.loop.now()
- local mode = call('mode', {}):sub(1,1)
+ local mode = vim.api.nvim_get_mode().mode
+ local is_cmdline = vim.fn.getcmdtype() ~= ''
if phase < 2 then -- Reset flags.
tdots, tick, got_line1 = now, 0, false
- elseif mode ~= 'c' then
+ elseif not is_cmdline then
vim.api.nvim_command('undojoin')
end
- if mode == 'c' and not got_line1 then -- cmdline-mode: paste only 1 line.
+ if is_cmdline and not got_line1 then -- cmdline-mode: paste only 1 line.
got_line1 = (#lines > 1)
vim.api.nvim_set_option('paste', true) -- For nvim_input().
local line1 = lines[1]:gsub('<', '<lt>'):gsub('[\r\n\012\027]', ' ') -- Scrub.
vim.api.nvim_input(line1)
vim.api.nvim_set_option('paste', false)
- elseif mode ~= 'c' then
+ elseif not is_cmdline then
if phase < 2 and mode:find('^[vV\22sS\19]') then
vim.api.nvim_command([[exe "normal! \<Del>"]])
vim.api.nvim_put(lines, 'c', false, true)
@@ -178,7 +178,7 @@ do
vim.api.nvim_put(lines, 'c', true, true)
-- XXX: Normal-mode: workaround bad cursor-placement after first chunk.
vim.api.nvim_command('normal! a')
- elseif phase < 2 and mode == 'R' then
+ elseif phase < 2 and mode:find('^R') then
local nchars = 0
for _, line in ipairs(lines) do
nchars = nchars + line:len()