0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.0.0149: :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)
This commit is contained in:
Bram Moolenaar
2017-01-07 16:14:57 +01:00
parent c6aa475a27
commit cbd4de44e8
3 changed files with 33 additions and 5 deletions

View File

@@ -235,3 +235,31 @@ func Test_insert_expr()
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

View File

@@ -2298,10 +2298,8 @@ undo_time(
}
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;
target = (long)(curbuf->b_u_time_cur) + step;
else if (dofile)
{
if (step < 0)
@@ -2350,7 +2348,7 @@ undo_time(
else
{
if (dosec)
closest = (long)(vim_time() - starttime + 1);
closest = (long)(vim_time() + 1);
else if (dofile)
closest = curbuf->b_u_save_nr_last + 2;
else
@@ -2388,7 +2386,7 @@ undo_time(
{
uhp->uh_walk = mark;
if (dosec)
val = (long)(uhp->uh_time - starttime);
val = (long)(uhp->uh_time);
else if (dofile)
val = uhp->uh_save_nr;
else

View File

@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
149,
/**/
148,
/**/