summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-07-15 20:14:44 +0200
committerBram Moolenaar <Bram@vim.org>2016-07-15 20:14:44 +0200
commit93431df9eb02f7cf3d7f2142bb1bef24c5f325b2 (patch)
tree4fb540e0e23182f7cc54411e05c3662906028db9
parentfdadad994a6e8f6cc8b11519082e23200b96d0ba (diff)
downloadvim-git-93431df9eb02f7cf3d7f2142bb1bef24c5f325b2.tar.gz
patch 7.4.2043v7.4.2043
Problem: setbuvfar() causes a screen redraw. Solution: Only use aucmd_prepbuf() for options.
-rw-r--r--src/eval.c18
-rw-r--r--src/version.c2
2 files changed, 13 insertions, 7 deletions
diff --git a/src/eval.c b/src/eval.c
index 6987485ed..e29ba735a 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -18495,7 +18495,6 @@ f_serverlist(typval_T *argvars UNUSED, typval_T *rettv)
f_setbufvar(typval_T *argvars, typval_T *rettv UNUSED)
{
buf_T *buf;
- aco_save_T aco;
char_u *varname, *bufvarname;
typval_T *varp;
char_u nbuf[NUMBUFLEN];
@@ -18509,35 +18508,40 @@ f_setbufvar(typval_T *argvars, typval_T *rettv UNUSED)
if (buf != NULL && varname != NULL && varp != NULL)
{
- /* set curbuf to be our buf, temporarily */
- aucmd_prepbuf(&aco, buf);
-
if (*varname == '&')
{
long numval;
char_u *strval;
int error = FALSE;
+ aco_save_T aco;
+
+ /* set curbuf to be our buf, temporarily */
+ aucmd_prepbuf(&aco, buf);
++varname;
numval = (long)get_tv_number_chk(varp, &error);
strval = get_tv_string_buf_chk(varp, nbuf);
if (!error && strval != NULL)
set_option_value(varname, numval, strval, OPT_LOCAL);
+
+ /* reset notion of buffer */
+ aucmd_restbuf(&aco);
}
else
{
+ buf_T *save_curbuf = curbuf;
+
bufvarname = alloc((unsigned)STRLEN(varname) + 3);
if (bufvarname != NULL)
{
+ curbuf = buf;
STRCPY(bufvarname, "b:");
STRCPY(bufvarname + 2, varname);
set_var(bufvarname, varp, TRUE);
vim_free(bufvarname);
+ curbuf = save_curbuf;
}
}
-
- /* reset notion of buffer */
- aucmd_restbuf(&aco);
}
}
diff --git a/src/version.c b/src/version.c
index e4dd573d8..9acfbe8d4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2043,
+/**/
2042,
/**/
2041,