Skip to content

Commit

Permalink
patch 9.0.0544: minor issues with setting a string option
Browse files Browse the repository at this point in the history
Problem:    Minor issues with setting a string option.
Solution:   Adjust the code, add a test. (closes #11192)
  • Loading branch information
zeertzjq authored and brammool committed Sep 22, 2022
1 parent e24b5e0 commit fcba86c
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 7 deletions.
12 changes: 5 additions & 7 deletions src/option.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;

Expand All @@ -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
Expand Down Expand Up @@ -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
}

/*
Expand Down
14 changes: 14 additions & 0 deletions src/testdir/test_options.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -699,6 +699,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
544,
/**/
543,
/**/
Expand Down

0 comments on commit fcba86c

Please sign in to comment.