From 5fc80099e7616e9a6de128a1e72e6015ff4e80fc Mon Sep 17 00:00:00 2001 From: Martin Ball <98639962+benandez@users.noreply.github.com> Date: Sun, 18 Oct 2026 14:56:04 +0100 Subject: [PATCH] Proofing: -ically adverbs such as "specifically" are no longer flagged (storytold/wordcraft#1694) (storytold/wordcraft#1854) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * storytold/wordcraft#1694: -ically adverbs are no longer flagged as misspelled English spelling accepts "-ally" adverbs built on an "-ic" adjective in the word list (specific → specifically, scientific → scientifically), as Word does. Co-Authored-By: Claude Opus 5.5 (1M context) * storytold/wordcraft#1694: only -ic adjectives take -ally Review (FredApps): the "-ally" → stem rule applied to every known word, so "desktopally" was accepted. The rule is now "-ically" → "-ic" (specifically → specific); other words don't take "-ally". Test: non_ic_words_do_not_take_ally (desktop, house, final, green). Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01P8veLveuUsJJm6UEcQPEuW --------- Co-authored-by: Claude Opus 5.5 (1M context) Co-authored-by: Brandon Thomas --- crates/proof/src/lib.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/crates/proof/src/lib.rs b/crates/proof/src/lib.rs index 9d345ab6..ea42c333 100644 --- a/crates/proof/src/lib.rs +++ b/crates/proof/src/lib.rs @@ -315,7 +315,7 @@ fn known_core(w: &str) -> bool { return true; } // Inflections. - let stems: [(&str, &[&str]); 12] = [ + let stems: [(&str, &[&str]); 13] = [ ("'s", &[""]), ("s", &[""]), ("es", &["", "e"]), @@ -325,6 +325,8 @@ fn known_core(w: &str) -> bool { ("ing", &["", "e"]), ("ly", &["", "le"]), ("ily", &["y"]), + // specifically → specific (#1694): only -ic adjectives, so "desktopally" stays wrong. + ("ically", &["ic"]), ("er", &["", "e"]), ("est", &["", "e"]), ("ness", &[""]), @@ -924,6 +926,27 @@ mod tests { assert!(suggest("Wrold", 3).contains(&"World".to_string())); } + /// #1694: `-ically` adverbs come from their `-ic` adjective (specific → specifically). + #[test] + fn ically_adverbs_are_known() { + for w in ["specifically", "scientifically", "automatically", "dramatically", "Specifically"] { + assert!(is_correct(w), "{w}"); + } + for w in ["specificaly", "specifcally", "zzzically"] { + assert!(!is_correct(w), "{w}"); + } + } + + /// #1694 review: only `-ic` adjectives take `-ally`; other known words (dictionary or + /// supplement) don't. + #[test] + fn non_ic_words_do_not_take_ally() { + for (base, wrong) in [("desktop", "desktopally"), ("house", "houseally"), ("final", "finalally"), ("green", "greenally")] { + assert!(is_correct(base), "{base}"); + assert!(!is_correct(wrong), "{wrong}"); + } + } + /// #520: common modern words (and their inflections) are known; misspellings still flagged. #[test] fn common_modern_words() {