summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2011-09-21 19:10:46 +0200
committerBram Moolenaar <Bram@vim.org>2011-09-21 19:10:46 +0200
commita6f4d61af772140159a828911f574dd28b1c4564 (patch)
tree0a1e0e506bb338527ad04abe0e9c5017217ebd71
parent62951b1e0d5b3a74c7de6991fc57f67b1d97abbf (diff)
downloadvim-git-a6f4d61af772140159a828911f574dd28b1c4564.tar.gz
updated for version 7.3.320v7.3.320
Problem: When a 0xa0 character is in a sourced file the error message for unrecognized command does not show the problem. Solution: Display 0xa0 as <a0>.
-rw-r--r--src/ex_docmd.c45
-rw-r--r--src/version.c2
2 files changed, 41 insertions, 6 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index a6fa374bc..9b5a5b164 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -61,6 +61,7 @@ static char_u *do_one_cmd __ARGS((char_u **, int, struct condstack *, char_u *(*
static char_u *do_one_cmd __ARGS((char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie));
static int if_level = 0; /* depth in :if */
#endif
+static void append_command __ARGS((char_u *cmd));
static char_u *find_command __ARGS((exarg_T *eap, int *full));
static void ex_abbreviate __ARGS((exarg_T *eap));
@@ -2136,10 +2137,7 @@ do_one_cmd(cmdlinep, sourcing,
{
STRCPY(IObuff, _("E492: Not an editor command"));
if (!sourcing)
- {
- STRCAT(IObuff, ": ");
- STRNCAT(IObuff, *cmdlinep, 40);
- }
+ append_command(*cmdlinep);
errormsg = IObuff;
}
goto doend;
@@ -2708,8 +2706,7 @@ doend:
STRCPY(IObuff, errormsg);
errormsg = IObuff;
}
- STRCAT(errormsg, ": ");
- STRNCAT(errormsg, *cmdlinep, IOSIZE - STRLEN(IObuff) - 1);
+ append_command(*cmdlinep);
}
emsg(errormsg);
}
@@ -2797,6 +2794,42 @@ checkforcmd(pp, cmd, len)
}
/*
+ * Append "cmd" to the error message in IObuff.
+ * Takes care of limiting the length and handling 0xa0, which would be
+ * invisible otherwise.
+ */
+ static void
+append_command(cmd)
+ char_u *cmd;
+{
+ char_u *s = cmd;
+ char_u *d;
+
+ STRCAT(IObuff, ": ");
+ d = IObuff + STRLEN(IObuff);
+ while (*s != NUL && d - IObuff < IOSIZE - 7)
+ {
+ if (
+#ifdef FEAT_MBYTE
+ enc_utf8 ? (s[0] == 0xc2 && s[1] == 0xa0) :
+#endif
+ *s == 0xa0)
+ {
+ s +=
+#ifdef FEAT_MBYTE
+ enc_utf8 ? 2 :
+#endif
+ 1;
+ STRCPY(d, "<a0>");
+ d += 4;
+ }
+ else
+ MB_COPY_CHAR(s, d);
+ }
+ *d = NUL;
+}
+
+/*
* Find an Ex command by its name, either built-in or user.
* Start of the name can be found at eap->cmd.
* Returns pointer to char after the command name.
diff --git a/src/version.c b/src/version.c
index 24d98bb10..5bae7d85b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -710,6 +710,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 320,
+/**/
319,
/**/
318,