Rewrite PreviousWord logic in Editor with iterators

This commit is contained in:
Héctor Ramón Jiménez 2023-09-16 16:12:19 +02:00
parent 4aacd436c3
commit cb83458e7d
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -592,16 +592,14 @@ impl Edit for Editor {
Action::PreviousWord => { Action::PreviousWord => {
let line: &mut BufferLine = &mut self.buffer.lines[self.cursor.line]; let line: &mut BufferLine = &mut self.buffer.lines[self.cursor.line];
if self.cursor.index > 0 { if self.cursor.index > 0 {
let mut prev_index = 0; self.cursor.index = line
for (i, _) in line.text().unicode_word_indices() { .text()
if i < self.cursor.index { .unicode_word_indices()
prev_index = i; .rev()
} else { .map(|(i, _)| i)
break; .find(|&i| i < self.cursor.index)
} .unwrap_or(0);
}
self.cursor.index = prev_index;
self.buffer.set_redraw(true); self.buffer.set_redraw(true);
} else if self.cursor.line > 0 { } else if self.cursor.line > 0 {
self.cursor.line -= 1; self.cursor.line -= 1;