mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.2.2494: ":rviminfo!" clears most of oldfiles
Problem: ":rviminfo!" clears most of oldfiles. Solution: Add VIF_ONLY_CURBUF to read_viminfo(). (closes #1781)
This commit is contained in:
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2494,
|
||||||
/**/
|
/**/
|
||||||
2493,
|
2493,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -2458,10 +2458,11 @@ typedef enum {
|
|||||||
#define DOSO_GVIMRC 2 // loading gvimrc file
|
#define DOSO_GVIMRC 2 // loading gvimrc file
|
||||||
|
|
||||||
// flags for read_viminfo() and children
|
// flags for read_viminfo() and children
|
||||||
#define VIF_WANT_INFO 1 // load non-mark info
|
#define VIF_WANT_INFO 1 // load non-mark info
|
||||||
#define VIF_WANT_MARKS 2 // load file marks
|
#define VIF_WANT_MARKS 2 // load file marks
|
||||||
#define VIF_FORCEIT 4 // overwrite info already read
|
#define VIF_ONLY_CURBUF 4 // bail out after loading marks for curbuf
|
||||||
#define VIF_GET_OLDFILES 8 // load v:oldfiles
|
#define VIF_FORCEIT 8 // overwrite info already read
|
||||||
|
#define VIF_GET_OLDFILES 16 // load v:oldfiles
|
||||||
|
|
||||||
// flags for buf_freeall()
|
// flags for buf_freeall()
|
||||||
#define BFA_DEL 1 // buffer is going to be deleted
|
#define BFA_DEL 1 // buffer is going to be deleted
|
||||||
|
@@ -2219,7 +2219,8 @@ buf_compare(const void *s1, const void *s2)
|
|||||||
/*
|
/*
|
||||||
* Handle marks in the viminfo file:
|
* Handle marks in the viminfo file:
|
||||||
* fp_out != NULL: copy marks, in time order with buffers in "buflist".
|
* fp_out != NULL: copy marks, in time order with buffers in "buflist".
|
||||||
* fp_out == NULL && (flags & VIF_WANT_MARKS): read marks for curbuf only
|
* fp_out == NULL && (flags & VIF_WANT_MARKS): read marks for curbuf
|
||||||
|
* fp_out == NULL && (flags & VIF_ONLY_CURBUF): bail out after curbuf marks
|
||||||
* fp_out == NULL && (flags & VIF_GET_OLDFILES | VIF_FORCEIT): fill v:oldfiles
|
* fp_out == NULL && (flags & VIF_GET_OLDFILES | VIF_FORCEIT): fill v:oldfiles
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
@@ -2448,7 +2449,8 @@ copy_viminfo_marks(
|
|||||||
wp->w_changelistidx = curbuf->b_changelistlen;
|
wp->w_changelistidx = curbuf->b_changelistlen;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
if (flags & VIF_ONLY_CURBUF)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2473,7 +2475,7 @@ check_marks_read(void)
|
|||||||
{
|
{
|
||||||
if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0
|
if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0
|
||||||
&& curbuf->b_ffname != NULL)
|
&& curbuf->b_ffname != NULL)
|
||||||
read_viminfo(NULL, VIF_WANT_MARKS);
|
read_viminfo(NULL, VIF_WANT_MARKS | VIF_ONLY_CURBUF);
|
||||||
|
|
||||||
// Always set b_marks_read; needed when 'viminfo' is changed to include
|
// Always set b_marks_read; needed when 'viminfo' is changed to include
|
||||||
// the ' parameter after opening a buffer.
|
// the ' parameter after opening a buffer.
|
||||||
@@ -2953,8 +2955,8 @@ do_viminfo(FILE *fp_in, FILE *fp_out, int flags)
|
|||||||
&& vir.vir_line[0] != '>')
|
&& vir.vir_line[0] != '>')
|
||||||
;
|
;
|
||||||
|
|
||||||
do_copy_marks = (flags &
|
do_copy_marks = (flags & (VIF_WANT_MARKS | VIF_ONLY_CURBUF
|
||||||
(VIF_WANT_MARKS | VIF_GET_OLDFILES | VIF_FORCEIT));
|
| VIF_GET_OLDFILES | VIF_FORCEIT));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fp_out != NULL)
|
if (fp_out != NULL)
|
||||||
|
Reference in New Issue
Block a user