diff --git a/7.0.207 b/7.0.207 new file mode 100644 index 0000000..b91d21c --- /dev/null +++ b/7.0.207 @@ -0,0 +1,101 @@ +To: vim-dev@vim.org +Subject: patch 7.0.207 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.207 +Problem: After patch 2.0.203 CSI and K_SPECIAL characters are escaped when + recorded and then again when the register is executed. +Solution: Remove escaping before putting the recorded characters in a + register. (Yukihiro Nakadaira) +Files: src/getchar.c, src/ops.c, src/proto/getchar.pro + + +*** ../vim-7.0.206/src/getchar.c Tue Feb 27 23:06:44 2007 +--- src/getchar.c Sun Mar 4 21:19:50 2007 +*************** +*** 4438,4443 **** +--- 4442,4476 ---- + *d = NUL; + } + return res; ++ } ++ ++ /* ++ * Remove escaping from CSI and K_SPECIAL characters. Reverse of ++ * vim_strsave_escape_csi(). Works in-place. ++ */ ++ void ++ vim_unescape_csi(p) ++ char_u *p; ++ { ++ char_u *s = p, *d = p; ++ ++ while (*s != NUL) ++ { ++ if (s[0] == K_SPECIAL && s[1] == KS_SPECIAL && s[2] == KE_FILLER) ++ { ++ *d++ = K_SPECIAL; ++ s += 3; ++ } ++ else if ((s[0] == K_SPECIAL || s[0] == CSI) ++ && s[1] == KS_EXTRA && s[2] == (int)KE_CSI) ++ { ++ *d++ = CSI; ++ s += 3; ++ } ++ else ++ *d++ = *s++; ++ } ++ *d = NUL; + } + + /* +*** ../vim-7.0.206/src/ops.c Tue Feb 27 17:25:28 2007 +--- src/ops.c Sun Mar 4 21:23:47 2007 +*************** +*** 1042,1047 **** +--- 1042,1050 ---- + retval = FAIL; + else + { ++ /* Remove escaping for CSI and K_SPECIAL in multi-byte chars. */ ++ vim_unescape_csi(p); ++ + /* + * We don't want to change the default register here, so save and + * restore the current register name. +*** ../vim-7.0.206/src/proto/getchar.pro Sun Apr 30 20:38:15 2006 +--- src/proto/getchar.pro Sun Mar 4 21:19:41 2007 +*************** +*** 56,61 **** +--- 56,62 ---- + extern int ExpandMappings __ARGS((regmatch_T *regmatch, int *num_file, char_u ***file)); + extern int check_abbr __ARGS((int c, char_u *ptr, int col, int mincol)); + extern char_u *vim_strsave_escape_csi __ARGS((char_u *p)); ++ extern void vim_unescape_csi __ARGS((char_u *p)); + extern int makemap __ARGS((FILE *fd, buf_T *buf)); + extern int put_escstr __ARGS((FILE *fd, char_u *strstart, int what)); + extern void check_map_keycodes __ARGS((void)); +*** ../vim-7.0.206/src/version.c Fri Mar 2 20:00:06 2007 +--- src/version.c Sun Mar 4 21:24:26 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 207, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +251. You've never seen your closest friends who usually live WAY too far away. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///