·
1 commit
to v3
since this release
Immutable
release. Only release title and notes can be modified.
Spelling
split: truechecks the parts of an identifier (getHTTPResponse_v2→get,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 getsVale.<Name>.TermsandVale.<Name>.Avoidrules. - A period in an entry is text, not a wildcard, and a phrase matches across a line wrap.
- A
Vale.Termsalert offers the entry's spelling as a fix.
Configuration
- An empty
BasedOnStylesclears a section's inherited settings;UNSETclears 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). TokenIgnoresandBlockIgnoresapply 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 longestICONVrule inside spell, and read ß as SS in all-caps underCHECKSHARPS - a4e2853 fix: read a
COMPOUNDRULEas 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 anONLYINCOMPOUNDsuffix 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
BasedOnStylesreset a file's inherited rule settings, and addUNSET - 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:
hasCaptureGrouplogic