Proselint Setup¶
Proselint is a linter for English prose that checks for common style and usage errors. Language Check integrates Proselint as an optional engine alongside Harper, LanguageTool, and Vale.
Note
Proselint only supports English. It is automatically skipped when
spell_language is set to a non-English locale.
Installing Proselint¶
Proselint is a Python package. Install it so the proselint binary is on
your $PATH.
pip install proselint
pipx install proselint
pipx installs into an isolated environment and adds the binary to your PATH automatically.
brew install proselint
# Debian/Ubuntu
sudo apt install python3-proselint
# Arch Linux
sudo pacman -S proselint
Verify with:
proselint --version
Tip
If the command is not found after installing, ensure the install location
is on your $PATH. For pip, this is typically ~/.local/bin on Linux/macOS
or %APPDATA%\Python\Scripts on Windows. You may need to add it:
# Linux/macOS — add to ~/.bashrc or ~/.zshrc
export PATH="$HOME/.local/bin:$PATH"
Enabling Proselint¶
Add proselint: true to your .languagecheck.yaml:
engines:
harper: true
proselint: true
Or use the Language Check: Manage Engines command from the VS Code command palette.
The inspector health tab shows whether the proselint binary was detected
and will display install instructions if it is missing.
Proselint Configuration¶
Proselint uses its own JSON config file. Language Check does not replace this — you manage Proselint’s config separately.
Config search order¶
Proselint searches for configuration in this order:
proselint.jsonin the current directory (and parents)~/.config/proselint/config.json
Pointing to a custom config¶
Specify a custom config path in .languagecheck.yaml:
engines:
proselint:
enabled: true
config: "config/proselint.json"
Example config¶
{
"checks": {
"typography.diacritical_marks": false,
"misc.suddenly": false
}
}
See the Proselint README for the full list of available checks.
How it Works¶
Language Check sends document text to Proselint via stdin with:
proselint check -o json [--config <path>]
Proselint’s JSON output is parsed and converted to Language Check diagnostics:
Proselint field |
Language Check mapping |
|---|---|
|
Rule ID prefixed with |
|
Diagnostic message |
|
Byte offsets (adjusted for padding) |
|
Fix suggestions |
All Proselint diagnostics are mapped to warning severity.
Rule Overrides¶
Override Proselint rule severities in .languagecheck.yaml using the
proselint.<check_path> format:
rules:
proselint.uncomparables:
severity: "off" # Disable this rule
proselint.hedging:
severity: info # Downgrade from warning
High Performance Mode¶
Proselint is skipped when performance.high_performance_mode is enabled,
since it requires spawning an external process.