diff --git a/src/nvim/option.c b/src/nvim/option.c index cc3a9c181d..ae4e7c1fda 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -3772,7 +3772,7 @@ static const char *set_option(int opt_idx, void *varp, OptVal *v, int opt_flags, errbuf, errbuflen); } - if (errmsg != NULL) { + if (errmsg == NULL) { did_set_option(opt_idx, opt_flags, true, value_checked); } diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua index 2de1990b14..f734bfb0c0 100644 --- a/test/functional/api/vim_spec.lua +++ b/test/functional/api/vim_spec.lua @@ -1416,6 +1416,20 @@ describe('API', function() eq(true, status) eq(' equalalways\n\tLast set from Lua', rv) end) + + it('updates whether the option has ever been set #25025', function() + eq(false, nvim('get_option_info2', 'autochdir', {}).was_set) + nvim('set_option_value', 'autochdir', true, {}) + eq(true, nvim('get_option_info2', 'autochdir', {}).was_set) + + eq(false, nvim('get_option_info2', 'cmdwinheight', {}).was_set) + nvim('set_option_value', 'cmdwinheight', 10, {}) + eq(true, nvim('get_option_info2', 'cmdwinheight', {}).was_set) + + eq(false, nvim('get_option_info2', 'debug', {}).was_set) + nvim('set_option_value', 'debug', 'beep', {}) + eq(true, nvim('get_option_info2', 'debug', {}).was_set) + end) end) describe('nvim_get_option_value, nvim_set_option_value', function()