aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/app/actions.rs36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/app/actions.rs b/src/app/actions.rs
index ca6f6704..d5d13d5a 100644
--- a/src/app/actions.rs
+++ b/src/app/actions.rs
@@ -1485,7 +1485,21 @@ fn is_word_separator(ch: char) -> bool {
ch.is_whitespace()
|| matches!(
ch,
- '|' | '(' | ')' | '[' | ']' | '{' | '}' | ',' | ';' | '!'
+ '|' | '('
+ | ')'
+ | '['
+ | ']'
+ | '{'
+ | '}'
+ | ','
+ | ';'
+ | '!'
+ | '('
+ | ')'
+ | ':'
+ | '、'
+ | '。'
+ | ','
)
}
@@ -2397,6 +2411,11 @@ mod tests {
"/Users/me/Library/Application Support/app/config.json",
),
("echo 你好-world done", "好", "你好-world"),
+ (
+ "註解已補(slice 4 5b5fcc0715):整合原本",
+ "5b5fcc0715",
+ "5b5fcc0715",
+ ),
("先跑 cargo test", "cargo", "cargo"),
(
"export PATH=$HOME/.cargo/bin:$PATH",
@@ -2452,6 +2471,21 @@ mod tests {
}
#[test]
+ fn double_click_word_bounds_treat_cjk_punctuation_as_delimiters() {
+ for delimiter in ['(', ')', ':', '、', '。', ','] {
+ let row = format!("left{delimiter}right");
+ assert_selects(&row, "left", "left");
+ assert_selects(&row, "right", "right");
+ assert_selects_nothing(&row, &delimiter.to_string());
+ assert_eq!(
+ selected_word(&row, col_of(&row, &delimiter.to_string()) + 1),
+ None,
+ "second display cell of {delimiter:?} should not select"
+ );
+ }
+ }
+
+ #[test]
fn double_click_word_bounds_ignore_delimiters() {
for (row, click) in [
(