forked from aniani/vim
patch 7.4.2174
Problem: Adding duplicate flags to 'whichwrap' leaves commas behind. Solution: Also remove the commas. (Naruhiko Nishino)
This commit is contained in:
@@ -2031,7 +2031,6 @@ test1 \
|
||||
test_mapping \
|
||||
test_marks \
|
||||
test_nested_function \
|
||||
test_options \
|
||||
test_search_mbyte \
|
||||
test_signs \
|
||||
test_tagcase \
|
||||
@@ -2101,6 +2100,7 @@ test_arglist \
|
||||
test_menu \
|
||||
test_messages \
|
||||
test_netbeans \
|
||||
test_options \
|
||||
test_packadd \
|
||||
test_partial \
|
||||
test_perl \
|
||||
|
18
src/option.c
18
src/option.c
@@ -4919,6 +4919,22 @@ do_set(
|
||||
{
|
||||
/* Remove flags that appear twice. */
|
||||
for (s = newval; *s; ++s)
|
||||
{
|
||||
/* if options have P_FLAGLIST and
|
||||
* P_ONECOMMA such as 'whichwrap' */
|
||||
if (flags & P_ONECOMMA)
|
||||
{
|
||||
if (*s != ',' && *(s + 1) == ','
|
||||
&& vim_strchr(s + 2, *s) != NULL)
|
||||
{
|
||||
/* Remove the duplicated value and
|
||||
* the next comma. */
|
||||
STRMOVE(s, s + 2);
|
||||
s -= 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((!(flags & P_COMMA) || *s != ',')
|
||||
&& vim_strchr(s + 1, *s) != NULL)
|
||||
{
|
||||
@@ -4926,6 +4942,8 @@ do_set(
|
||||
--s;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (save_arg != NULL) /* number for 'whichwrap' */
|
||||
arg = save_arg;
|
||||
|
@@ -101,7 +101,6 @@ SCRIPTS_ALL = \
|
||||
test_mapping.out \
|
||||
test_marks.out \
|
||||
test_nested_function.out \
|
||||
test_options.out \
|
||||
test_search_mbyte.out \
|
||||
test_signs.out \
|
||||
test_tagcase.out \
|
||||
|
@@ -38,3 +38,4 @@ source test_timers.vim
|
||||
source test_true_false.vim
|
||||
source test_unlet.vim
|
||||
source test_window_cmd.vim
|
||||
source test_options.vim
|
||||
|
@@ -1,23 +0,0 @@
|
||||
Test for ":options".
|
||||
|
||||
STARTTEST
|
||||
:so small.vim
|
||||
:let caught = 'ok'
|
||||
:try
|
||||
:options
|
||||
:catch
|
||||
:let caught = v:throwpoint . "\n" . v:exception
|
||||
:endtry
|
||||
:buf 1
|
||||
:$put =caught
|
||||
:"
|
||||
:" Test that changing 'path' keeps two commas.
|
||||
:set path=foo,,bar
|
||||
:set path-=bar
|
||||
:set path+=bar
|
||||
:$put =&path
|
||||
:/^result/,$w! test.out
|
||||
:qa!
|
||||
ENDTEST
|
||||
|
||||
result
|
@@ -1,3 +0,0 @@
|
||||
result
|
||||
ok
|
||||
foo,,bar
|
40
src/testdir/test_options.vim
Normal file
40
src/testdir/test_options.vim
Normal file
@@ -0,0 +1,40 @@
|
||||
" Test for options
|
||||
|
||||
function! Test_whichwrap()
|
||||
set whichwrap=b,s
|
||||
call assert_equal('b,s', &whichwrap)
|
||||
|
||||
set whichwrap+=h,l
|
||||
call assert_equal('b,s,h,l', &whichwrap)
|
||||
|
||||
set whichwrap+=h,l
|
||||
call assert_equal('b,s,h,l', &whichwrap)
|
||||
|
||||
set whichwrap+=h,l
|
||||
call assert_equal('b,s,h,l', &whichwrap)
|
||||
|
||||
set whichwrap&
|
||||
endfunction
|
||||
|
||||
function! Test_options()
|
||||
let caught = 'ok'
|
||||
try
|
||||
options
|
||||
catch
|
||||
let caught = v:throwpoint . "\n" . v:exception
|
||||
endtry
|
||||
call assert_equal('ok', caught)
|
||||
|
||||
" close option-window
|
||||
close
|
||||
endfunction
|
||||
|
||||
function! Test_path_keep_commas()
|
||||
" Test that changing 'path' keeps two commas.
|
||||
set path=foo,,bar
|
||||
set path-=bar
|
||||
set path+=bar
|
||||
call assert_equal('foo,,bar', &path)
|
||||
|
||||
set path&
|
||||
endfunction
|
@@ -763,6 +763,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2174,
|
||||
/**/
|
||||
2173,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user