aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2021-12-24 08:06:27 +0800
committerzeertzjq <zeertzjq@outlook.com>2021-12-24 08:06:27 +0800
commit28dadd5a54a67b467c08614670c65b0b5b23d247 (patch)
treed4f004b45abdb5347b86b11866d4c6e05dc8c6b1
parentbc75544facbf200fc7a7d519c0963ec1becfa508 (diff)
downloadrneovim-28dadd5a54a67b467c08614670c65b0b5b23d247.tar.gz
rneovim-28dadd5a54a67b467c08614670c65b0b5b23d247.tar.bz2
rneovim-28dadd5a54a67b467c08614670c65b0b5b23d247.zip
fix(screen): truncate when overwriting right half of a double-width char
Unlike the code above, this truncates the character in the same grid. This is mainly for the pum scrollbar in the next commit.
-rw-r--r--src/nvim/screen.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index df911a1228..e62e3ca7bc 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -5965,6 +5965,13 @@ void grid_puts_len(ScreenGrid *grid, char_u *text, int textlen, int row, int col
clear_next_cell = true;
}
+ // When at the start of the text and overwriting the right half of a
+ // two-cell character in the same grid, truncate that into a '>'.
+ if (ptr == text && col > 0 && grid->chars[off][0] == 0) {
+ grid->chars[off - 1][0] = '>';
+ grid->chars[off - 1][1] = 0;
+ }
+
schar_copy(grid->chars[off], buf);
grid->attrs[off] = attr;
if (mbyte_cells == 2) {