Merge pull request #5611 from jamessan/vim-7.4.2174

vim-patch:7.4.2174
This commit is contained in:
James McCoy 2016-11-15 14:57:57 -05:00 committed by GitHub
commit c91e9c1c7a
4 changed files with 60 additions and 7 deletions

View File

@ -1727,13 +1727,25 @@ do_set (
}
if (flags & P_FLAGLIST) {
/* Remove flags that appear twice. */
for (s = newval; *s; ++s)
if ((!(flags & P_COMMA) || *s != ',')
&& vim_strchr(s + 1, *s) != NULL) {
STRMOVE(s, s + 1);
--s;
// 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) {
STRMOVE(s, s + 1);
s--;
}
}
}
}
if (save_arg != NULL) /* number for 'whichwrap' */

View File

@ -10,6 +10,7 @@ source test_expr_utf8.vim
source test_feedkeys.vim
source test_cmdline.vim
source test_menu.vim
source test_options.vim
source test_popup.vim
source test_regexp_utf8.vim
source test_syn_attr.vim

View 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

View File

@ -268,7 +268,7 @@ static int included_patches[] = {
// 2177,
// 2176 NA
// 2175,
// 2174,
2174,
// 2173,
// 2172,
// 2171,