Skip to content

v0.7.0

Choose a tag to compare

@benjaminjackson benjaminjackson released this 15 Sep 21:26
· 156 commits to main since this release

Added

  • --strict runs the full catalog, including the five rules that ship off
    by default. Before this, the only way to turn one on was to name it in
    --select, which also turned off every other rule unless you listed
    those too. --ignore still subtracts on top of --strict, and
    --select is unchanged.
  • ellipsis-closer (structure, info) flags the long-sentence-then-short-closer
    kicker mic-drop-closer catches, but built on the opposite verb shape: the
    closer's verb phrase is elided down to a bare auxiliary with no object,
    "The agent did." rather than a quantifier plus a full verb. No subject list
    is needed — the tell is the missing verb, not the subject — so "That",
    "This" and "It" are not excluded the way mic-drop-closer excludes them.
    A negative lookahead drops a closer that still holds a wh-word, since that
    marks a subordinate clause with its own complement rather than an elided
    one. Reuses mic-drop-closer's long-sentence prefix.
  • actually-not-x: the adverb and a trailing "…, not X" in one clause, as in
    "The disclosure actually covered two incidents, not one". Either marker
    alone is ordinary technical English and neither is matched on its own; the
    tell is the two of them doubled up, correcting an alternative the reader was
    never offered. The narrowing is structural, not a word list: the comma in
    front of "not" has to be the first comma of its clause and has to follow a
    word, so a fronted setup ("Despite the name, …") and a parenthetical both
    drop it. Nothing crosses a line break, so two rows of a table cannot weld
    into one correction.
  • real-x-real-y (rhetorical-tic, info) flags the same "real" used twice
    attributively in one sentence, in front of two different nouns: "it can
    trigger real API calls or hold real credentials". Bare "real" is an
    ordinary word, so the narrowing is the repetition itself, not a noun
    list. A hyphen on either side takes it out ("real-time", "non-real"), a
    backreference requires the second noun to differ from the first, and a
    short closed list drops the fixed senses of this register (real time,
    real-world, real numbers, real user monitoring, real estate, real money).
  • phrase-echo (rhetorical-tic, info, off by default) flags a three-word
    phrase that comes back within a few hundred words, the model reusing a
    phrase it has just minted. Each word must be four characters or more and
    lowercase-led, and one of them six letters with nothing but letters, so "in
    order to", "couldn't have been" and "New York City" never match. The window
    does not cross into a list item or a table row. Off by default: a term of
    art repeats because it must, and in reference prose the pattern fires on
    names by the thousand per million words.
  • trailing-restatement (structure, info, off by default) flags the tail
    that says the sentence again in other words: ", which means …", ", which
    is to say …", ", meaning …", and four participles that hang a result off
    the sentence (", making it easier", ", allowing us to", ", giving them
    more", ", leaving you with"). The connective is all a pattern can see, and the
    same connective states a real consequence in careful prose, so the rule
    runs only when selected.

Fixed

  • check's options now work without the command word: sloplint --markdown -
    and sloplint --strict - scan, as the README has said sloplint - does.
    Before, the global parser rejected any option it did not own with
    invalid option, so check had to be spelled out whenever an option
    came first. An option no command knows still exits 2.
  • --markdown now blanks <!-- --> comment blocks along with fenced code,
    inline code and URLs. Planning notes kept in comments never render, so
    every rule that fired inside one was a permanent false positive.
  • rule-of-three's message, rationale, README and SPEC entries said it
    flagged three parallel comma items. The pattern requires single words in
    the closing two slots, so a triad of phrases never matched; the text now
    says that.