github vale-cli/vale v3.22.0

4 hours ago

Spelling

  • split: true checks the parts of an identifier (getHTTPResponse_v2get, Response) and reports each at its own position.
  • The engine now follows Hunspell's case model, compounding, and affix rules, and passes Hunspell's own test suite.
  • Suggestions come in Hunspell's order, and words from ignore files and vocabularies are offered ahead of dictionary words.
  • A loaded dictionary is shared across spelling rules.

Vocabularies

  • A section can set its own Vocab, which adds to the global one and gets Vale.<Name>.Terms and Vale.<Name>.Avoid rules.
  • A period in an entry is text, not a wildcard, and a phrase matches across a line wrap.
  • A Vale.Terms alert offers the entry's spelling as a fix.

Configuration

  • An empty BasedOnStyles clears a section's inherited settings; UNSET clears one rule or style.
  • A [formats] key can be a file name or a glob, not only an extension.
  • A scope can negate an inline element (text.raw, paragraph.link, and so on).
  • TokenIgnores and BlockIgnores apply to HTML and DITA.

Formats

  • MDX: indented blocks are never code, an expression followed by prose keeps the prose, one-line elements are linted, and alerts no longer land inside JSX tags.
  • DITA: all files in a run are converted in one toolkit call.
  • Jupyter notebooks are a format of their own.
  • Front-matter alerts are placed by the field's position.
  • URLs in code comments and RST are treated consistently.

Changelog

  • e109c06 fix: keep a URL out of prose in code comments and RST
  • 79a4875 feat: let a scope negate an inline element
  • cf16166 perf: convert a run's DITA files in one toolkit run
  • 68e022b feat: apply ignore patterns to DITA
  • f41bebb fix: cover a promoted RST title with the comment region written above it
  • 18dd863 fix: apply a vale-off region to a footnote written inside it
  • 9bcbf9f test: pin a vale-off region after front matter and import lines (#1073)
  • 344fd9b fix: locate a block's later matches in that block, not in a later copy of its text
  • ec7e5f0 feat: match a vocabulary phrase across a line wrap, read a period as text, and offer the term as a fix
  • 0194fbb feat: suggest from the project's own words
  • 49422de fix(mdx): lint a one-line element's text as prose, and keep alerts out of JSX tags
  • 5ab91a5 fix: place front-matter alerts by the field's position, not by searching the file
  • dcf7f18 fix(mdx): end an expression at its brace, keep prose after it, and parse indented blocks
  • 8a9fd38 fix: keep the whitespace before an inline comment, so the words around it stay apart
  • 7c61ce4 perf: bound the inline-markup lookahead by byte length, not a rune count of the whole context
  • 1e73019 fix: read a notebook cell's source with a tagless switch,
  • 9e66106 feat: let a section name its own vocabularies
  • fc513c5 perf: share a loaded dictionary across spelling rules, and take the regexp2 fold fix
  • f278585 feat: lint a Vale rule by its message and description, not its patterns
  • 85992f2 feat: let a spelling rule split identifiers and check their parts
  • cb5885f feat: suggest in Hunspell's order, and score suggestions against its fixtures
  • 52094c7 fix: read affix headers with trailing fields, escaped slashes, any-script digits, and Turkic casing
  • 17417ac feat: honor IGNORE, convert input by the longest ICONV rule inside spell, and read ß as SS in all-caps under CHECKSHARPS
  • a4e2853 fix: read a COMPOUNDRULE as flags and operators, quote its words, and match a capitalized word lower-cased
  • bfd0b42 perf: resolve affixed words lazily from roots, and read dictionaries as Hunspell does: per SET, byte flags without FLAG, literal hyphens in classes
  • 06325d9 feat: adopt Hunspell's case model, and keep ignore-list words case-lenient
  • 5452059 feat: pass Hunspell's German compounding fixtures: CHECKCOMPOUNDREP, COMPOUNDWORDMAX, prefix strips, and circumfix pairing across levels
  • a770129 feat: apply CHECKCOMPOUNDPATTERN, with replacements, and keep an ONLYINCOMPOUND suffix off a compound's end
  • f143508 feat: check compound position flags, permit and forbid flags, ONLYINCOMPOUND, FORCEUCASE, and word pairs
  • f9178fb feat: check compound boundaries, apply Hunspell's default BREAK rules, and forbid words per homonym
  • 25d8fbc test: run Hunspell's own fixtures as a conformance suite
  • c2d6243 feat: let an empty BasedOnStyles reset a file's inherited rule settings, and add UNSET
  • 6c2d99d feat: let a formats key name a file or a glob, not only an extension
  • 62d47db fix: accept the upper-cased form of a capitalized entry, and suggest in the word's case
  • f8ded8d feat: let a caller observe each block and time each rule
  • cd86a3c perf: segment a file only when a sentence-scoped rule runs on it
  • cf649e6 chore: add commit msg hook
  • 2c3aa80 fix: hasCaptureGroup logic

Don't miss a new vale release

NewReleases is sending notifications on new releases.