diff --git a/7.1.293 b/7.1.293 new file mode 100644 index 0000000..df4499c --- /dev/null +++ b/7.1.293 @@ -0,0 +1,118 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.293 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.293 +Problem: Spell checking considers super- and subscript characters as word + characters. +Solution: Recognize the Unicode super and subscript characters. +Files: src/spell.c + + +*** ../vim-7.1.292/src/spell.c Tue Apr 1 17:13:54 2008 +--- src/spell.c Wed Apr 9 15:47:06 2008 +*************** +*** 753,758 **** +--- 753,759 ---- + static int spell_iswordp __ARGS((char_u *p, buf_T *buf)); + static int spell_iswordp_nmw __ARGS((char_u *p)); + #ifdef FEAT_MBYTE ++ static int spell_mb_isword_class __ARGS((int cl)); + static int spell_iswordp_w __ARGS((int *p, buf_T *buf)); + #endif + static int write_spell_prefcond __ARGS((FILE *fd, garray_T *gap)); +*************** +*** 9789,9795 **** + + c = mb_ptr2char(s); + if (c > 255) +! return mb_get_class(s) >= 2; + return spelltab.st_isw[c]; + } + #endif +--- 9790,9796 ---- + + c = mb_ptr2char(s); + if (c > 255) +! return spell_mb_isword_class(mb_get_class(s)); + return spelltab.st_isw[c]; + } + #endif +*************** +*** 9812,9818 **** + { + c = mb_ptr2char(p); + if (c > 255) +! return mb_get_class(p) >= 2; + return spelltab.st_isw[c]; + } + #endif +--- 9813,9819 ---- + { + c = mb_ptr2char(p); + if (c > 255) +! return spell_mb_isword_class(mb_get_class(p)); + return spelltab.st_isw[c]; + } + #endif +*************** +*** 9821,9826 **** +--- 9822,9839 ---- + + #ifdef FEAT_MBYTE + /* ++ * Return TRUE if word class indicates a word character. ++ * Only for characters above 255. ++ * Unicode subscript and superscript are not considered word characters. ++ */ ++ static int ++ spell_mb_isword_class(cl) ++ int cl; ++ { ++ return cl >= 2 && cl != 0x2070 && cl != 0x2080; ++ } ++ ++ /* + * Return TRUE if "p" points to a word character. + * Wide version of spell_iswordp(). + */ +*************** +*** 9841,9847 **** + if (*s > 255) + { + if (enc_utf8) +! return utf_class(*s) >= 2; + if (enc_dbcs) + return dbcs_class((unsigned)*s >> 8, *s & 0xff) >= 2; + return 0; +--- 9854,9860 ---- + if (*s > 255) + { + if (enc_utf8) +! return spell_mb_isword_class(utf_class(*s)); + if (enc_dbcs) + return dbcs_class((unsigned)*s >> 8, *s & 0xff) >= 2; + return 0; +*** ../vim-7.1.292/src/version.c Wed Apr 9 12:14:44 2008 +--- src/version.c Wed Apr 9 15:45:10 2008 +*************** +*** 668,669 **** +--- 673,676 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 293, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +268. You get up in the morning and go online before getting your coffee. + + /// 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 /// diff --git a/README.patches b/README.patches index 5ffd87a..98a14bc 100644 --- a/README.patches +++ b/README.patches @@ -323,3 +323,5 @@ Individual patches for Vim 7.1: 1979 7.1.289 when EXITFREE is defined and 'acd' is set freed memory is used 2146 7.1.290 reading unwritten bytes when spell checking with large indent 1940 7.1.291 compiler warning for int-long conversion + 6698 7.1.292 when using a pattern with "\@<=" the submatches can be wrong + 3087 7.1.293 spell checking considers super/subscript chars as word chars