Mercurial > vim
diff src/vim9compile.c @ 20059:de756b3f4dee v8.2.0585
patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Commit: https://github.com/vim/vim/commit/7a09224583b2ad0d9d0648b53cc2d989d45ae96e
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Apr 16 22:10:49 2020 +0200
patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Problem: Vim9: # comment not recognized after :vim9script.
Solution: Check script type. Make comment after ":echo" work. And in
several other places.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 16 Apr 2020 22:15:04 +0200 |
parents | 686deb5959c2 |
children | 336483164ca6 |
line wrap: on
line diff
--- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -108,6 +108,7 @@ typedef struct { struct cctx_S { ufunc_T *ctx_ufunc; // current function int ctx_lnum; // line number in current function + char_u *ctx_line_start; // start of current line or NULL garray_T ctx_instr; // generated instructions garray_T ctx_locals; // currently visible local variables @@ -2055,14 +2056,18 @@ free_imported(cctx_T *cctx) static char_u * next_line_from_context(cctx_T *cctx) { - char_u *line = NULL; + char_u *line; do { ++cctx->ctx_lnum; if (cctx->ctx_lnum >= cctx->ctx_ufunc->uf_lines.ga_len) + { + line = NULL; break; + } line = ((char_u **)cctx->ctx_ufunc->uf_lines.ga_data)[cctx->ctx_lnum]; + cctx->ctx_line_start = line; SOURCING_LNUM = cctx->ctx_ufunc->uf_script_ctx.sc_lnum + cctx->ctx_lnum + 1; } while (line == NULL || *skipwhite(line) == NUL); @@ -5448,7 +5453,7 @@ compile_catch(char_u *arg, cctx_T *cctx } p = skipwhite(arg); - if (ends_excmd(*p)) + if (ends_excmd2(arg, p)) { scope->se_u.se_try.ts_caught_all = TRUE; scope->se_u.se_try.ts_catch_label = 0; @@ -5782,7 +5787,9 @@ compile_def_function(ufunc_T *ufunc, int if (line != NULL && *line == '|') // the line continues after a '|' ++line; - else if (line != NULL && *line != NUL) + else if (line != NULL && *line != NUL + && !(*line == '#' && (line == cctx.ctx_line_start + || VIM_ISWHITE(line[-1])))) { semsg(_("E488: Trailing characters: %s"), line); goto erret;