changeset 23877:85cf06ddb2a8 v8.2.2480

patch 8.2.2480: Vim9: some errors for white space do not show context Commit: https://github.com/vim/vim/commit/c3fc75db023f2acd0b82b7eebffd7ed89e8001ed Author: Bram Moolenaar <Bram@vim.org> Date: Sun Feb 7 15:28:09 2021 +0100 patch 8.2.2480: Vim9: some errors for white space do not show context Problem: Vim9: some errors for white space do not show context. Solution: Include the text at the error.
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Feb 2021 15:30:03 +0100
parents 50f3627e6740
children 27d60e2c71b8
files src/dict.c src/errors.h src/list.c src/userfunc.c src/version.c src/vim9compile.c src/vim9script.c src/vim9type.c
diffstat 8 files changed, 22 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/dict.c
+++ b/src/dict.c
@@ -970,7 +970,7 @@ eval_dict(char_u **arg, typval_T *rettv,
 	}
 	if (vim9script && (*arg)[1] != NUL && !VIM_ISWHITE((*arg)[1]))
 	{
-	    semsg(_(e_white_space_required_after_str), ":");
+	    semsg(_(e_white_space_required_after_str_str), ":", *arg);
 	    clear_tv(&tvkey);
 	    goto failret;
 	}
@@ -1012,7 +1012,7 @@ eval_dict(char_u **arg, typval_T *rettv,
 	{
 	    if (vim9script && (*arg)[1] != NUL && !VIM_ISWHITE((*arg)[1]))
 	    {
-		semsg(_(e_white_space_required_after_str), ",");
+		semsg(_(e_white_space_required_after_str_str), ",", *arg);
 		goto failret;
 	    }
 	    *arg = skipwhite(*arg + 1);
--- a/src/errors.h
+++ b/src/errors.h
@@ -175,8 +175,8 @@ EXTERN char e_separator_mismatch_str[]
 	INIT(= N_("E1067: Separator mismatch: %s"));
 EXTERN char e_no_white_space_allowed_before_str[]
 	INIT(= N_("E1068: No white space allowed before '%s'"));
-EXTERN char e_white_space_required_after_str[]
-	INIT(= N_("E1069: White space required after '%s'"));
+EXTERN char e_white_space_required_after_str_str[]
+	INIT(= N_("E1069: White space required after '%s': %s"));
 EXTERN char e_missing_from[]
 	INIT(= N_("E1070: Missing \"from\""));
 EXTERN char e_invalid_string_after_from[]
--- a/src/list.c
+++ b/src/list.c
@@ -1311,7 +1311,7 @@ eval_list(char_u **arg, typval_T *rettv,
 	{
 	    if (vim9script && !IS_WHITE_OR_NUL((*arg)[1]) && (*arg)[1] != ']')
 	    {
-		semsg(_(e_white_space_required_after_str), ",");
+		semsg(_(e_white_space_required_after_str_str), ",", *arg);
 		goto failret;
 	    }
 	    *arg = skipwhite(*arg + 1);
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -126,7 +126,7 @@ one_function_arg(
 	    ++p;
 	    if (!skip && !VIM_ISWHITE(*p))
 	    {
-		semsg(_(e_white_space_required_after_str), ":");
+		semsg(_(e_white_space_required_after_str_str), ":", p - 1);
 		return arg;
 	    }
 	    type = skipwhite(p);
@@ -297,7 +297,7 @@ get_function_args(
 		if (!skip && in_vim9script()
 				      && !IS_WHITE_OR_NUL(*p) && *p != endchar)
 		{
-		    semsg(_(e_white_space_required_after_str), ",");
+		    semsg(_(e_white_space_required_after_str_str), ",", p - 1);
 		    goto err_ret;
 		}
 	    }
@@ -487,7 +487,7 @@ skip_arrow(
 	    if (white_error != NULL && !VIM_ISWHITE(s[1]))
 	    {
 		*white_error = TRUE;
-		semsg(_(e_white_space_required_after_str), ":");
+		semsg(_(e_white_space_required_after_str_str), ":", s);
 		return NULL;
 	    }
 	    s = skipwhite(s + 1);
@@ -884,7 +884,7 @@ get_func_tv(
 	    break;
 	if (vim9script && !IS_WHITE_OR_NUL(argp[1]))
 	{
-	    semsg(_(e_white_space_required_after_str), ",");
+	    semsg(_(e_white_space_required_after_str_str), ",", argp);
 	    ret = FAIL;
 	    break;
 	}
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2480,
+/**/
     2479,
 /**/
     2478,
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2807,7 +2807,7 @@ compile_arguments(char_u **arg, cctx_T *
 	{
 	    ++p;
 	    if (*p != NUL && !VIM_ISWHITE(*p))
-		semsg(_(e_white_space_required_after_str), ",");
+		semsg(_(e_white_space_required_after_str_str), ",", p - 1);
 	}
 	else
 	    must_end = TRUE;
@@ -3073,7 +3073,7 @@ compile_list(char_u **arg, cctx_T *cctx,
 	    ++p;
 	    if (*p != ']' && !IS_WHITE_OR_NUL(*p))
 	    {
-		semsg(_(e_white_space_required_after_str), ",");
+		semsg(_(e_white_space_required_after_str_str), ",", p - 1);
 		return FAIL;
 	    }
 	}
@@ -3242,7 +3242,7 @@ compile_dict(char_u **arg, cctx_T *cctx,
 	whitep = *arg + 1;
 	if (!IS_WHITE_OR_NUL(*whitep))
 	{
-	    semsg(_(e_white_space_required_after_str), ":");
+	    semsg(_(e_white_space_required_after_str_str), ":", *arg);
 	    return FAIL;
 	}
 
@@ -3279,10 +3279,10 @@ compile_dict(char_u **arg, cctx_T *cctx,
 	whitep = *arg + 1;
 	if (!IS_WHITE_OR_NUL(*whitep))
 	{
-	    semsg(_(e_white_space_required_after_str), ",");
+	    semsg(_(e_white_space_required_after_str_str), ",", *arg);
 	    return FAIL;
 	}
-	*arg = skipwhite(*arg + 1);
+	*arg = skipwhite(whitep);
     }
 
     *arg = *arg + 1;
@@ -5711,7 +5711,7 @@ compile_lhs(
 	    // parse optional type: "let var: type = expr"
 	    if (!VIM_ISWHITE(var_end[1]))
 	    {
-		semsg(_(e_white_space_required_after_str), ":");
+		semsg(_(e_white_space_required_after_str_str), ":", var_end);
 		return FAIL;
 	    }
 	    p = skipwhite(var_end + 1);
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -629,7 +629,7 @@ vim9_declare_scriptvar(exarg_T *eap, cha
     }
     if (!VIM_ISWHITE(p[1]))
     {
-	semsg(_(e_white_space_required_after_str), ":");
+	semsg(_(e_white_space_required_after_str_str), ":", p);
 	return arg + STRLEN(arg);
     }
     name = vim_strnsave(arg, p - arg);
--- a/src/vim9type.c
+++ b/src/vim9type.c
@@ -788,7 +788,8 @@ parse_type(char_u **arg, garray_T *type_
 			    if (!VIM_ISWHITE(*p))
 			    {
 				if (give_error)
-				    semsg(_(e_white_space_required_after_str), ",");
+				    semsg(_(e_white_space_required_after_str_str),
+								   ",", p - 1);
 				return NULL;
 			    }
 			}
@@ -815,7 +816,8 @@ parse_type(char_u **arg, garray_T *type_
 		    // parse return type
 		    ++*arg;
 		    if (!VIM_ISWHITE(**arg) && give_error)
-			semsg(_(e_white_space_required_after_str), ":");
+			semsg(_(e_white_space_required_after_str_str),
+								":", *arg - 1);
 		    *arg = skipwhite(*arg);
 		    ret_type = parse_type(arg, type_gap, give_error);
 		    if (ret_type == NULL)