else if (ins_need_undo)
{
if (u_save_cursor() == OK)
+ {
+ // A command or event may have moved the cursor after syncing undo.
+ Insstart = curwin->w_cursor;
+ Insstart_textlen = (colnr_T)linetabsize_str(ml_get_curline());
ins_need_undo = FALSE;
+ }
}
#ifdef FEAT_FOLDING
bw!
endfunc
+func Test_undo_line_backspace_after_insert_cmd_cursor_movement()
+ new
+ setlocal backspace=eol undolevels=100
+ call setline(1, ['', '', 'abc', 'def'])
+ call cursor(4, 1)
+
+ let v:errmsg = ''
+ call feedkeys("i\<Cmd>setlocal undolevels=101 | call cursor(3, 1)\<CR>"
+ \ .. "\<BS>\<BS>\<Esc>u", 'xt')
+
+ call assert_equal('', v:errmsg)
+ call assert_equal(['', '', 'abc', 'def'], getline(1, '$'))
+ bwipe!
+endfunc
" vim: shiftwidth=2 sts=2 expandtab