aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/ex_docmd.c6
-rw-r--r--src/nvim/option.c7
-rw-r--r--src/nvim/testdir/test_cmdline.vim14
-rw-r--r--src/nvim/testdir/test_options.vim6
-rw-r--r--src/nvim/version.c8
5 files changed, 30 insertions, 11 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index d1405978b3..f9442a4cf6 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -1668,8 +1668,8 @@ static char_u * do_one_cmd(char_u **cmdlinep,
if (*ea.cmd == ';') {
if (!ea.skip) {
curwin->w_cursor.lnum = ea.line2;
- // Don't leave the cursor on an illegal line (caused by ';')
- check_cursor_lnum();
+ // don't leave the cursor on an illegal line or column
+ check_cursor();
}
} else if (*ea.cmd != ',') {
break;
@@ -1813,7 +1813,7 @@ static char_u * do_one_cmd(char_u **cmdlinep,
if (text_locked() && !(ea.argt & CMDWIN)
&& !IS_USER_CMDIDX(ea.cmdidx)) {
// Command not allowed when editing the command line.
- errormsg = get_text_locked_msg();
+ errormsg = (char_u *)_(get_text_locked_msg());
goto doend;
}
/* Disallow editing another buffer when "curbuf_lock" is set.
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 8ba10fd38a..74250e83e6 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -1749,7 +1749,7 @@ do_set (
if (flags & P_FLAGLIST) {
// Remove flags that appear twice.
- for (s = newval; *s; s++) {
+ for (s = newval; *s;) {
// if options have P_FLAGLIST and P_ONECOMMA such as
// 'whichwrap'
if (flags & P_ONECOMMA) {
@@ -1757,15 +1757,16 @@ do_set (
&& vim_strchr(s + 2, *s) != NULL) {
// Remove the duplicated value and the next comma.
STRMOVE(s, s + 2);
- s -= 2;
+ continue;
}
} else {
if ((!(flags & P_COMMA) || *s != ',')
&& vim_strchr(s + 1, *s) != NULL) {
STRMOVE(s, s + 1);
- s--;
+ continue;
}
}
+ s++;
}
}
diff --git a/src/nvim/testdir/test_cmdline.vim b/src/nvim/testdir/test_cmdline.vim
index 2facffb067..c0f04f4730 100644
--- a/src/nvim/testdir/test_cmdline.vim
+++ b/src/nvim/testdir/test_cmdline.vim
@@ -250,9 +250,21 @@ func Test_remove_char_in_cmdline()
call assert_equal('"def', @:)
endfunc
-func Test_illegal_address()
+func Test_illegal_address1()
new
2;'(
2;')
quit
endfunc
+
+func Test_illegal_address2()
+ call writefile(['c', 'x', ' x', '.', '1;y'], 'Xtest.vim')
+ new
+ source Xtest.vim
+ " Trigger calling validate_cursor()
+ diffsp Xtest.vim
+ quit!
+ bwipe!
+ call delete('Xtest.vim')
+endfunc
+
diff --git a/src/nvim/testdir/test_options.vim b/src/nvim/testdir/test_options.vim
index 5ee0919e18..2ffe63787b 100644
--- a/src/nvim/testdir/test_options.vim
+++ b/src/nvim/testdir/test_options.vim
@@ -13,6 +13,12 @@ function! Test_whichwrap()
set whichwrap+=h,l
call assert_equal('b,s,h,l', &whichwrap)
+ set whichwrap=h,h
+ call assert_equal('h', &whichwrap)
+
+ set whichwrap=h,h,h
+ call assert_equal('h', &whichwrap)
+
set whichwrap&
endfunction
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 6f38776a60..675ebb17b0 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -625,10 +625,10 @@ static const int included_patches[] = {
// 330,
// 329,
// 328,
- // 327,
+ 327,
326,
325,
- // 324,
+ 324,
// 323,
322,
// 321,
@@ -647,10 +647,10 @@ static const int included_patches[] = {
308,
307,
// 306,
- // 305,
+ 305,
// 304,
// 303,
- // 302,
+ // 302, NA
// 301,
300,
// 299,