Mercurial > vim
changeset 20111:f40231487a49 v8.2.0611
patch 8.2.0611: Vim9: no check for space before #comment
Commit: https://github.com/vim/vim/commit/faac410409a8d693a0326ad9db42dca85419a391
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Apr 20 17:46:14 2020 +0200
patch 8.2.0611: Vim9: no check for space before #comment
Problem: Vim9: no check for space before #comment.
Solution: Add space checks.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 20 Apr 2020 18:00:03 +0200 |
parents | e24fd2902727 |
children | b209e0dd46a4 |
files | src/eval.c src/evalvars.c src/ex_docmd.c src/testdir/test_vim9_script.vim src/version.c |
diffstat | 5 files changed, 69 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -1773,7 +1773,7 @@ eval0( p = skipwhite(arg); ret = eval1(&p, rettv, evaluate); - if (ret == FAIL || !ends_excmd(*p)) + if (ret == FAIL || !ends_excmd2(arg, p)) { if (ret != FAIL) clear_tv(rettv);
--- a/src/evalvars.c +++ b/src/evalvars.c @@ -737,7 +737,7 @@ ex_let_const(exarg_T *eap, int is_const) emsg(_(e_invarg)); else if (expr[0] == '.') emsg(_("E985: .= is not supported with script version 2")); - else if (!ends_excmd(*arg)) + else if (!ends_excmd2(eap->cmd, arg)) // ":let var1 var2" arg = list_arg_vars(eap, arg, &first); else if (!eap->skip) @@ -1068,7 +1068,7 @@ list_arg_vars(exarg_T *eap, char_u *arg, char_u *tofree; typval_T tv; - while (!ends_excmd(*arg) && !got_int) + while (!ends_excmd2(eap->cmd, arg) && !got_int) { if (error || eap->skip) {
--- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -7903,7 +7903,7 @@ ex_findpat(exarg_T *eap) p = skipwhite(p); // Check for trailing illegal characters - if (!ends_excmd(*p)) + if (!ends_excmd2(eap->arg, p)) eap->errmsg = e_trailing; else eap->nextcmd = check_nextcmd(p);
--- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -1208,6 +1208,69 @@ def Test_vim9_comment_not_compiled() 'let g:var = 123', 'unlet g:var # something', ], 'E488:') + + CheckScriptSuccess([ + 'vim9script', + 'if 1 # comment', + ' echo "yes"', + 'elseif 2 #comment', + ' echo "no"', + 'endif', + ]) + + CheckScriptFailure([ + 'vim9script', + 'if 1# comment', + ' echo "yes"', + 'endif', + ], 'E15:') + + CheckScriptFailure([ + 'vim9script', + 'if 0 # comment', + ' echo "yes"', + 'elseif 2#comment', + ' echo "no"', + 'endif', + ], 'E15:') + + CheckScriptSuccess([ + 'vim9script', + 'let # comment', + ]) + + CheckScriptFailure([ + 'vim9script', + 'let# comment', + ], 'E121:') + + CheckScriptSuccess([ + 'vim9script', + 'let v:version # comment', + ]) + + CheckScriptFailure([ + 'vim9script', + 'let v:version# comment', + ], 'E121:') + + CheckScriptSuccess([ + 'vim9script', + 'new' + 'call setline(1, ["# define pat", "last"])', + '$', + 'dsearch /pat/ #comment', + 'bwipe!', + ]) + + CheckScriptFailure([ + 'vim9script', + 'new' + 'call setline(1, ["# define pat", "last"])', + '$', + 'dsearch /pat/#comment', + 'bwipe!', + ], 'E488:') enddef " Keep this last, it messes up highlighting.