From 0911056d7eb8fe40bd66acab7e0b7cc71acd4f6a Mon Sep 17 00:00:00 2001 From: akbash Date: Thu, 10 Sep 2026 13:20:03 +0300 Subject: fix: stop token selection at CJK punctuation (#3708) refs #3706 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> --- src/app/actions.rs | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src') 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", @@ -2451,6 +2470,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 [ -- cgit v1.2.3