forked from aniani/vim
updated for version 7.3.1197
Problem: ":wviminfo!" does not write history previously read from a viminfo file. (Roland Eggner) Solution: When not merging history write all entries.
This commit is contained in:
@@ -6003,6 +6003,9 @@ ex_history(eap)
|
||||
#endif
|
||||
|
||||
#if (defined(FEAT_VIMINFO) && defined(FEAT_CMDHIST)) || defined(PROTO)
|
||||
/*
|
||||
* Buffers for history read from a viminfo file. Only valid while reading.
|
||||
*/
|
||||
static char_u **viminfo_history[HIST_COUNT] = {NULL, NULL, NULL, NULL};
|
||||
static int viminfo_hisidx[HIST_COUNT] = {0, 0, 0, 0};
|
||||
static int viminfo_hislen[HIST_COUNT] = {0, 0, 0, 0};
|
||||
@@ -6184,9 +6187,16 @@ finish_viminfo_history()
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Write history to viminfo file in "fp".
|
||||
* When "merge" is TRUE merge history lines with a previously read viminfo
|
||||
* file, data is in viminfo_history[].
|
||||
* When "merge" is FALSE just write all history lines. Used for ":wviminfo!".
|
||||
*/
|
||||
void
|
||||
write_viminfo_history(fp)
|
||||
write_viminfo_history(fp, merge)
|
||||
FILE *fp;
|
||||
int merge;
|
||||
{
|
||||
int i;
|
||||
int type;
|
||||
@@ -6236,7 +6246,9 @@ write_viminfo_history(fp)
|
||||
p = round == 1 ? history[type][i].hisstr
|
||||
: viminfo_history[type] == NULL ? NULL
|
||||
: viminfo_history[type][i];
|
||||
if (p != NULL && (round == 2 || !history[type][i].viminfo))
|
||||
if (p != NULL && (round == 2
|
||||
|| !merge
|
||||
|| !history[type][i].viminfo))
|
||||
{
|
||||
--num_saved;
|
||||
fputc(hist_type2char(type, TRUE), fp);
|
||||
|
Reference in New Issue
Block a user