mirror of
https://github.com/neovim/neovim.git
synced 2024-12-28 14:31:13 -07:00
69e9cda5ac
The gchar_cursor() == NUL check is already done in ins_ctrl_o.
ins_esc changes gchar_cursor() so this if block is probably never
entered.
Issue:
Pressing CTRL-O in insert mode at the end of the line and typing
:startinsert moves the cursor 1 column back, when I expect the cursor
to remain at the end of the line
This is a regression from Vim behavior. Since at least Vim version 7.0,
Vim returns you to insert mode at the end of the line.
091e7d033c
is the first bad neovim commit
Steps to reproduce using `nvim -u NORC`:
`aaaa<C-o>:startinsert<CR>`
Fixes #6962
44 lines
1.1 KiB
Lua
44 lines
1.1 KiB
Lua
local helpers = require('test.functional.helpers')(after_each)
|
|
local clear = helpers.clear
|
|
local eq = helpers.eq
|
|
local eval = helpers.eval
|
|
local expect = helpers.expect
|
|
local feed = helpers.feed
|
|
local insert = helpers.insert
|
|
|
|
describe('insert-mode Ctrl-O', function()
|
|
before_each(clear)
|
|
|
|
it('enters command mode for one command', function()
|
|
feed('ihello world<C-o>')
|
|
feed(':let ctrlo = "test"<CR>')
|
|
feed('iii')
|
|
expect('hello worldiii')
|
|
eq(1, eval('ctrlo ==# "test"'))
|
|
end)
|
|
|
|
it('re-enters insert mode at the end of the line when running startinsert', function()
|
|
-- #6962
|
|
feed('ihello world<C-o>')
|
|
feed(':startinsert<CR>')
|
|
feed('iii')
|
|
expect('hello worldiii')
|
|
end)
|
|
|
|
it('re-enters insert mode at the beginning of the line when running startinsert', function()
|
|
insert('hello world')
|
|
feed('0<C-o>')
|
|
feed(':startinsert<CR>')
|
|
feed('aaa')
|
|
expect('aaahello world')
|
|
end)
|
|
|
|
it('re-enters insert mode in the middle of the line when running startinsert', function()
|
|
insert('hello world')
|
|
feed('bi<C-o>')
|
|
feed(':startinsert<CR>')
|
|
feed('ooo')
|
|
expect('hello oooworld')
|
|
end)
|
|
end)
|