From 6308873f0bd0653a0f14a78fba84cd08487c8a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E9=9B=85=20=C2=B7=20Misaki=20Masa?= Date: Sat, 7 Dec 2024 22:53:22 +0800 Subject: [PATCH] fix: `backspace --under` didn't map UTF-8 character code points to byte indices (#2010) --- yazi-core/src/input/commands/backspace.rs | 2 +- yazi-core/src/input/commands/complete.rs | 2 +- yazi-core/src/input/snap.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/yazi-core/src/input/commands/backspace.rs b/yazi-core/src/input/commands/backspace.rs index 89a69d8f..cc7d9162 100644 --- a/yazi-core/src/input/commands/backspace.rs +++ b/yazi-core/src/input/commands/backspace.rs @@ -20,7 +20,7 @@ impl Input { let snap = self.snaps.current_mut(); if !opt.under && snap.cursor < 1 { return; - } else if opt.under && snap.cursor >= snap.value.len() { + } else if opt.under && snap.cursor >= snap.count() { return; } diff --git a/yazi-core/src/input/commands/complete.rs b/yazi-core/src/input/commands/complete.rs index 0cf3a9cd..872867af 100644 --- a/yazi-core/src/input/commands/complete.rs +++ b/yazi-core/src/input/commands/complete.rs @@ -44,7 +44,7 @@ impl Input { return; } - let delta = new.chars().count() as isize - snap.value.chars().count() as isize; + let delta = new.chars().count() as isize - snap.count() as isize; snap.value = new; self.move_(delta); diff --git a/yazi-core/src/input/snap.rs b/yazi-core/src/input/snap.rs index e6f98232..e2931220 100644 --- a/yazi-core/src/input/snap.rs +++ b/yazi-core/src/input/snap.rs @@ -32,7 +32,7 @@ impl InputSnap { #[inline] pub(super) fn reset(&mut self, limit: usize) { - self.cursor = self.cursor.min(self.value.chars().count().saturating_sub(self.mode.delta())); + self.cursor = self.cursor.min(self.count().saturating_sub(self.mode.delta())); self.offset = self.offset.min(self.cursor.saturating_sub(Self::find_window(&self.rev(), 0, limit).end)); }