Patch 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>.
Files:      src/ex_docmd.c


*** ../vim-7.3.319/src/ex_docmd.c       2011-07-20 16:36:35.000000000 +0200
--- src/ex_docmd.c      2011-09-21 19:02:15.000000000 +0200
***************
*** 61,66 ****
--- 61,67 ----
  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,2145 ****
        {
            STRCPY(IObuff, _("E492: Not an editor command"));
            if (!sourcing)
!           {
!               STRCAT(IObuff, ": ");
!               STRNCAT(IObuff, *cmdlinep, 40);
!           }
            errormsg = IObuff;
        }
        goto doend;
--- 2137,2143 ----
        {
            STRCPY(IObuff, _("E492: Not an editor command"));
            if (!sourcing)
!               append_command(*cmdlinep);
            errormsg = IObuff;
        }
        goto doend;
***************
*** 2708,2715 ****
                STRCPY(IObuff, errormsg);
                errormsg = IObuff;
            }
!           STRCAT(errormsg, ": ");
!           STRNCAT(errormsg, *cmdlinep, IOSIZE - STRLEN(IObuff) - 1);
        }
        emsg(errormsg);
      }
--- 2706,2712 ----
                STRCPY(IObuff, errormsg);
                errormsg = IObuff;
            }
!           append_command(*cmdlinep);
        }
        emsg(errormsg);
      }
***************
*** 2797,2802 ****
--- 2794,2835 ----
  }
  
  /*
+  * 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.
*** ../vim-7.3.319/src/version.c        2011-09-21 18:23:02.000000000 +0200
--- src/version.c       2011-09-21 19:04:35.000000000 +0200
***************
*** 711,712 ****
--- 711,714 ----
  {   /* Add new patch number below this line */
+ /**/
+     320,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
28. You have comandeered your teenager's phone line for the net and even his
    friends know not to call on his line anymore.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui