diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-08-07 13:48:20 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-08-07 13:48:20 +0200 |
commit | c8ce615299b4d8c1b2e6cf83496f48cd497d8a37 (patch) | |
tree | 8999cef1f862e02a9c3fbf742c278e618502b16b | |
parent | 3321e9d8a36c91c62d8ba3d43430b5c213b87f8b (diff) | |
download | vim-git-c8ce615299b4d8c1b2e6cf83496f48cd497d8a37.tar.gz |
patch 7.4.2174v7.4.2174
Problem: Adding duplicate flags to 'whichwrap' leaves commas behind.
Solution: Also remove the commas. (Naruhiko Nishino)
-rw-r--r-- | src/Makefile | 2 | ||||
-rw-r--r-- | src/option.c | 26 | ||||
-rw-r--r-- | src/testdir/Make_all.mak | 1 | ||||
-rw-r--r-- | src/testdir/test_alot.vim | 1 | ||||
-rw-r--r-- | src/testdir/test_options.in | 23 | ||||
-rw-r--r-- | src/testdir/test_options.ok | 3 | ||||
-rw-r--r-- | src/testdir/test_options.vim | 40 | ||||
-rw-r--r-- | src/version.c | 2 |
8 files changed, 66 insertions, 32 deletions
diff --git a/src/Makefile b/src/Makefile index 33d8b8c53..ada714d27 100644 --- a/src/Makefile +++ b/src/Makefile @@ -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 \ diff --git a/src/option.c b/src/option.c index b9b59eefd..ff7973fd4 100644 --- a/src/option.c +++ b/src/option.c @@ -4919,12 +4919,30 @@ do_set( { /* Remove flags that appear twice. */ for (s = newval; *s; ++s) - if ((!(flags & P_COMMA) || *s != ',') - && vim_strchr(s + 1, *s) != NULL) + { + /* 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 { - STRMOVE(s, s + 1); - --s; + if ((!(flags & P_COMMA) || *s != ',') + && vim_strchr(s + 1, *s) != NULL) + { + STRMOVE(s, s + 1); + --s; + } } + } } if (save_arg != NULL) /* number for 'whichwrap' */ diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak index e7e4c680a..02f261108 100644 --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -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 \ diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim index 0245fadb4..8dd698478 100644 --- a/src/testdir/test_alot.vim +++ b/src/testdir/test_alot.vim @@ -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 diff --git a/src/testdir/test_options.in b/src/testdir/test_options.in deleted file mode 100644 index 6e56fa242..000000000 --- a/src/testdir/test_options.in +++ /dev/null @@ -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 diff --git a/src/testdir/test_options.ok b/src/testdir/test_options.ok deleted file mode 100644 index 07731526b..000000000 --- a/src/testdir/test_options.ok +++ /dev/null @@ -1,3 +0,0 @@ -result -ok -foo,,bar diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim new file mode 100644 index 000000000..cceb18018 --- /dev/null +++ b/src/testdir/test_options.vim @@ -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 diff --git a/src/version.c b/src/version.c index 9cf031bdf..f2d1c79e3 100644 --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2174, +/**/ 2173, /**/ 2172, |