# HG changeset patch # User Bram Moolenaar # Date 1574784004 -3600 # Node ID baf890fa162165fddc4a01e99cfac41968244ebe # Parent 9135f4563b16f52be3a60b65dd58a125bb8de539 patch 8.1.2348: :const cannot be followed by "| endif" Commit: https://github.com/vim/vim/commit/8f76e6b12b958f2779444a92234bbaf3f49eeb99 Author: Bram Moolenaar Date: Tue Nov 26 16:50:30 2019 +0100 patch 8.1.2348: :const cannot be followed by "| endif" Problem: :const cannot be followed by "| endif". Solution: Check following command for :const. (closes https://github.com/vim/vim/issues/5269) Also fix completion after :const. diff --git a/src/cmdexpand.c b/src/cmdexpand.c --- 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 --- 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 --- 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 --- 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 --- a/src/testdir/test_const.vim +++ b/src/testdir/test_const.vim @@ -197,6 +197,12 @@ func Test_cannot_modify_existing_variabl 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 --- 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 --- 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,