simplify offset logic, make it deterministic

This commit is contained in:
Xerxes-2 2024-06-28 11:49:06 +10:00
parent 7fa9c4da72
commit 499f5f4c73
No known key found for this signature in database
GPG key ID: A6C508165D76B601

View file

@ -39,15 +39,9 @@ impl Input {
)); ));
let (limit, snap) = (self.limit(), self.snap_mut()); let (limit, snap) = (self.limit(), self.snap_mut());
let half_limit = limit / 2; let offset = snap.cursor.saturating_sub(limit / 2).min(snap.len().saturating_sub(limit - 1));
let max_offset = snap.cursor.saturating_sub(half_limit); if snap.offset != offset {
let min_offset = max_offset.min(snap.len().saturating_sub(limit - 1)); snap.offset = offset;
if snap.offset > max_offset {
snap.offset = max_offset;
} else if snap.offset < min_offset {
snap.offset = min_offset;
} else if snap.value.is_empty() {
snap.offset = 0;
} else { } else {
let delta = snap.mode.delta(); let delta = snap.mode.delta();
let s = snap.slice(snap.offset..snap.cursor + delta); let s = snap.slice(snap.offset..snap.cursor + delta);