neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit fa8b2b4c50c089804a57f77aed6650b7e4c3f0cc
parent fea15adad394619aaea69b627be249f8a20dc2ed
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun,  7 Aug 2022 17:11:03 +0800

vim-patch:8.2.4492: no error if an option is given a value with ":let &opt = val" (#19670)

Problem:    No error if an option is given an invalid value with
            ":let &opt = val".
Solution:   Give the error. (closes vim/vim#9864)
https://github.com/vim/vim/commit/8ccbbeb620dcc73154de29c51100fe815cefe109
Diffstat:
Msrc/nvim/eval/vars.c | 5++++-
Msrc/nvim/testdir/test_normal.vim | 3++-
Msrc/nvim/testdir/test_options.vim | 2++
3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/nvim/eval/vars.c b/src/nvim/eval/vars.c @@ -678,8 +678,11 @@ static char *ex_let_one(char *arg, typval_T *const tv, const bool copy, const bo if (!failed) { if (opt_type != gov_string || s != NULL) { - set_option_value(arg, n, s, opt_flags); + char *err = set_option_value(arg, n, s, opt_flags); arg_end = p; + if (err != NULL) { + emsg(_(err)); + } } else { emsg(_(e_stringreq)); } diff --git a/src/nvim/testdir/test_normal.vim b/src/nvim/testdir/test_normal.vim @@ -1975,7 +1975,8 @@ func Test_normal31_r_cmd() " using CTRL-Y and CTRL-E. " Different code paths are used for utf-8 and latin1 encodings set showmatch - for enc in ['latin1', 'utf-8'] + " for enc in ['latin1', 'utf-8'] + for enc in ['utf-8'] enew! let &encoding = enc call setline(1, [' {a}', 'xxxxxxxxxx', ' [b]']) diff --git a/src/nvim/testdir/test_options.vim b/src/nvim/testdir/test_options.vim @@ -310,6 +310,7 @@ func Test_set_errors() call assert_fails('set sidescroll=-1', 'E487:') call assert_fails('set tabstop=-1', 'E487:') call assert_fails('set tabstop=10000', 'E474:') + call assert_fails('let &tabstop = 10000', 'E474:') call assert_fails('set tabstop=5500000000', 'E474:') call assert_fails('set textwidth=-1', 'E487:') call assert_fails('set timeoutlen=-1', 'E487:') @@ -325,6 +326,7 @@ func Test_set_errors() call assert_fails('set comments=a', 'E525:') call assert_fails('set foldmarker=x', 'E536:') call assert_fails('set commentstring=x', 'E537:') + call assert_fails('let &commentstring = "x"', 'E537:') call assert_fails('set complete=x', 'E539:') call assert_fails('set rulerformat=%-', 'E539:') call assert_fails('set rulerformat=%(', 'E542:')