diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-01-17 22:09:45 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-01-17 22:09:45 +0100 |
commit | 5e4e1b12998b1ed99138cad1c5da4d430f798547 (patch) | |
tree | aee404f261c89b5ef780e506ef80ae829bfe7d1b | |
parent | eb46f8fa14a586779f55b1c7f1648f559618322e (diff) | |
download | vim-git-8.0.0205.tar.gz |
patch 8.0.0205: wrong behavior after :undojoinv8.0.0205
Problem: After :undojoin some commands don't work properly, such as :redo.
(Matthew Malcomson)
Solution: Don't set curbuf->b_u_curhead. (closes #1390)
-rw-r--r-- | src/testdir/test_undo.vim | 12 | ||||
-rw-r--r-- | src/undo.c | 7 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 15 insertions, 6 deletions
diff --git a/src/testdir/test_undo.vim b/src/testdir/test_undo.vim index f2ac6a8ea..06732af71 100644 --- a/src/testdir/test_undo.vim +++ b/src/testdir/test_undo.vim @@ -176,7 +176,17 @@ func Test_undojoin() call assert_equal(['aaaa', 'bbbb', 'cccc'], getline(2, '$')) call feedkeys("u", 'xt') call assert_equal(['aaaa'], getline(2, '$')) - close! + bwipe! +endfunc + +func Test_undojoin_redo() + new + call setline(1, ['first line', 'second line']) + call feedkeys("ixx\<Esc>", 'xt') + call feedkeys(":undojoin | redo\<CR>", 'xt') + call assert_equal('xxfirst line', getline(1)) + call assert_equal('second line', getline(2)) + bwipe! endfunc func Test_undo_write() diff --git a/src/undo.c b/src/undo.c index 607f35fdd..b69f31872 100644 --- a/src/undo.c +++ b/src/undo.c @@ -3136,11 +3136,8 @@ ex_undojoin(exarg_T *eap UNUSED) if (get_undolevel() < 0) return; /* no entries, nothing to do */ else - { - /* Go back to the last entry */ - curbuf->b_u_curhead = curbuf->b_u_newhead; - curbuf->b_u_synced = FALSE; /* no entries, nothing to do */ - } + /* Append next change to the last entry */ + curbuf->b_u_synced = FALSE; } /* diff --git a/src/version.c b/src/version.c index a99c17e7b..766f9890c 100644 --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 205, +/**/ 204, /**/ 203, |