patch 8.2.0050: after deleting a file mark it is still in viminfo
Problem: After deleting a file mark it is still in viminfo.
Solution: When a file mark was deleted more recently than the mark in the
merged viminfo file was updated, do not store the mark. (Pavol
Juhas, closes #5401, closes #1339)
diff --git a/src/testdir/test_marks.vim b/src/testdir/test_marks.vim
index 96a7766..3d04c70 100644
--- a/src/testdir/test_marks.vim
+++ b/src/testdir/test_marks.vim
@@ -144,6 +144,11 @@
" Deleting an already deleted mark should not fail.
delmarks x
+ " getpos() should return all zeros after deleting a filemark.
+ norm mA
+ delmarks A
+ call assert_equal([0, 0, 0, 0], getpos("'A"))
+
" Test deleting a range of marks.
norm ma
norm mb
diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim
index a9dc8fd..78e0f1a 100644
--- a/src/testdir/test_viminfo.vim
+++ b/src/testdir/test_viminfo.vim
@@ -323,6 +323,23 @@
call assert_equal([bufb, 22, 1, 0], getpos("'3")) " time 30
call assert_equal([bufb, 12, 1, 0], getpos("'4")) " time 25
+ " deleted file marks are removed from viminfo
+ delmark C
+ wviminfo Xviminfo
+ rviminfo Xviminfo
+ call assert_equal([0, 0, 0, 0], getpos("'C"))
+
+ " deleted file marks stay in viminfo if defined in another vim later
+ call test_settime(70)
+ call setpos("'D", [bufb, 8, 1, 0])
+ wviminfo Xviminfo
+ call test_settime(65)
+ delmark D
+ call assert_equal([0, 0, 0, 0], getpos("'D"))
+ call test_settime(75)
+ rviminfo Xviminfo
+ call assert_equal([bufb, 8, 1, 0], getpos("'D"))
+
call delete('Xviminfo')
exe 'bwipe ' . bufa
exe 'bwipe ' . bufb