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 -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/201912271634.xBRGY5Nm021163%40masaka.moolenaar.net.

Raspunde prin e-mail lui