vim-patch:7.4.2174

Problem:    Adding duplicate flags to 'whichwrap' leaves commas behind.
Solution:   Also remove the commas. (Naruhiko Nishino)

c8ce615299
This commit is contained in:
James McCoy 2016-11-15 10:14:12 -05:00
parent 10c72cd365
commit 9d9d93aee3
4 changed files with 59 additions and 6 deletions

View File

@ -1728,12 +1728,24 @@ do_set (
if (flags & P_FLAGLIST) { if (flags & P_FLAGLIST) {
/* Remove flags that appear twice. */ /* Remove flags that appear twice. */
for (s = newval; *s; ++s) for (s = newval; *s; s++) {
if ((!(flags & P_COMMA) || *s != ',') // if options have P_FLAGLIST and P_ONECOMMA such as
&& vim_strchr(s + 1, *s) != NULL) { // 'whichwrap'
STRMOVE(s, s + 1); if (flags & P_ONECOMMA) {
--s; 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' */ if (save_arg != NULL) /* number for 'whichwrap' */

View File

@ -10,6 +10,7 @@ source test_expr_utf8.vim
source test_feedkeys.vim source test_feedkeys.vim
source test_cmdline.vim source test_cmdline.vim
source test_menu.vim source test_menu.vim
source test_options.vim
source test_popup.vim source test_popup.vim
source test_regexp_utf8.vim source test_regexp_utf8.vim
source test_syn_attr.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, // 2177,
// 2176 NA // 2176 NA
// 2175, // 2175,
// 2174, 2174,
// 2173, // 2173,
// 2172, // 2172,
// 2171, // 2171,