aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2018-09-13 01:52:31 -0400
committerJustin M. Keyes <justinkz@gmail.com>2018-09-13 07:52:31 +0200
commitea5337d9b5933680329e59d61d0808378574c256 (patch)
tree4e6ec150399abf66a951ddd2c98e4df1344a0d13 /src
parentd5702a45346a738c4f684e790a3fcdb838dd24af (diff)
downloadrneovim-ea5337d9b5933680329e59d61d0808378574c256.tar.gz
rneovim-ea5337d9b5933680329e59d61d0808378574c256.tar.bz2
rneovim-ea5337d9b5933680329e59d61d0808378574c256.zip
vim-patch:8.0.1172: when E734 is given option is still set (#8988)
Problem: When E734 is given option is still set. Solution: Assign NULL to "s". (Christian Brabandt) https://github.com/vim/vim/commit/2a6a6c3014e728cd01c750b0f60484d4eaf22a8c
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c1
-rw-r--r--src/nvim/testdir/test_assign.vim14
2 files changed, 15 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index b7f5d93bf3..0b81e10bd9 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -1912,6 +1912,7 @@ static char_u *ex_let_one(char_u *arg, typval_T *const tv,
if ((opt_type == 1 && *op == '.')
|| (opt_type == 0 && *op != '.')) {
EMSG2(_(e_letwrong), op);
+ s = NULL; // don't set the value
} else {
if (opt_type == 1) { // number
if (*op == '+') {
diff --git a/src/nvim/testdir/test_assign.vim b/src/nvim/testdir/test_assign.vim
index a75e89d5dd..50415ad6fd 100644
--- a/src/nvim/testdir/test_assign.vim
+++ b/src/nvim/testdir/test_assign.vim
@@ -31,3 +31,17 @@ func Test_let_termcap()
let &t_xx = ""
call assert_fails('let x = &t_xx', 'E15')
endfunc
+
+func Test_let_option_error()
+ let _w = &tw
+ let &tw = 80
+ call assert_fails('let &tw .= 1', 'E734')
+ call assert_equal(80, &tw)
+ let &tw = _w
+
+ let _w = &fillchars
+ let &fillchars = "vert:|"
+ call assert_fails('let &fillchars += "diff:-"', 'E734')
+ call assert_equal("vert:|", &fillchars)
+ let &fillchars = _w
+endfunc