0
0
mirror of https://github.com/vim/vim.git synced 2025-09-15 23:23:38 -04:00

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 <a0>.
This commit is contained in:
Bram Moolenaar 2011-09-21 19:10:46 +02:00
parent 62951b1e0d
commit a6f4d61af7
2 changed files with 41 additions and 6 deletions

View File

@ -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);
}
@ -2796,6 +2793,42 @@ checkforcmd(pp, cmd, len)
return FALSE;
}
/*
* 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.

View File

@ -709,6 +709,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
320,
/**/
319,
/**/