Skip to content

Commit

Permalink
patch 9.0.0066: switching window uneccarily when getting buffer options
Browse files Browse the repository at this point in the history
Problem:    Switching window uneccarily when getting buffer options.
Solution:   Do not switch window when getting buffer options. (closes #10767)
  • Loading branch information
zeertzjq authored and brammool committed Jul 25, 2022
1 parent 509695c commit cd6ad64
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 3 deletions.
7 changes: 4 additions & 3 deletions src/evalvars.c
Expand Up @@ -4098,6 +4098,7 @@ get_var_from(
int done = FALSE;
switchwin_T switchwin;
int need_switch_win;
int do_change_curbuf = buf != NULL && htname == 'b';

++emsg_off;

Expand All @@ -4112,7 +4113,7 @@ get_var_from(
// autocommands get blocked.
// If we have a buffer reference avoid the switching, we're saving and
// restoring curbuf directly.
need_switch_win = !(tp == curtab && win == curwin) || (buf != NULL);
need_switch_win = !(tp == curtab && win == curwin) && !do_change_curbuf;
if (!need_switch_win || switch_win(&switchwin, win, tp, TRUE) == OK)
{
// Handle options. There are no tab-local options.
Expand All @@ -4121,12 +4122,12 @@ get_var_from(
buf_T *save_curbuf = curbuf;

// Change curbuf so the option is read from the correct buffer.
if (buf != NULL && htname == 'b')
if (do_change_curbuf)
curbuf = buf;

if (varname[1] == NUL)
{
// get all window-local options in a dict
// get all window-local or buffer-local options in a dict
dict_T *opts = get_winbuf_options(htname == 'b');

if (opts != NULL)
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -735,6 +735,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
66,
/**/
65,
/**/
Expand Down

0 comments on commit cd6ad64

Please sign in to comment.