Add LanguageTool grammar/spell checking with a settings dialog
Check the current file against a LanguageTool server (typically a local instance) from a background thread. Issues are underlined in the editor (red spelling, blue grammar) and listed in a bottom panel with one-click fixes that re-align the remaining matches. A menu bar (File / View / Settings) exposes a LanguageTool settings dialog with discrete scheme / host / port / token / language fields, an endpoint preview, and a Test connection button. Config stores the parts and assembles the base URL. The token is sent as a bearer header. Uses ureq with a statically-linked rustls backend, so both http and https endpoints work with no new runtime library dependencies. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -84,6 +84,48 @@ The status bar shows a live **word count** for the current file, plus the net
|
||||
words added (or removed) to it since the current session started. The count
|
||||
updates as you type, including unsaved edits.
|
||||
|
||||
## Grammar & spelling (LanguageTool)
|
||||
|
||||
The editor can check the current file against a
|
||||
[LanguageTool](https://languagetool.org/) server — typically a **local
|
||||
instance**, so your manuscript never leaves your machine.
|
||||
|
||||
1. Run a LanguageTool server. The standalone server listens on
|
||||
`http://localhost:8010` by default (the official Docker image uses `:8081` —
|
||||
just point the app at whichever you run):
|
||||
```sh
|
||||
# Standalone (needs Java):
|
||||
java -cp 'languagetool-server.jar' org.languagetool.server.HTTPServer --port 8010
|
||||
# or via Docker:
|
||||
docker run -d -p 8010:8010 --entrypoint java \
|
||||
erikvl87/languagetool -cp languagetool-server.jar \
|
||||
org.languagetool.server.HTTPServer --port 8010 --allow-origin '*'
|
||||
```
|
||||
2. Open **Settings ▸ LanguageTool…** (from the menu bar, or the **⚙** button on
|
||||
the Grammar row) and set the connection:
|
||||
* **Scheme** — `http` for a local server, `https` for a remote one (TLS is
|
||||
supported).
|
||||
* **Host / domain** — an IP address or hostname (default `localhost`).
|
||||
* **Port** — the server's port (default `8010`).
|
||||
* **Token** — optional; sent as an `Authorization: Bearer` header for a server
|
||||
behind an auth proxy, or a premium API key. Leave blank for an
|
||||
unauthenticated local server.
|
||||
* **Language** — `auto` to detect, or a code like `en-US`, `en-GB`, `de-DE`.
|
||||
|
||||
Press **Test connection** to confirm the settings reach a working server. All
|
||||
fields are remembered in the config.
|
||||
3. Open a file and press **✓ Check**. The check runs in the background (the UI
|
||||
stays responsive) and issues appear two ways:
|
||||
* **Underlines in the editor** — red for spelling, blue for grammar/style.
|
||||
* **A "Grammar & spelling" panel** at the bottom listing each issue with its
|
||||
explanation and suggested fixes. Click a suggestion to apply it; the
|
||||
remaining underlines re-align automatically.
|
||||
|
||||
Editing the text after a check hides the underlines (their positions would no
|
||||
longer be accurate) and disables the fix buttons until you re-check. The checker
|
||||
sends the raw file text, so occasional markdown tokens (e.g. a `#` heading
|
||||
marker) may be flagged.
|
||||
|
||||
## Header stripping on export
|
||||
|
||||
Manuscript files often carry editorial notes and metadata above the prose that
|
||||
|
||||
Reference in New Issue
Block a user