summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/evalvars.c18
-rw-r--r--src/ex_cmds.h2
-rw-r--r--src/ex_docmd.c1
-rw-r--r--src/proto/evalvars.pro1
-rw-r--r--src/proto/scriptfile.pro2
-rw-r--r--src/scriptfile.c60
-rw-r--r--src/version.c2
7 files changed, 9 insertions, 77 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index a45080b54..e7a1b6d7c 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 2d86c5dc7..f68c4fd0b 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 3d590e557..90f3a6dc2 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 58e922113..0d2e7b40d 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 84536ba78..111e855a7 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 7a148a7c8..f42c3d04b 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 2d99068b0..c120d82f0 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,