0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.0.1836: buffer-local window options may not be recent

Problem:    Buffer-local window options may not be recent if the buffer is
            still open in another window.
Solution:   Copy the options from the window instead of the outdated window
            options. (Bjorn Linse, closes #2336)
This commit is contained in:
Bram Moolenaar
2018-05-13 18:05:33 +02:00
parent 2290b1f8aa
commit 25782a7ff4
3 changed files with 70 additions and 1 deletions

View File

@@ -2895,8 +2895,23 @@ get_winopts(buf_T *buf)
#endif
wip = find_wininfo(buf, TRUE);
if (wip != NULL && wip->wi_optset)
if (wip != NULL && wip->wi_win != NULL
&& wip->wi_win != curwin && wip->wi_win->w_buffer == buf)
{
/* The buffer is currently displayed in the window: use the actual
* option values instead of the saved (possibly outdated) values. */
win_T *wp = wip->wi_win;
copy_winopt(&wp->w_onebuf_opt, &curwin->w_onebuf_opt);
#ifdef FEAT_FOLDING
curwin->w_fold_manual = wp->w_fold_manual;
curwin->w_foldinvalid = TRUE;
cloneFoldGrowArray(&wp->w_folds, &curwin->w_folds);
#endif
}
else if (wip != NULL && wip->wi_optset)
{
/* the buffer was displayed in the current window earlier */
copy_winopt(&wip->wi_opt, &curwin->w_onebuf_opt);
#ifdef FEAT_FOLDING
curwin->w_fold_manual = wip->wi_fold_manual;