From 8e6be34338f13a6a625f19bcef82019c9adc65f2 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 23 Nov 2020 22:01:26 +0100 Subject: patch 8.2.2039: viminfo is not written when creating a new file 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 | 6 ++++++ src/testdir/test_viminfo.vim | 30 ++++++++++++++++++++++++++++++ src/version.c | 2 ++ 3 files changed, 38 insertions(+) (limited to 'src') diff --git a/src/bufwrite.c b/src/bufwrite.c index 4b522465d5..d9f85a3a38 100644 --- a/src/bufwrite.c +++ b/src/bufwrite.c @@ -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; diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim index bc8afa0e1f..20d90740b3 100644 --- a/src/testdir/test_viminfo.vim +++ b/src/testdir/test_viminfo.vim @@ -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 diff --git a/src/version.c b/src/version.c index 1f1d3a64f9..91c820de09 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2039, /**/ 2038, /**/ -- cgit v1.2.3