Mercurial > vim
changeset 7426:779a7c14c795 v7.4.1017
commit https://github.com/vim/vim/commit/8f79acdf7ede2693fbda53c3c9693f16db4f193b
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jan 1 14:48:20 2016 +0100
patch 7.4.1017
Problem: When there is a backslash in an option ":set -=" doesn't work.
Solution: Handle a backslash better. (Jacob Niehus) Add a new test, merge
in old test.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 01 Jan 2016 15:00:04 +0100 |
parents | 5066591daabe |
children | 87b3354dae70 |
files | src/Makefile src/option.c src/testdir/test_alot.vim src/testdir/test_cdo.vim src/testdir/test_set.in src/testdir/test_set.ok src/testdir/test_set.vim src/version.c |
diffstat | 8 files changed, 40 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/src/Makefile +++ b/src/Makefile @@ -1958,7 +1958,6 @@ test1 \ test_qf_title \ test_ruby \ test_search_mbyte \ - test_set \ test_signs \ test_tagcase \ test_textobjects \ @@ -1980,6 +1979,7 @@ test1 \ test_assert \ test_cdo \ test_searchpos \ + test_set \ test_sort \ test_undolevels \ test_viml \
--- a/src/option.c +++ b/src/option.c @@ -4839,9 +4839,15 @@ do_set(arg, opt_flags) || s[i] == NUL)) break; /* Count backslashes. Only a comma with an - * even number of backslashes before it is - * recognized as a separator */ - if (s > origval && s[-1] == '\\') + * even number of backslashes or a single + * backslash preceded by a comma before it + * is recognized as a separator */ + if ((s > origval + 1 + && s[-1] == '\\' + && s[-2] != ',') + || (s == origval + 1 + && s[-1] == '\\')) + ++bs; else bs = 0;
--- a/src/testdir/test_alot.vim +++ b/src/testdir/test_alot.vim @@ -3,5 +3,6 @@ source test_lispwords.vim source test_searchpos.vim +source test_set.vim source test_sort.vim source test_undolevels.vim
--- a/src/testdir/test_cdo.vim +++ b/src/testdir/test_cdo.vim @@ -1,6 +1,5 @@ " Tests for the :cdo, :cfdo, :ldo and :lfdo commands -lang mess C if !has('quickfix') finish endif
deleted file mode 100644 --- a/src/testdir/test_set.in +++ /dev/null @@ -1,12 +0,0 @@ -Tests for :set vim: set ft=vim : - -STARTTEST -:so small.vim -:set wildignore=*.png, -:set wildignore+=*.jpg -:$put =&wildignore -:/^Output goes here/+1,$w! test.out -:qa! -ENDTEST - -Output goes here
new file mode 100644 --- /dev/null +++ b/src/testdir/test_set.vim @@ -0,0 +1,27 @@ +" Tests for the :set command + +function Test_set_backslash() + let isk_save = &isk + + set isk=a,b,c + set isk+=d + call assert_equal('a,b,c,d', &isk) + set isk+=\\,e + call assert_equal('a,b,c,d,\,e', &isk) + set isk-=e + call assert_equal('a,b,c,d,\', &isk) + set isk-=\\ + call assert_equal('a,b,c,d', &isk) + + let &isk = isk_save +endfunction + +function Test_set_add() + let wig_save = &wig + + set wildignore=*.png, + set wildignore+=*.jpg + call assert_equal('*.png,*.jpg', &wig) + + let &wig = wig_save +endfunction