# HG changeset patch # User Christian Brabandt # Date 1476558004 -7200 # Node ID cd16ef948ad17e50a22fdba0988bcc7f8c4deeaf # Parent dc7f7a0a1ed4657fe15077a479b88aa4a77228cb commit https://github.com/vim/vim/commit/156919f99afd1ac11d19d4270afbc1afb7245640 Author: Bram Moolenaar Date: Sat Oct 15 20:46:20 2016 +0200 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) diff --git a/src/mark.c b/src/mark.c --- a/src/mark.c +++ b/src/mark.c @@ -1597,7 +1597,8 @@ handle_viminfo_mark(garray_T *values, in 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 --- 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 --- 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 */ /**/ + 39, +/**/ 38, /**/ 37,