From 156919f99afd1ac11d19d4270afbc1afb7245640 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 15 Oct 2016 20:46:20 +0200 Subject: patch 8.0.0039 Problem: When Vim 8 reads an old viminfo and exits, the next time marks are not read from viminfo. (Ned Batchelder) Solution: Set a mark when it wasn't set before, even when the timestamp is zero. (closes #1170) --- src/mark.c | 3 ++- src/testdir/test_viminfo.vim | 26 +++++++++++++++++++++++--- src/version.c | 2 ++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/mark.c b/src/mark.c index 0627a7cea..9c84bc40d 100644 --- a/src/mark.c +++ b/src/mark.c @@ -1597,7 +1597,8 @@ handle_viminfo_mark(garray_T *values, int force) if (fm != NULL) { - if (vi_namedfm != NULL || fm->time_set < timestamp || force) + if (vi_namedfm != NULL || fm->fmark.mark.lnum == 0 + || fm->time_set < timestamp || force) { fm->fmark.mark.lnum = lnum; fm->fmark.mark.col = col; diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim index 97fd7f7a6..7d0f1570b 100644 --- a/src/testdir/test_viminfo.vim +++ b/src/testdir/test_viminfo.vim @@ -1,6 +1,6 @@ " Test for reading and writing .viminfo -function Test_read_and_write() +function Test_viminfo_read_and_write() call histdel(':') let lines = [ \ '# comment line', @@ -17,7 +17,7 @@ function Test_read_and_write() let lines = readfile('Xviminfo') let done = 0 for line in lines - if line[0] == '|' && line !~ '^|[234],' + if line[0] == '|' && line !~ '^|[234],' && line !~ '^|<' if done == 0 call assert_equal('|1,4', line) elseif done == 1 @@ -469,7 +469,27 @@ func Test_viminfo_file_mark_tabclose() silent! bwipe Xtestfileintab endfunc -func Test_oldfiles() +func Test_viminfo_file_mark_zero_time() + let lines = [ + \ '# Viminfo version', + \ '|1,4', + \ '', + \ '*encoding=utf-8', + \ '', + \ '# File marks:', + \ "'B 1 0 /tmp/nothing", + \ '|4,66,1,0,0,"/tmp/nothing"', + \ "", + \ ] + call writefile(lines, 'Xviminfo') + delmark B + rviminfo Xviminfo + call delete('Xviminfo') + call assert_equal(1, line("'B")) + delmark B +endfunc + +func Test_viminfo_oldfiles() let v:oldfiles = [] let lines = [ \ '# comment line', diff --git a/src/version.c b/src/version.c index 939a3e138..2bfd48507 100644 --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 39, /**/ 38, /**/ -- cgit v1.2.1