mirror of
https://github.com/neovim/neovim.git
synced 2025-09-12 22:38:16 +00:00
vim-patch:8.1.2348: :const cannot be followed by "| endif"
Problem: :const cannot be followed by "| endif".
Solution: Check following command for :const. (closes vim/vim#5269)
Also fix completion after :const.
8f76e6b12b
This commit is contained in:
@@ -2872,7 +2872,7 @@ void set_context_for_expression(expand_T *xp, char_u *arg, cmdidx_T cmdidx)
|
||||
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) {
|
||||
/* ":let var1 var2 ...": find last space. */
|
||||
|
@@ -2126,6 +2126,7 @@ static char_u * do_one_cmd(char_u **cmdlinep,
|
||||
case CMD_browse:
|
||||
case CMD_call:
|
||||
case CMD_confirm:
|
||||
case CMD_const:
|
||||
case CMD_delfunction:
|
||||
case CMD_djump:
|
||||
case CMD_dlist:
|
||||
@@ -3437,6 +3438,7 @@ const char * set_one_cmd_context(
|
||||
case CMD_syntax:
|
||||
set_context_in_syntax_cmd(xp, arg);
|
||||
break;
|
||||
case CMD_const:
|
||||
case CMD_let:
|
||||
case CMD_if:
|
||||
case CMD_elseif:
|
||||
|
@@ -159,6 +159,7 @@ func Test_expr_completion()
|
||||
endif
|
||||
for cmd in [
|
||||
\ 'let a = ',
|
||||
\ 'const a = ',
|
||||
\ 'if',
|
||||
\ 'elseif',
|
||||
\ 'while',
|
||||
|
@@ -176,6 +176,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:')
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user