From 2a16cc5155fc11bfa965c632c6c1d3a257b3f59a Mon Sep 17 00:00:00 2001 From: Kirill Chibisov Date: Sun, 15 Nov 2020 03:28:03 +0300 Subject: Fix zerowidth characters in the last column This commit fixes the issue that when attempting to write zerowidth characters into the last column, it is written in the second to last column instead. Fixes #4227. Co-authored-by: Christian Duerr --- alacritty_terminal/src/term/mod.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'alacritty_terminal') diff --git a/alacritty_terminal/src/term/mod.rs b/alacritty_terminal/src/term/mod.rs index 6e20f0e1..cdcfad9d 100644 --- a/alacritty_terminal/src/term/mod.rs +++ b/alacritty_terminal/src/term/mod.rs @@ -1480,11 +1480,18 @@ impl Handler for Term { // Handle zero-width characters. if width == 0 { - let mut col = self.grid.cursor.point.col.0.saturating_sub(1); + // Get previous column. + let mut col = self.grid.cursor.point.col.0; + if !self.grid.cursor.input_needs_wrap { + col = col.saturating_sub(1); + } + + // Put zerowidth characters over first fullwidth character cell. let line = self.grid.cursor.point.line; if self.grid[line][Column(col)].flags.contains(Flags::WIDE_CHAR_SPACER) { col = col.saturating_sub(1); } + self.grid[line][Column(col)].push_zerowidth(c); return; } -- cgit