summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bufwrite.c6
-rw-r--r--src/testdir/test_viminfo.vim30
-rw-r--r--src/version.c2
3 files changed, 38 insertions, 0 deletions
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
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2039,
+/**/
2038,
/**/
2037,