From 9fe790b99532202022fd2d0ceb55f47adda8f4bd Mon Sep 17 00:00:00 2001 From: vimboss Date: Wed, 2 Jan 2008 16:49:36 +0000 Subject: updated for version 7.1-185 --- src/edit.c | 19 +++++++++++++++++++ src/misc1.c | 20 ++++++++++++-------- src/proto/edit.pro | 1 + src/version.c | 2 ++ 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/edit.c b/src/edit.c index d906d788..f528b964 100644 --- a/src/edit.c +++ b/src/edit.c @@ -6939,6 +6939,25 @@ replace_push(c) ++replace_stack_nr; } +#if defined(FEAT_MBYTE) || defined(PROTO) +/* + * Push a character onto the replace stack. Handles a multi-byte character in + * reverse byte order, so that the first byte is popped off first. + * Return the number of bytes done (includes composing characters). + */ + int +replace_push_mb(p) + char_u *p; +{ + int l = (*mb_ptr2len)(p); + int j; + + for (j = l - 1; j >= 0; --j) + replace_push(p[j]); + return l; +} +#endif + #if 0 /* * call replace_push(c) with replace_offset set to the first NUL. diff --git a/src/misc1.c b/src/misc1.c index b67405fb..99c90f76 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -591,7 +591,14 @@ open_line(dir, flags, old_indent) replace_push(NUL); p = saved_line + curwin->w_cursor.col; while (*p != NUL) - replace_push(*p++); + { +#ifdef FEAT_MBYTE + if (has_mbyte) + p += replace_push_mb(p); + else +#endif + replace_push(*p++); + } saved_line[curwin->w_cursor.col] = NUL; } #endif @@ -1914,7 +1921,6 @@ ins_char_bytes(buf, charlen) int charlen; { int c = buf[0]; - int l, j; #endif int newlen; /* nr of bytes inserted */ int oldlen; /* nr of bytes deleted (0 when not replacing) */ @@ -2016,13 +2022,11 @@ ins_char_bytes(buf, charlen) for (i = 0; i < oldlen; ++i) { #ifdef FEAT_MBYTE - l = (*mb_ptr2len)(oldp + col + i) - 1; - for (j = l; j >= 0; --j) - replace_push(oldp[col + i + j]); - i += l; -#else - replace_push(oldp[col + i]); + if (has_mbyte) + i += replace_push_mb(oldp + col + i) - 1; + else #endif + replace_push(oldp[col + i]); } } diff --git a/src/proto/edit.pro b/src/proto/edit.pro index a967037c..710a76e6 100644 --- a/src/proto/edit.pro +++ b/src/proto/edit.pro @@ -32,6 +32,7 @@ int stuff_inserted __ARGS((int c, long count, int no_esc)); char_u *get_last_insert __ARGS((void)); char_u *get_last_insert_save __ARGS((void)); void replace_push __ARGS((int c)); +int replace_push_mb __ARGS((char_u *p)); void fixthisline __ARGS((int (*get_the_indent)(void))); void fix_indent __ARGS((void)); int in_cinkeys __ARGS((int keytyped, int when, int line_is_empty)); diff --git a/src/version.c b/src/version.c index d4c093a8..cb266270 100644 --- a/src/version.c +++ b/src/version.c @@ -666,6 +666,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 185, /**/ 184, /**/ -- cgit v1.2.1