diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-07-15 20:14:44 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-07-15 20:14:44 +0200 |
commit | 93431df9eb02f7cf3d7f2142bb1bef24c5f325b2 (patch) | |
tree | 4fb540e0e23182f7cc54411e05c3662906028db9 | |
parent | fdadad994a6e8f6cc8b11519082e23200b96d0ba (diff) | |
download | vim-93431df9eb02f7cf3d7f2142bb1bef24c5f325b2.zip |
patch 7.4.2043
Problem: setbuvfar() causes a screen redraw.
Solution: Only use aucmd_prepbuf() for options.
-rw-r--r-- | src/eval.c | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |