]> granicus.if.org Git - vim/commitdiff
patch 9.0.0544: minor issues with setting a string option v9.0.0544
authorzeertzjq <zeertzjq@outlook.com>
Thu, 22 Sep 2022 12:57:32 +0000 (13:57 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 22 Sep 2022 12:57:32 +0000 (13:57 +0100)
Problem:    Minor issues with setting a string option.
Solution:   Adjust the code, add a test. (closes #11192)

src/option.c
src/testdir/test_options.vim
src/version.c

index 58679624039b468be670a3fd2bae6ab1cd1a5b14..6052b38b9eb531b09a74838afa2a0a8ff944381f 100644 (file)
@@ -1323,13 +1323,11 @@ do_set_string(
        /*
         * Set 'keywordprg' to ":help" if an empty
         * value was passed to :set by the user.
-        * Misuse errbuf[] for the resulting string.
         */
        if (varp == (char_u *)&p_kp && (*arg == NUL || *arg == ' '))
        {
-           STRCPY(errbuf, ":help");
            save_arg = arg;
-           arg = (char_u *)errbuf;
+           arg = (char_u *)":help";
        }
        /*
         * Convert 'backspace' number to string, for
@@ -1417,7 +1415,7 @@ do_set_string(
         * but do remove it for "\\\\machine\\path".
         * The reverse is found in ExpandOldSetting().
         */
-       while (*arg && !VIM_ISWHITE(*arg))
+       while (*arg != NUL && !VIM_ISWHITE(*arg))
        {
            int i;
 
@@ -1427,7 +1425,7 @@ do_set_string(
                            && vim_isfilec(arg[1])
                            && !VIM_ISWHITE(arg[1])
                            && (arg[1] != '\\'
-                                       || (s == newval && arg[2] != '\\')))
+                                          || (s == newval && arg[2] != '\\')))
 #endif
                                                )
                ++arg;  // remove backslash
@@ -1565,8 +1563,8 @@ do_set_string(
            }
        }
 
-       if (save_arg != NULL)   // number for 'whichwrap'
-           arg = save_arg;
+       if (save_arg != NULL)
+           arg = save_arg;  // arg was temporarily changed, restore it
     }
 
     /*
index a0ee53bb30760cc5e898ae4ac9e101ccb1e7d22a..a890009e0cbb0a793440f76a8619224dedd04386 100644 (file)
@@ -1343,4 +1343,18 @@ func Test_switchbuf_reset()
   only!
 endfunc
 
+" :set empty string for global 'keywordprg' falls back to ":help"
+func Test_keywordprg_empty()
+  let k = &keywordprg
+  set keywordprg=man
+  call assert_equal('man', &keywordprg)
+  set keywordprg=
+  call assert_equal(':help', &keywordprg)
+  set keywordprg=man
+  call assert_equal('man', &keywordprg)
+  call assert_equal("\n  keywordprg=:help", execute('set kp= kp?'))
+  let &keywordprg = k
+endfunc
+
+
 " vim: shiftwidth=2 sts=2 expandtab
index d3694560f7ac847610b82155d98d6cb8786edd3c..d9bcbbc7b8c61009a5ab8a7cd3b4d82d76845a4a 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    544,
 /**/
     543,
 /**/