# HG changeset patch # User Bram Moolenaar # Date 1316625046 -7200 # Node ID 738ea87c196431c452bd499c5a9849597ac938de # Parent 57585ff9888f7fcff8f7a9c69f7a71a5bcddb0d0 updated for version 7.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 . diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -61,6 +61,7 @@ static char_u *do_one_cmd __ARGS((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, ""); + 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 --- 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,