summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-11-26 16:50:30 +0100
committerBram Moolenaar <Bram@vim.org>2019-11-26 16:50:30 +0100
commit8f76e6b12b958f2779444a92234bbaf3f49eeb99 (patch)
tree36c6d1bb7f575255ca0743dccde1523436134a43 /src
parent84f903326d44db9b75fc3a39d4866f636f9ad4cd (diff)
patch 8.1.2348: :const cannot be followed by "| endif"v8.1.2348
Problem: :const cannot be followed by "| endif". Solution: Check following command for :const. (closes #5269) Also fix completion after :const.
Diffstat (limited to 'src')
-rw-r--r--src/cmdexpand.c1
-rw-r--r--src/eval.c2
-rw-r--r--src/ex_docmd.c1
-rw-r--r--src/testdir/test_cmdline.vim1
-rw-r--r--src/testdir/test_const.vim6
-rw-r--r--src/testdir/test_let.vim4
-rw-r--r--src/version.c2
7 files changed, 16 insertions, 1 deletions
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index 7381b0e9b7..1a7f9f2ecd 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -1508,6 +1508,7 @@ set_one_cmd_context(
break;
#endif
#ifdef FEAT_EVAL
+ case CMD_const:
case CMD_let:
case CMD_if:
case CMD_elseif:
diff --git a/src/eval.c b/src/eval.c
index ace1e013f5..b65f29efca 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1521,7 +1521,7 @@ set_context_for_expression(
int c;
char_u *p;
- if (cmdidx == CMD_let)
+ if (cmdidx == CMD_let || cmdidx == CMD_const)
{
xp->xp_context = EXPAND_USER_VARS;
if (vim_strpbrk(arg, (char_u *)"\"'+-*/%.=!?~|&$([<>,#") == NULL)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 385cf3b4ae..576a75674a 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2359,6 +2359,7 @@ do_one_cmd(
case CMD_browse:
case CMD_call:
case CMD_confirm:
+ case CMD_const:
case CMD_delfunction:
case CMD_djump:
case CMD_dlist:
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 3f73d3da34..7a4979e015 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -184,6 +184,7 @@ func Test_expr_completion()
endif
for cmd in [
\ 'let a = ',
+ \ 'const a = ',
\ 'if',
\ 'elseif',
\ 'while',
diff --git a/src/testdir/test_const.vim b/src/testdir/test_const.vim
index 55e4492bde..8df34f4ad6 100644
--- a/src/testdir/test_const.vim
+++ b/src/testdir/test_const.vim
@@ -197,6 +197,12 @@ func Test_cannot_modify_existing_variable()
call assert_fails('const [i2, f2, s2] = [1, 1.1, "vim"]', 'E995:')
endfunc
+func Test_const_with_condition()
+ const x = 0
+ if 0 | const x = 1 | endif
+ call assert_equal(0, x)
+endfunc
+
func Test_const_with_index_access()
let l = [1, 2, 3]
call assert_fails('const l[0] = 4', 'E996:')
diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim
index 4d9aae96f1..055425de28 100644
--- a/src/testdir/test_let.vim
+++ b/src/testdir/test_let.vim
@@ -24,6 +24,10 @@ func Test_let()
let out = execute('let a {0 == 1 ? "a" : "b"}')
let s = "\na #1\nb #2"
call assert_equal(s, out)
+
+ let x = 0
+ if 0 | let x = 1 | endif
+ call assert_equal(0, x)
endfunc
func s:set_arg1(a) abort
diff --git a/src/version.c b/src/version.c
index 981f92fac4..70df145126 100644
--- a/src/version.c
+++ b/src/version.c
@@ -738,6 +738,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2348,
+/**/
2347,
/**/
2346,