From 59ef994f8f5fad9aaaa0e1d6eae3af66f6bb2630 Mon Sep 17 00:00:00 2001 From: Jurica Bradaric Date: Thu, 28 Jan 2016 19:28:15 +0100 Subject: [PATCH] vim-patch:7.4.741 #4121 Problem: When using += with ":set" a trailing comma is not recognized. (Issue 365) Solution: Don't add a second comma. Add a test. (partly by Christian Brabandt) https://github.com/vim/vim/commit/a7b7b1cef9b61700ba5076c1d889dce791392388 --- src/nvim/option.c | 5 +++++ src/nvim/version.c | 2 +- test/functional/legacy/set_spec.lua | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/functional/legacy/set_spec.lua diff --git a/src/nvim/option.c b/src/nvim/option.c index 18269f4c18..d3a2ce971d 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -1673,6 +1673,11 @@ do_set ( && *newval != NUL); if (adding) { i = (int)STRLEN(origval); + // Strip a trailing comma, would get 2. + if (comma && i > 1 && origval[i - 1] == ',' + && origval[i - 2] != '\\') { + --i; + } memmove(newval + i + comma, newval, STRLEN(newval) + 1); memmove(newval, origval, (size_t)i); diff --git a/src/nvim/version.c b/src/nvim/version.c index 99484dd21d..871f96acf4 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -421,7 +421,7 @@ static int included_patches[] = { // 744 NA // 743, // 742, - // 741, + 741, // 740, 739, // 738 NA diff --git a/test/functional/legacy/set_spec.lua b/test/functional/legacy/set_spec.lua new file mode 100644 index 0000000000..f81fcd3700 --- /dev/null +++ b/test/functional/legacy/set_spec.lua @@ -0,0 +1,15 @@ +-- Tests for :set + +local helpers = require('test.functional.helpers') +local clear, execute, eval, eq = + helpers.clear, helpers.execute, helpers.eval, helpers.eq + +describe(':set', function() + before_each(clear) + + it('recognizes a trailing comma with +=', function() + execute('set wildignore=*.png,') + execute('set wildignore+=*.jpg') + eq('*.png,*.jpg', eval('&wildignore')) + end) +end)