aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJan Edmund Lazo <janedmundlazo@hotmail.com>2018-09-22 11:40:19 -0400
committerJan Edmund Lazo <janedmundlazo@hotmail.com>2018-09-22 17:10:16 -0400
commita52c38d79049000577320e11bd88b82852f2cfe6 (patch)
treeecbd36e2243ee4cbdbbcac216f47600f064dc28b /src
parent2b06c32a230d4e2791952be82bf345c5d2da343d (diff)
downloadrneovim-a52c38d79049000577320e11bd88b82852f2cfe6.tar.gz
rneovim-a52c38d79049000577320e11bd88b82852f2cfe6.tar.bz2
rneovim-a52c38d79049000577320e11bd88b82852f2cfe6.zip
vim-patch:8.1.0414: v:option_old is cleared when using :set in OptionSet autocmd
Problem: v:option_old and v:option_new are cleared when using :set in OptionSet autocmd. (Gary Johnson) Solution: Don't trigger OptionSet recursively. https://github.com/vim/vim/commit/3f3fb0b14734272e7c817020c847aaa0fba5cea5
Diffstat (limited to 'src')
-rw-r--r--src/nvim/option.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 8e2264c6a7..e354d90c41 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -4019,7 +4019,8 @@ static char *set_bool_option(const int opt_idx, char_u *const varp,
options[opt_idx].flags |= P_WAS_SET;
- if (!starting) {
+ // Don't do this while starting up or recursively.
+ if (!starting && *get_vim_var_str(VV_OPTION_TYPE) == NUL) {
char buf_old[2];
char buf_new[2];
char buf_type[7];
@@ -4393,7 +4394,8 @@ static char *set_num_option(int opt_idx, char_u *varp, long value,
options[opt_idx].flags |= P_WAS_SET;
- if (!starting && errmsg == NULL) {
+ // Don't do this while starting up, failure or recursively.
+ if (!starting && errmsg == NULL && *get_vim_var_str(VV_OPTION_TYPE) == NUL) {
char buf_old[NUMBUFLEN];
char buf_new[NUMBUFLEN];
char buf_type[7];
@@ -4426,7 +4428,10 @@ static char *set_num_option(int opt_idx, char_u *varp, long value,
static void trigger_optionsset_string(int opt_idx, int opt_flags,
char *oldval, char *newval)
{
- if (oldval != NULL && newval != NULL) {
+ // Don't do this recursively.
+ if (oldval != NULL
+ && newval != NULL
+ && *get_vim_var_str(VV_OPTION_TYPE) == NUL) {
char buf_type[7];
vim_snprintf(buf_type, ARRAY_SIZE(buf_type), "%s",