diff options
-rw-r--r-- | src/evalvars.c | 18 | ||||
-rw-r--r-- | src/ex_cmds.h | 2 | ||||
-rw-r--r-- | src/ex_docmd.c | 1 | ||||
-rw-r--r-- | src/proto/evalvars.pro | 1 | ||||
-rw-r--r-- | src/proto/scriptfile.pro | 2 | ||||
-rw-r--r-- | src/scriptfile.c | 60 | ||||
-rw-r--r-- | src/version.c | 2 |
7 files changed, 9 insertions, 77 deletions
diff --git a/src/evalvars.c b/src/evalvars.c index a45080b540..e7a1b6d7ce 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -164,7 +164,6 @@ static dict_T vimvardict; // Dictionary with v: variables // for VIM_VERSION_ defines #include "version.h" -static void ex_let_const(exarg_T *eap); static char_u *skip_var_one(char_u *arg, int include_type); static void list_glob_vars(int *first); static void list_buf_vars(int *first); @@ -682,27 +681,14 @@ heredoc_get(exarg_T *eap, char_u *cmd, int script_get) * ":let [var1, var2] = expr" unpack list. * ":let var =<< ..." heredoc * ":let var: string" Vim9 declaration - */ - void -ex_let(exarg_T *eap) -{ - ex_let_const(eap); -} - -/* + * * ":const" list all variable values * ":const var1 var2" list variable values * ":const var = expr" assignment command. * ":const [var1, var2] = expr" unpack list. */ void -ex_const(exarg_T *eap) -{ - ex_let_const(eap); -} - - static void -ex_let_const(exarg_T *eap) +ex_let(exarg_T *eap) { char_u *arg = eap->arg; char_u *expr = NULL; diff --git a/src/ex_cmds.h b/src/ex_cmds.h index 2d86c5dc7e..f68c4fd0b2 100644 --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -396,7 +396,7 @@ EXCMD(CMD_continue, "continue", ex_continue, EXCMD(CMD_confirm, "confirm", ex_wrongmodifier, EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_CMDWIN, ADDR_NONE), -EXCMD(CMD_const, "const", ex_const, +EXCMD(CMD_const, "const", ex_let, EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN, ADDR_NONE), EXCMD(CMD_copen, "copen", ex_copen, diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 3d590e5577..90f3a6dc29 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -269,7 +269,6 @@ static void ex_tag_cmd(exarg_T *eap, char_u *name); # define ex_call ex_ni # define ex_catch ex_ni # define ex_compiler ex_ni -# define ex_const ex_ni # define ex_continue ex_ni # define ex_debug ex_ni # define ex_debuggreedy ex_ni diff --git a/src/proto/evalvars.pro b/src/proto/evalvars.pro index 58e922113e..0d2e7b40d0 100644 --- a/src/proto/evalvars.pro +++ b/src/proto/evalvars.pro @@ -15,7 +15,6 @@ void prepare_vimvar(int idx, typval_T *save_tv); void restore_vimvar(int idx, typval_T *save_tv); list_T *heredoc_get(exarg_T *eap, char_u *cmd, int script_get); void ex_let(exarg_T *eap); -void ex_const(exarg_T *eap); int ex_let_vars(char_u *arg_start, typval_T *tv, int copy, int semicolon, int var_count, int flags, char_u *op); char_u *skip_var_list(char_u *arg, int include_type, int *var_count, int *semicolon); void list_hashtable_vars(hashtab_T *ht, char *prefix, int empty, int *first); diff --git a/src/proto/scriptfile.pro b/src/proto/scriptfile.pro index 84536ba78e..111e855a74 100644 --- a/src/proto/scriptfile.pro +++ b/src/proto/scriptfile.pro @@ -19,8 +19,6 @@ int ExpandPackAddDir(char_u *pat, int *num_file, char_u ***file); void ex_source(exarg_T *eap); void ex_options(exarg_T *eap); linenr_T *source_breakpoint(void *cookie); -garray_T *source_get_line_ga(void *cookie); -void source_use_line_ga(void *cookie); int *source_dbg_tick(void *cookie); int source_level(void *cookie); int do_source(char_u *fname, int check_other, int is_vimrc, int *ret_sid); diff --git a/src/scriptfile.c b/src/scriptfile.c index 7a148a7c8a..f42c3d04b0 100644 --- a/src/scriptfile.c +++ b/src/scriptfile.c @@ -998,8 +998,6 @@ struct source_cookie int error; // TRUE if LF found after CR-LF #endif #ifdef FEAT_EVAL - garray_T lines_ga; // lines read in previous pass - int use_lines_ga; // next line to get from "lines_ga" linenr_T breakpoint; // next line with breakpoint or zero char_u *fname; // name of sourced file int dbg_tick; // debug_tick when breakpoint was set @@ -1019,24 +1017,6 @@ source_breakpoint(void *cookie) } /* - * Get the grow array to store script lines in. - */ - garray_T * -source_get_line_ga(void *cookie) -{ - return &((struct source_cookie *)cookie)->lines_ga; -} - -/* - * Set the index to start reading from the grow array with script lines. - */ - void -source_use_line_ga(void *cookie) -{ - ((struct source_cookie *)cookie)->use_lines_ga = 0; -} - -/* * Return the address holding the debug tick for a source cookie. */ int * @@ -1255,9 +1235,6 @@ do_source( cookie.finished = FALSE; #ifdef FEAT_EVAL - ga_init2(&cookie.lines_ga, sizeof(char_u *), 200); - cookie.use_lines_ga = -1; - // Check if this script has a breakpoint. cookie.breakpoint = dbg_find_breakpoint(TRUE, fname_exp, (linenr_T)0); cookie.fname = fname_exp; @@ -1302,6 +1279,9 @@ do_source( si->sn_version = 1; current_sctx.sc_sid = sid; + // In Vim9 script all script-local variables are removed when reloading + // the same script. In legacy script they remain but "const" can be + // set again. ht = &SCRIPT_VARS(sid); if (is_vim9) hashtab_free_contents(ht); @@ -1475,9 +1455,6 @@ almosttheend: vim_free(cookie.nextline); vim_free(firstline); convert_setup(&cookie.conv, NULL, NULL); -#ifdef FEAT_EVAL - ga_clear_strings(&cookie.lines_ga); -#endif if (trigger_source_post) apply_autocmds(EVENT_SOURCEPOST, fname_exp, fname_exp, FALSE, curbuf); @@ -1733,31 +1710,6 @@ getsourceline(int c UNUSED, void *cookie, int indent UNUSED, int do_concat) // one now. if (sp->finished) line = NULL; -#ifdef FEAT_EVAL - else if (sp->use_lines_ga >= 0) - { - // Get a line that was read in ex_vim9script(). - for (;;) - { - if (sp->use_lines_ga >= sp->lines_ga.ga_len) - { - line = NULL; - break; - } - else - { - line = ((char_u **)(sp->lines_ga.ga_data))[sp->use_lines_ga]; - ((char_u **)(sp->lines_ga.ga_data))[sp->use_lines_ga] = NULL; - ++sp->use_lines_ga; - if (line != NULL) - break; - // Skip NULL lines, they are equivalent to blank lines. - ++sp->sourcing_lnum; - } - } - SOURCING_LNUM = sp->sourcing_lnum + 1; - } -#endif else if (sp->nextline == NULL) line = get_one_sourceline(sp); else @@ -1773,11 +1725,7 @@ getsourceline(int c UNUSED, void *cookie, int indent UNUSED, int do_concat) // Only concatenate lines starting with a \ when 'cpoptions' doesn't // contain the 'C' flag. - if (line != NULL && do_concat && vim_strchr(p_cpo, CPO_CONCAT) == NULL -#ifdef FEAT_EVAL - && sp->use_lines_ga < 0 -#endif - ) + if (line != NULL && do_concat && vim_strchr(p_cpo, CPO_CONCAT) == NULL) { // compensate for the one line read-ahead --sp->sourcing_lnum; diff --git a/src/version.c b/src/version.c index 2d99068b09..c120d82f09 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 822, +/**/ 821, /**/ 820, |