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:
17
src/buffer.c
17
src/buffer.c
@@ -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;
|
||||
|
Reference in New Issue
Block a user