vim-patch:8.2.0649: undo problem whn an InsertLeave autocommand resets undo

Problem:    Undo problem whn an InsertLeave autocommand resets undo. (Kutsan
            Kaplan)
Solution:   Do not create a new undo block when leaving Insert mode.
db93495d27
This commit is contained in:
Jan Edmund Lazo 2020-04-28 19:05:07 -04:00
parent a576bf6196
commit cf9887c838
No known key found for this signature in database
GPG Key ID: 64915E6E9F735B15
2 changed files with 18 additions and 2 deletions

View File

@ -9129,7 +9129,8 @@ static int ins_apply_autocmds(event_T event)
// If u_savesub() was called then we are not prepared to start
// a new line. Call u_save() with no contents to fix that.
if (tick != buf_get_changedtick(curbuf)) {
// Except when leaving Insert mode.
if (event != EVENT_INSERTLEAVE && tick != buf_get_changedtick(curbuf)) {
u_save(curwin->w_cursor.lnum, (linenr_T)(curwin->w_cursor.lnum + 1));
}

View File

@ -1439,7 +1439,7 @@ func Test_edit_alt()
call delete('XAltFile')
endfunc
func Test_leave_insert_autocmd()
func Test_edit_InsertLeave()
new
au InsertLeave * let g:did_au = 1
let g:did_au = 0
@ -1469,6 +1469,21 @@ func Test_leave_insert_autocmd()
iunmap x
endfunc
func Test_edit_InsertLeave_undo()
new XtestUndo
set undofile
au InsertLeave * wall
exe "normal ofoo\<Esc>"
call assert_equal(2, line('$'))
normal u
call assert_equal(1, line('$'))
bwipe!
au! InsertLeave
call delete('XtestUndo')
set undofile&
endfunc
" Test for inserting characters using CTRL-V followed by a number.
func Test_edit_special_chars()
new