Merge pull request #4737 from jamessan/vim-7.4.1017

https://github.com/neovim/neovim/pull/4789C] vim-patch:7.4.1017,7.4.1018,7.4.1034
This commit is contained in:
Justin M. Keyes 2016-05-21 00:05:37 -04:00
commit 8e20ba9fbd
3 changed files with 29 additions and 11 deletions

View File

@ -1639,18 +1639,21 @@ do_set (
&& STRNCMP(s, newval, i) == 0 && STRNCMP(s, newval, i) == 0
&& (!(flags & P_COMMA) && (!(flags & P_COMMA)
|| s[i] == ',' || s[i] == ','
|| s[i] == NUL)) || s[i] == NUL)) {
break; break;
/* Count backslashes. Only a comma with an }
* even number of backslashes before it is // Count backslashes. Only a comma with an even number of
* recognized as a separator */ // backslashes or a single backslash preceded by a comma
if (s > origval && s[-1] == '\\') // before it is recognized as a separator
++bs; if ((s > origval + 1 && s[-1] == '\\' && s[-2] != ',')
else || (s == origval + 1 && s[-1] == '\\')) {
bs++;
} else {
bs = 0; bs = 0;
}
} }
/* do not add if already there */ // do not add if already there
if ((adding || prepending) && *s) { if ((adding || prepending) && *s) {
prepending = FALSE; prepending = FALSE;
adding = FALSE; adding = FALSE;

View File

@ -650,7 +650,7 @@ static int included_patches[] = {
1037, 1037,
1036, 1036,
1035, 1035,
// 1034, 1034,
// 1033 NA // 1033 NA
1032, 1032,
// 1031 NA, // 1031 NA,
@ -666,8 +666,8 @@ static int included_patches[] = {
// 1021 NA // 1021 NA
// 1020 NA // 1020 NA
// 1019 NA // 1019 NA
// 1018, 1018,
// 1017, 1017,
// 1016 NA // 1016 NA
1015, 1015,
// 1014 NA // 1014 NA

View File

@ -7,6 +7,21 @@ local clear, execute, eval, eq =
describe(':set', function() describe(':set', function()
before_each(clear) before_each(clear)
it('handles backslash properly', function()
execute('set iskeyword=a,b,c')
execute('set iskeyword+=d')
eq('a,b,c,d', eval('&iskeyword'))
execute([[set iskeyword+=\\,e]])
eq([[a,b,c,d,\,e]], eval('&iskeyword'))
execute('set iskeyword-=e')
eq([[a,b,c,d,\]], eval('&iskeyword'))
execute([[set iskeyword-=\]])
eq('a,b,c,d', eval('&iskeyword'))
end)
it('recognizes a trailing comma with +=', function() it('recognizes a trailing comma with +=', function()
execute('set wildignore=*.png,') execute('set wildignore=*.png,')
execute('set wildignore+=*.jpg') execute('set wildignore+=*.jpg')