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 => {
let line: &mut BufferLine = &mut self.buffer.lines[self.cursor.line];
if self.cursor.index > 0 {
let mut prev_index = 0;
for (i, _) in line.text().unicode_word_indices() {
if i < self.cursor.index {
prev_index = i;
} else {
break;
}
}
self.cursor.index = line
.text()
.unicode_word_indices()
.rev()
.map(|(i, _)| i)
.find(|&i| i < self.cursor.index)
.unwrap_or(0);
self.cursor.index = prev_index;
self.buffer.set_redraw(true);
} else if self.cursor.line > 0 {
self.cursor.line -= 1;