summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-01-17 22:09:45 +0100
committerBram Moolenaar <Bram@vim.org>2017-01-17 22:09:45 +0100
commit5e4e1b12998b1ed99138cad1c5da4d430f798547 (patch)
treeaee404f261c89b5ef780e506ef80ae829bfe7d1b
parenteb46f8fa14a586779f55b1c7f1648f559618322e (diff)
downloadvim-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.vim12
-rw-r--r--src/undo.c7
-rw-r--r--src/version.c2
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,