19dddf30c7
Spelling is now checked live as you type, fully offline, using the pure-Rust `spellbook` crate to read Hunspell .aff/.dic dictionaries (no C libhunspell — the binary stays self-contained; ldd unchanged). - Canadian (en-CA, default) and British (en-GB) English dictionaries are compiled in; more languages are auto-discovered from system Hunspell folders and ~/.config/md-manuscript/dictionaries/. A "Spelling" row in the top bar toggles live checking and picks the dictionary. - Misspellings are underlined in red; right-clicking a word opens a menu of suggested corrections. A results-panel and one-click fixes work too. - Checks run on a background thread, debounced ~400ms after the last edit. Prose is extracted with pulldown-cmark so code spans, code blocks and link targets are skipped; ALL-CAPS initialisms are ignored. - LanguageTool still layers on top: when its results are fresh they own the underlines (spelling + grammar); once you edit, the offline checker resumes. The editor underlines, issues panel and fix-apply logic are now shared between the two sources. Bundled dictionaries are SCOWL-derived under a permissive license (kept in dictionaries/<lang>/license). Adds spell-check unit tests (tokenizer, code-block skipping, offset mapping, en-CA/en-GB spelling); 40 tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N9kRuP7JvXoUGdNNeg5ZSs
27 lines
1.1 KiB
TOML
27 lines
1.1 KiB
TOML
[package]
|
|
name = "md-manuscript"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "Draggable markdown manuscript editor with git sync and ODT export"
|
|
|
|
[dependencies]
|
|
eframe = { version = "0.29", default-features = true }
|
|
egui = "0.29"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
pulldown-cmark = { version = "0.12", default-features = false }
|
|
zip = { version = "2", default-features = false, features = ["deflate"] }
|
|
dirs = "5"
|
|
# Native open/save dialogs via the XDG Desktop Portal (no GTK build dependency).
|
|
rfd = { version = "0.15", default-features = false, features = ["xdg-portal", "async-std"] }
|
|
# Blocking HTTP client for talking to a LanguageTool server. The rustls TLS
|
|
# backend links statically (no new runtime .so deps), so both a plain-HTTP local
|
|
# server and an HTTPS domain work.
|
|
ureq = { version = "2", default-features = false, features = ["tls"] }
|
|
# Pure-Rust reader of Hunspell .aff/.dic dictionaries for offline spell
|
|
# checking, so the binary stays self-contained (no C libhunspell to link).
|
|
spellbook = "0.4.2"
|
|
|
|
[profile.release]
|
|
opt-level = 2
|