From 4aacd436c3311f304d20f77efa32ebba1a77c94d 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:07:26 +0200 Subject: [PATCH] Fix `NextWord` action in `Editor` when line ends with word boundaries --- src/edit/editor.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/edit/editor.rs b/src/edit/editor.rs index f19f41b..9e36d30 100644 --- a/src/edit/editor.rs +++ b/src/edit/editor.rs @@ -613,14 +613,14 @@ impl Edit for Editor { Action::NextWord => { let line: &mut BufferLine = &mut self.buffer.lines[self.cursor.line]; if self.cursor.index < line.text().len() { - for (i, word) in line.text().unicode_word_indices() { - let i = i + word.len(); - if i > self.cursor.index { - self.cursor.index = i; - self.buffer.set_redraw(true); - break; - } - } + self.cursor.index = line + .text() + .unicode_word_indices() + .map(|(i, word)| i + word.len()) + .find(|&i| i > self.cursor.index) + .unwrap_or(line.text().len()); + + self.buffer.set_redraw(true); } else if self.cursor.line + 1 < self.buffer.lines.len() { self.cursor.line += 1; self.cursor.index = 0;