Patch 8.0.0149
Summary: :earlier does not work after reading the undo file
Problem: ":earlier" and ":later" do not work after startup or reading the
undo file.
Solution: Use absolute time stamps instead of relative to the Vim start
time. (Christian Brabandt, Pavel Juhas, closes #1300, closes
#1254)
Files: src/testdir/test_undo.vim, src/undo.c
*** ../vim-8.0.0148/src/undo.c 2016-11-10 20:01:41.201582868 +0100
--- src/undo.c 2017-01-07 16:07:07.561481836 +0100
***************
*** 2298,2307 ****
}
else
{
- /* When doing computations with time_t subtract starttime, because
- * time_t converted to a long may result in a wrong number. */
if (dosec)
! target = (long)(curbuf->b_u_time_cur - starttime) + step;
else if (dofile)
{
if (step < 0)
--- 2298,2305 ----
}
else
{
if (dosec)
! target = (long)(curbuf->b_u_time_cur) + step;
else if (dofile)
{
if (step < 0)
***************
*** 2350,2356 ****
else
{
if (dosec)
! closest = (long)(vim_time() - starttime + 1);
else if (dofile)
closest = curbuf->b_u_save_nr_last + 2;
else
--- 2348,2354 ----
else
{
if (dosec)
! closest = (long)(vim_time() + 1);
else if (dofile)
closest = curbuf->b_u_save_nr_last + 2;
else
***************
*** 2388,2394 ****
{
uhp->uh_walk = mark;
if (dosec)
! val = (long)(uhp->uh_time - starttime);
else if (dofile)
val = uhp->uh_save_nr;
else
--- 2386,2392 ----
{
uhp->uh_walk = mark;
if (dosec)
! val = (long)(uhp->uh_time);
else if (dofile)
val = uhp->uh_save_nr;
else
*** ../vim-8.0.0148/src/testdir/test_undo.vim 2016-08-31 20:30:21.000000000
+0200
--- src/testdir/test_undo.vim 2017-01-07 15:54:36.491066617 +0100
***************
*** 235,237 ****
--- 235,265 ----
close!
endfunc
+
+ func Test_undofile_earlier()
+ " Issue #1254
+ " create undofile with timestamps older than Vim startup time.
+ let t0 = localtime() - 43200
+ call test_settime(t0)
+ new Xfile
+ call feedkeys("ione\<Esc>", 'xt')
+ set ul=100
+ call test_settime(t0 + 1)
+ call feedkeys("otwo\<Esc>", 'xt')
+ set ul=100
+ call test_settime(t0 + 2)
+ call feedkeys("othree\<Esc>", 'xt')
+ set ul=100
+ w
+ wundo Xundofile
+ bwipe!
+ " restore normal timestamps.
+ call test_settime(0)
+ new Xfile
+ rundo Xundofile
+ earlier 1d
+ call assert_equal('', getline(1))
+ bwipe!
+ call delete('Xfile')
+ call delete('Xundofile')
+ endfunc
*** ../vim-8.0.0148/src/version.c 2017-01-07 15:39:36.401759496 +0100
--- src/version.c 2017-01-07 16:13:59.142424882 +0100
***************
*** 766,767 ****
--- 766,769 ----
{ /* Add new patch number below this line */
+ /**/
+ 149,
/**/
--
$ echo pizza > /dev/oven
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.