]> granicus.if.org Git - vim/commitdiff
patch 8.2.2039: viminfo is not written when creating a new file v8.2.2039
authorBram Moolenaar <Bram@vim.org>
Mon, 23 Nov 2020 21:01:26 +0000 (22:01 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 23 Nov 2020 21:01:26 +0000 (22:01 +0100)
Problem:    Viminfo is not written when creating a new file.
Solution:   Set "b_marks_read" in the new buffer. (Christian Brabandt,
            closes #7350)

src/bufwrite.c
src/testdir/test_viminfo.vim
src/version.c

index 4b522465d520f35658860ca0b90cfa5b20cdde11..d9f85a3a38ddf2524f885bc27fba857251cb3255 100644 (file)
@@ -2579,6 +2579,12 @@ nofail:
 #endif
     }
 
+#ifdef FEAT_VIMINFO
+    // Make sure marks will be written out to the viminfo file later, even when
+    // the file is new.
+    curbuf->b_marks_read = TRUE;
+#endif
+
     got_int |= prev_got_int;
 
     return retval;
index bc8afa0e1fe060fd1f2aa4111e96b64c3e5828b9..20d90740b350a83057f23597a9b719cd3e6d50e3 100644 (file)
@@ -1,6 +1,8 @@
 " Test for reading and writing .viminfo
 
 source check.vim
+source term_util.vim
+source shared.vim
 
 function Test_viminfo_read_and_write()
   " First clear 'history', so that "hislen" is zero.  Then set it again,
@@ -879,4 +881,32 @@ func Test_viminfo_option_error()
   call assert_fails('set viminfo=%10', 'E528:')
 endfunc
 
+func Test_viminfo_oldfiles_newfile()
+  CheckRunVimInTerminal
+
+  let save_viminfo = &viminfo
+  let save_viminfofile = &viminfofile
+  set viminfo&vim
+  let v:oldfiles = []
+  let commands =<< trim [CODE]
+    set viminfofile=Xviminfofile
+    set viminfo&vim
+    w! Xnew-file.txt
+    qall
+  [CODE]
+  call writefile(commands, 'Xviminfotest')
+  let buf = RunVimInTerminal('-S Xviminfotest', #{wait_for_ruler: 0})
+  call WaitForAssert({-> assert_equal("finished", term_getstatus(buf))})
+
+  let &viminfofile = 'Xviminfofile'
+  rviminfo! Xviminfofile
+  call assert_match('Xnew-file.txt$', v:oldfiles[0])
+  call assert_equal(1, len(v:oldfiles))
+  call delete('Xviminfofile')
+  call delete('Xviminfotest')
+  call delete('Xnew-file.txt')
+  let &viminfo = save_viminfo
+  let &viminfofile = save_viminfofile
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
index 1f1d3a64f9fe9e13b1200d796428c9700a10d6d1..91c820de098272c70f63c52c68bfb335de55a6e9 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2039,
 /**/
     2038,
 /**/