French, German, and Spanish
Vale now lints French, German, and Spanish in the language itself. Set Lang and run vale sync to download its model:
[*.md]
Lang = frSentences are split and words are tagged with a model for that language, so sequence rules can match on upos: tags. spelling reads the language's own dictionary from config/dictionaries, and sentence-case rules keep the words the language capitalizes, such as German nouns. More languages are available; vale sync reports any that have no model.
Source-code grammars
Tree-sitter grammars are now WebAssembly modules that vale sync installs, and the release binaries no longer need CGo.
If you lint source code, run vale sync after upgrading. A [*.go] section gets the Go grammar automatically; Grammars = go, python (or ALL, or NONE) overrides that.
Also
vale ls-metricstakes several paths or a directory.- Rules scoped to
sentenceorparagraphnow run on code comments. - A hard line break no longer joins a nested list to the item above it (#1225).
Changelog
- 4ce91ef fix: Ignore the zig cache"
- de2efa2 fix: Name the dictionary directory the same way everywhere
- 05abbaf fix: let a hard line break keep a nested list separate (#1226)
- 916d7b4 fix: Run sentence-scoped rules on code comments
- ad4b34e feat: The English-built checks follow Lang
- 80b2ac8 fix: Lang in [*], and a grammar the cache can't take
- 3945424 feat: Sync the grammars the sections imply
- b2d7c28 chore: Bump prose to v3.3.0
- 7efb394 feat: A vale_nocode build without the grammar runtime
- 66bbb85 ci: Put DITA-OT on the Windows PATH
- 49bd113 chore: Pin prose to the branch head
- aa756da chore: Bump prose for the new English tagger
- 466210d fix: Download the grammar sources before building
- 0c03fed feat: Run tree-sitter grammars as WebAssembly
- cb0fdf5 feat: Run tree-sitter grammars as WebAssembly
- de56bd4 chore: Build with Go 1.27.3
- 7d7de14 feat: Let ls-metrics take several paths
- 04b464c fix: Give Asciidoctor.js a JavaScript converter
- f0b930c feat: Download language models on sync
- 3385243 feat: Lint a file in the language its configuration names
- 628a787 chore: Bump prose
- e6c7f75 test: Correct three expected alert positions
- 0d9e802 fix: A match in text the converter rewrote is placed where it is
- 9b7e4ca fix: An undefined Sphinx substitution is skipped, not read as prose
- 9e606e9 fix: A sentence-case rule accepts an acronym