patch 8.0.0930: terminal buffers are stored in the viminfo file
Problem: Terminal buffers are stored in the viminfo file while they can't
be useful.
Solution: Skip terminal buffers for file marks and buffer list
diff --git a/src/mark.c b/src/mark.c
index d93dfac..db5f571 100644
--- a/src/mark.c
+++ b/src/mark.c
@@ -1649,6 +1649,19 @@
}
}
+/*
+ * Return TRUE if marks for "buf" should not be written.
+ */
+ static int
+skip_for_viminfo(buf_T *buf)
+{
+ return
+#ifdef FEAT_TERMINAL
+ bt_terminal(buf) ||
+#endif
+ removable(buf->b_ffname);
+}
+
void
write_viminfo_filemarks(FILE *fp)
{
@@ -1681,7 +1694,7 @@
* Move '0 to '1, '1 to '2, etc. until the matching one or '9
* Set the '0 mark to current cursor position.
*/
- if (curbuf->b_ffname != NULL && !removable(curbuf->b_ffname))
+ if (curbuf->b_ffname != NULL && !skip_for_viminfo(curbuf))
{
name = buflist_nr2name(curbuf->b_fnum, TRUE, FALSE);
for (i = NMARKS; i < NMARKS + EXTRA_MARKS - 1; ++i)
@@ -1757,7 +1770,7 @@
--idx;
if (fm->fmark.fnum == 0
|| ((buf = buflist_findnr(fm->fmark.fnum)) != NULL
- && !removable(buf->b_ffname)))
+ && !skip_for_viminfo(buf)))
write_one_filemark(fp, fm, '-', '\'');
}
#endif
@@ -1917,7 +1930,8 @@
}
}
if (is_mark_set && buf->b_ffname != NULL
- && buf->b_ffname[0] != NUL && !removable(buf->b_ffname))
+ && buf->b_ffname[0] != NUL
+ && !skip_for_viminfo(buf))
{
if (buflist == NULL)
write_buffer_marks(buf, fp_out);