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)); }