From cb83458e7d0b84ef37c5beb72dda5046d7d343a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Sat, 16 Sep 2023 16:12:19 +0200 Subject: [PATCH] Rewrite `PreviousWord` logic in `Editor` with iterators --- src/edit/editor.rs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/edit/editor.rs b/src/edit/editor.rs index 9e36d30..31ebf31 100644 --- a/src/edit/editor.rs +++ b/src/edit/editor.rs @@ -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;