Skip to content

Commit 64c28d5

Browse files
committed
fix: πŸ› remove double-width characters correctly
Signed-off-by: εˆ˜ζ΄‹ <liu.yang@xsky.com> Signed-off-by: bestgopher <84328409@qq.com>
1 parent f37cb6e commit 64c28d5

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

β€Žsrc/term.rsβ€Ž

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,8 +336,13 @@ impl Term {
336336
loop {
337337
match slf.read_key()? {
338338
Key::Backspace => {
339-
if prefix_len < chars.len() && chars.pop().is_some() {
340-
slf.clear_chars(1)?;
339+
if prefix_len < chars.len() {
340+
if let Some(ch) = chars.pop() {
341+
#[cfg(feature = "ansi-parsing")]
342+
slf.clear_chars(crate::utils::char_width(ch))?;
343+
#[cfg(not(feature = "ansi-parsing"))]
344+
slf.clear_chars(1)?;
345+
}
341346
}
342347
slf.flush()?;
343348
}

β€Žsrc/utils.rsβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -719,7 +719,7 @@ fn str_width(s: &str) -> usize {
719719
}
720720

721721
#[cfg(feature = "ansi-parsing")]
722-
fn char_width(c: char) -> usize {
722+
pub(crate) fn char_width(c: char) -> usize {
723723
#[cfg(feature = "unicode-width")]
724724
{
725725
use unicode_width::UnicodeWidthChar;

0 commit comments

Comments
Β (0)