Mercurial > vim
changeset 12100:d4ffc3dc9fb0 v8.0.0930
patch 8.0.0930: terminal buffers are stored in the viminfo file
commit https://github.com/vim/vim/commit/e62780543f403186b27b210dd087dd8ba74159fc
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Aug 13 18:11:17 2017 +0200
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
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 13 Aug 2017 18:15:03 +0200 |
parents | 3aed6fd3a25d |
children | b24d295c8561 |
files | src/buffer.c src/mark.c src/version.c |
diffstat | 3 files changed, 22 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/buffer.c +++ b/src/buffer.c @@ -5659,6 +5659,9 @@ write_viminfo_bufferlist(FILE *fp) #ifdef FEAT_QUICKFIX || bt_quickfix(buf) #endif +#ifdef FEAT_TERMINAL + || bt_terminal(buf) +#endif || removable(buf->b_ffname)) continue;
--- a/src/mark.c +++ b/src/mark.c @@ -1649,6 +1649,19 @@ handle_viminfo_mark(garray_T *values, in } } +/* + * 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 @@ write_viminfo_filemarks(FILE *fp) * 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 @@ write_viminfo_filemarks(FILE *fp) --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 @@ write_viminfo_marks(FILE *fp_out, garray } } 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);