To: vim_dev@googlegroups.com Subject: Patch 8.2.0050 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0050 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) Files: src/mark.c, src/testdir/test_marks.vim, src/testdir/test_viminfo.vim, src/viminfo.c *** ../vim-8.2.0049/src/mark.c 2019-12-04 21:47:10.000000000 +0100 --- src/mark.c 2019-12-27 17:31:18.535551942 +0100 *************** *** 854,862 **** else n = i - 'A'; namedfm[n].fmark.mark.lnum = 0; VIM_CLEAR(namedfm[n].fname); #ifdef FEAT_VIMINFO ! namedfm[n].time_set = 0; #endif } } --- 854,863 ---- else n = i - 'A'; namedfm[n].fmark.mark.lnum = 0; + namedfm[n].fmark.fnum = 0; VIM_CLEAR(namedfm[n].fname); #ifdef FEAT_VIMINFO ! namedfm[n].time_set = digit ? 0 : vim_time(); #endif } } *** ../vim-8.2.0049/src/testdir/test_marks.vim 2019-12-02 20:37:22.000000000 +0100 --- src/testdir/test_marks.vim 2019-12-27 17:31:18.535551942 +0100 *************** *** 144,149 **** --- 144,154 ---- " 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 *** ../vim-8.2.0049/src/testdir/test_viminfo.vim 2019-10-10 16:42:04.000000000 +0200 --- src/testdir/test_viminfo.vim 2019-12-27 17:31:18.535551942 +0100 *************** *** 323,328 **** --- 323,345 ---- 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 *** ../vim-8.2.0049/src/viminfo.c 2019-11-02 22:51:27.000000000 +0100 --- src/viminfo.c 2019-12-27 17:31:18.535551942 +0100 *************** *** 2055,2062 **** for (i = 0; i < NMARKS; i++) { if (vi_namedfm != NULL ! && (vi_namedfm[i].time_set > namedfm_p[i].time_set ! || namedfm_p[i].fmark.mark.lnum == 0)) fm = &vi_namedfm[i]; else fm = &namedfm_p[i]; --- 2055,2061 ---- for (i = 0; i < NMARKS; i++) { if (vi_namedfm != NULL ! && (vi_namedfm[i].time_set > namedfm_p[i].time_set)) fm = &vi_namedfm[i]; else fm = &namedfm_p[i]; *** ../vim-8.2.0049/src/version.c 2019-12-27 17:20:51.533918083 +0100 --- src/version.c 2019-12-27 17:30:56.467635802 +0100 *************** *** 744,745 **** --- 744,747 ---- { /* Add new patch number below this line */ + /**/ + 50, /**/ -- Vim is like Emacs without all the typing. (John "Johann" Spetz) /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///