diff --git a/src/core_editor/editor.rs b/src/core_editor/editor.rs index b837d1b..3cabe1a 100644 --- a/src/core_editor/editor.rs +++ b/src/core_editor/editor.rs @@ -493,6 +493,7 @@ mod test { #[case("abc def ghi", 11, "abc def ")] #[case("abc def-ghi", 11, "abc ")] #[case("abc def.ghi", 11, "abc ")] + #[case("abc def gh ", 11, "abc def ")] fn test_cut_big_word_left( #[case] input: &str, #[case] position: usize, diff --git a/src/core_editor/line_buffer.rs b/src/core_editor/line_buffer.rs index c823015..01759ba 100644 --- a/src/core_editor/line_buffer.rs +++ b/src/core_editor/line_buffer.rs @@ -276,7 +276,13 @@ impl LineBuffer { match (last_word_index, is_whitespace_str(word)) { (None, true) => None, (None, false) => Some(i), - (Some(_), true) => None, + (Some(v), true) => { + if is_whitespace_str(&self.lines[i..self.insertion_point]) { + Some(v) + } else { + None + } + } (Some(v), false) => Some(v), } }) @@ -1467,6 +1473,7 @@ mod test { #[case("abc def ghi", 10, 8)] #[case("abc def-ghi", 10, 4)] #[case("abc def.ghi", 10, 4)] + #[case("abc def i", 10, 4)] fn test_big_word_left_index( #[case] input: &str, #[case] position: usize,