]> granicus.if.org Git - vim/commitdiff
patch 8.0.0039 v8.0.0039
authorBram Moolenaar <Bram@vim.org>
Sat, 15 Oct 2016 18:46:20 +0000 (20:46 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 15 Oct 2016 18:46:20 +0000 (20:46 +0200)
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
src/testdir/test_viminfo.vim
src/version.c

index 0627a7ceabaf8c5794cc1d540c265a9c4859573f..9c84bc40dcc48745f88207a62aa574bfe45970d0 100644 (file)
@@ -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;
index 97fd7f7a60220f734e49c0e6aa4eaaa8713368a8..7d0f1570bf8dc2e21efd272154cf027d8e82b9e9 100644 (file)
@@ -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',
index 939a3e138776db2b97bf1701f7b8fe3dfd58ad7d..2bfd48507ba3b3894785a33104ed28a33eeec4cb 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    39,
 /**/
     38,
 /**/