summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/eval.txt10
-rw-r--r--src/evalfunc.c22
-rw-r--r--src/option.c6
-rw-r--r--src/proto/option.pro2
-rw-r--r--src/version.c2
5 files changed, 39 insertions, 3 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 2ff124b69..fdac40586 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2473,6 +2473,7 @@ test_null_job() Job null value for testing
test_null_list() List null value for testing
test_null_partial() Funcref null value for testing
test_null_string() String null value for testing
+test_option_not_set({name}) none reset flag indicating option was set
test_override({expr}, {val}) none test with Vim internal overrides
test_settime({expr}) none set current time for testing
timer_info([{id}]) List information about timers
@@ -8737,6 +8738,15 @@ test_null_partial() *test_null_partial()*
test_null_string() *test_null_string()*
Return a String that is null. Only useful for testing.
+test_option_not_set({name}) *test_option_not_set()*
+ Reset the flag that indicates option {name} was set. Thus it
+ looks like it still has the default value. Use like this: >
+ set ambiwidth=double
+ call test_option_not_set('ambiwidth')
+< Now the 'ambiwidth' option behaves like it was never changed,
+ even though the value is "double".
+ Only to be used for testing!
+
test_override({name}, {val}) *test_override()*
Overrides certain parts of Vims internal processing to be able
to run tests. Only to be used for testing Vim!
diff --git a/src/evalfunc.c b/src/evalfunc.c
index ff545893e..69a674d2c 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -415,6 +415,7 @@ static void f_tempname(typval_T *argvars, typval_T *rettv);
static void f_test_alloc_fail(typval_T *argvars, typval_T *rettv);
static void f_test_autochdir(typval_T *argvars, typval_T *rettv);
static void f_test_feedinput(typval_T *argvars, typval_T *rettv);
+static void f_test_option_not_set(typval_T *argvars, typval_T *rettv);
static void f_test_override(typval_T *argvars, typval_T *rettv);
static void f_test_garbagecollect_now(typval_T *argvars, typval_T *rettv);
static void f_test_ignore_error(typval_T *argvars, typval_T *rettv);
@@ -922,6 +923,7 @@ static struct fst
{"test_null_list", 0, 0, f_test_null_list},
{"test_null_partial", 0, 0, f_test_null_partial},
{"test_null_string", 0, 0, f_test_null_string},
+ {"test_option_not_set", 1, 1, f_test_option_not_set},
{"test_override", 2, 2, f_test_override},
{"test_settime", 1, 1, f_test_settime},
#ifdef FEAT_TIMERS
@@ -13062,7 +13064,25 @@ f_test_feedinput(typval_T *argvars, typval_T *rettv UNUSED)
}
/*
- * "test_disable({name}, {val})" function
+ * "test_option_not_set({name})" function
+ */
+ static void
+f_test_option_not_set(typval_T *argvars, typval_T *rettv UNUSED)
+{
+ char_u *name = (char_u *)"";
+
+ if (argvars[0].v_type != VAR_STRING)
+ EMSG(_(e_invarg));
+ else
+ {
+ name = get_tv_string_chk(&argvars[0]);
+ if (reset_option_was_set(name) == FAIL)
+ EMSG2(_(e_invarg2), name);
+ }
+}
+
+/*
+ * "test_override({name}, {val})" function
*/
static void
f_test_override(typval_T *argvars, typval_T *rettv UNUSED)
diff --git a/src/option.c b/src/option.c
index f47549d72..818e6911c 100644
--- a/src/option.c
+++ b/src/option.c
@@ -12480,13 +12480,17 @@ option_was_set(char_u *name)
/*
* Reset the flag indicating option "name" was set.
*/
- void
+ int
reset_option_was_set(char_u *name)
{
int idx = findoption(name);
if (idx >= 0)
+ {
options[idx].flags &= ~P_WAS_SET;
+ return OK;
+ }
+ return FAIL;
}
/*
diff --git a/src/proto/option.pro b/src/proto/option.pro
index 679329df3..b65cb45bf 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -55,7 +55,7 @@ int shortmess(int x);
void vimrc_found(char_u *fname, char_u *envname);
void change_compatible(int on);
int option_was_set(char_u *name);
-void reset_option_was_set(char_u *name);
+int reset_option_was_set(char_u *name);
int can_bs(int what);
void save_file_ff(buf_T *buf);
int file_ff_differs(buf_T *buf, int ignore_empty);
diff --git a/src/version.c b/src/version.c
index aa6d099f1..81fc68555 100644
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 386,
+/**/
385,
/**/
384,