summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2006-10-09 20:11:17 +0000
committerBram Moolenaar <Bram@vim.org>2006-10-09 20:11:17 +0000
commit9c69732279b0d8a61cdbc564c103622a0891edeb (patch)
treec377b1d2866d2e85165fa647b942fcd5df23fafb
parent8838aeeea98d340a166e30dc2230a513816c0189 (diff)
downloadvim-git-9c69732279b0d8a61cdbc564c103622a0891edeb.tar.gz
updated for version 7.0-122v7.0.122
-rw-r--r--src/screen.c35
-rw-r--r--src/version.c2
2 files changed, 31 insertions, 6 deletions
diff --git a/src/screen.c b/src/screen.c
index 8c5e20ce2..b861d7805 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -5079,15 +5079,38 @@ screen_line(row, coloff, endcol, clear_width
* character too. If we didn't skip any blanks above, then we
* only redraw if the character wasn't already redrawn anyway.
*/
- if (gui.in_use && (col > startCol || !redraw_this)
-# ifdef FEAT_MBYTE
- && enc_dbcs == 0
-# endif
- )
+ if (gui.in_use && (col > startCol || !redraw_this))
{
hl = ScreenAttrs[off_to];
if (hl > HL_ALL || (hl & HL_BOLD))
- screen_char(off_to - 1, row, col + coloff - 1);
+ {
+ int prev_cells = 1;
+# ifdef FEAT_MBYTE
+ if (enc_utf8)
+ /* for utf-8, ScreenLines[char_offset + 1] == 0 means
+ * that its width is 2. */
+ prev_cells = ScreenLines[off_to - 1] == 0 ? 2 : 1;
+ else if (enc_dbcs != 0)
+ {
+ /* find previous character by counting from first
+ * column and get its width. */
+ unsigned off = LineOffset[row];
+
+ while (off < off_to)
+ {
+ prev_cells = (*mb_off2cells)(off);
+ off += prev_cells;
+ }
+ }
+
+ if (enc_dbcs != 0 && prev_cells > 1)
+ screen_char_2(off_to - prev_cells, row,
+ col + coloff - prev_cells);
+ else
+# endif
+ screen_char(off_to - prev_cells, row,
+ col + coloff - prev_cells);
+ }
}
#endif
screen_fill(row, row + 1, col + coloff, clear_width + coloff,
diff --git a/src/version.c b/src/version.c
index d115800fa..afb16d2e4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 122,
+/**/
121,
/**/
120,