Fix panic on ctrl-w empty document

pull/186/head
Ivan Tham 4 years ago committed by Blaž Hrastnik
parent 83723957fe
commit 5e2ba28e0e

@ -25,7 +25,7 @@ pub fn nth_prev_word_boundary(slice: RopeSlice, mut char_idx: usize, count: usiz
} }
} }
if with_end { if with_end || char_idx == 0 {
char_idx char_idx
} else { } else {
char_idx + 1 char_idx + 1
@ -37,7 +37,7 @@ fn different_prev_word_boundary() {
use ropey::Rope; use ropey::Rope;
let t = |x, y| { let t = |x, y| {
let text = Rope::from(x); let text = Rope::from(x);
let out = nth_prev_word_boundary(text.slice(..), text.len_chars() - 1, 1); let out = nth_prev_word_boundary(text.slice(..), text.len_chars().saturating_sub(1), 1);
assert_eq!(text.slice(..out), y, r#"from "{}""#, x); assert_eq!(text.slice(..out), y, r#"from "{}""#, x);
}; };
t("abcd\nefg\nwrs", "abcd\nefg\n"); t("abcd\nefg\nwrs", "abcd\nefg\n");
@ -47,6 +47,7 @@ fn different_prev_word_boundary() {
t("hello, world", "hello, "); t("hello, world", "hello, ");
t("hello, ", "hello"); t("hello, ", "hello");
t("hello", ""); t("hello", "");
t(",", "");
t("こんにちは、世界!", "こんにちは、世界"); t("こんにちは、世界!", "こんにちは、世界");
t("こんにちは、世界", "こんにちは、"); t("こんにちは、世界", "こんにちは、");
t("こんにちは、", "こんにちは"); t("こんにちは、", "こんにちは");
@ -56,10 +57,12 @@ fn different_prev_word_boundary() {
t("お前はもう死んでいる", ""); t("お前はもう死んでいる", "");
t("その300円です", ""); // TODO: should stop at 300 t("その300円です", ""); // TODO: should stop at 300
t("唱k", ""); // TODO: should stop at 唱 t("唱k", ""); // TODO: should stop at 唱
t("", "");
t("1 + 1 = 2", "1 + 1 = "); t("1 + 1 = 2", "1 + 1 = ");
t("1 + 1 =", "1 + 1 "); t("1 + 1 =", "1 + 1 ");
t("1 + 1", "1 + "); t("1 + 1", "1 + ");
t("1 + ", "1 "); t("1 + ", "1 ");
t("1 ", ""); t("1 ", "");
t("1+1=2", "1+1="); t("1+1=2", "1+1=");
t("", "");
} }

Loading…
Cancel
Save