]> granicus.if.org Git - vim/commitdiff
patch 8.1.0386: cannot test with non-default option value v8.1.0386
authorBram Moolenaar <Bram@vim.org>
Thu, 13 Sep 2018 18:31:54 +0000 (20:31 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 13 Sep 2018 18:31:54 +0000 (20:31 +0200)
Problem:    Cannot test with non-default option value.
Solution:   Add test_option_not_set().

runtime/doc/eval.txt
src/evalfunc.c
src/option.c
src/proto/option.pro
src/version.c

index 2ff124b691015ac695369afa49e714f6be075b66..fdac40586b0355b40b4ffd2b7cb1cd460b8126be 100644 (file)
@@ -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!
index ff545893e90286b35ccab5ac9d9d1542ad2c23a2..69a674d2c4f51fb325b57c09309069b883534b73 100644 (file)
@@ -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)
index f47549d721e7952b490025e315ece8c800a633cd..818e6911cd0842a63e88576e51e3118d8f74052b 100644 (file)
@@ -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;
 }
 
 /*
index 679329df39d27cecc7ed60b1a6ec26e3dd54d4e4..b65cb45bf462226515530b5e05befef1c9c995e9 100644 (file)
@@ -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);
index aa6d099f138717f88ef30886fd30ae9aa4d2a9e3..81fc68555f44c6b45d37cfc8ab8125856f41051e 100644 (file)
@@ -794,6 +794,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    386,
 /**/
     385,
 /**/