Repository navigation
Expand file tree
/
Copy path.vale.ini
More file actions
67 lines (62 loc) · 3.42 KB
/
Copy path.vale.ini
File metadata and controls
67 lines (62 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Vale configuration for the book prose. See https://vale.sh.
#
# Vale parses Markdown and checks only text, not code spans or fenced code, so
# the rules below never fire on identifiers or examples. Spelling is handled
# separately by codespell (`tip spell`); Vale here enforces house style only.
#
# Vale is a standalone binary (not a Python package); `tip
# tools-check-full` prints the install command for this machine. The
# write-good and proselint packages download into styles/ (gitignored)
# on the first `tip prose`, which runs `vale sync` when that directory
# is missing; without them every run dies with "style 'write-good' does
# not exist on StylesPath".
# Packages must be in this core section, before any [glob] section, or
# `vale sync` ignores them (it reports "Synced 0 package(s)").
StylesPath = styles
MinAlertLevel = suggestion
Packages = write-good, proselint
# Terms of art the packaged styles misread, one per line, in
# styles/config/vocabularies/Book/accept.txt. A Vocab entry silences every
# style, not only the spellchecker, and an all-lowercase entry matches any
# capitalization. Vale 3 requires this exact path; `styles/Vocab/` is the
# Vale 2 spelling and fails with "vocabulary not found".
Vocab = Book
[*.md]
# Downloading a package is not the same as enabling it: list each synced style
# here for its rules to run.
BasedOnStyles = House, write-good, proselint
# Quoted material is someone else's prose, so house style does not apply to it.
# Chapter 10's block quote from the Python documentation alone accounted for
# ten passive-voice warnings. This drops any run of `> ` lines before Vale
# parses the file; an inline quotation inside a sentence still gets checked.
# The flags must be `(?m)` alone: with `(?s)` the `.` matches newlines, so
# `.*\n` ran from each chapter's opening quote to the end of the file and
# Vale checked nothing after it (2026-08-12 to 2026-10-03, one warning a book).
BlockIgnores = (?m)^(?:> .*\n)+
# These rules are too noisy for this book. Comment a line out (prefix it with #)
# to re-enable that rule at its package default. Vale has no "once per file"
# option, so disabling is the way to quiet a chatty rule.
# - E-Prime flags every form of "to be" (is/are/was/it's).
# - TooWordy flags ordinary words like "However", "Multiple", "Modify".
# - proselint.But forbids starting a paragraph with "But".
# - write-good.Weasel flags "several" and "usually", which are 94 of its
# 128 hits here and are precise in technical prose: "several" means a
# plural whose count is immaterial, and "usually" is the hedge that
# keeps a claim true. House.Weasel replaces it with the eight words
# that are vague in this book, so the rule stops crying wolf.
# - write-good.Cliches repeats proselint.Cliches word for word, so every
# hit arrived twice. proselint keeps the coverage.
# - write-good.So forbids starting a sentence with "So". Here that "So"
# marks an inference drawn from the paragraph above it ("So all calls
# share one mutable default:"), which is what the word means.
# "Therefore" is stiffer, and deleting it loses the link.
# - proselint.Typography asks for "…" in place of "...". This source stays
# ASCII and pandoc renders the typography at build time, so every
# authorial ellipsis would report forever.
write-good.E-Prime = NO
write-good.TooWordy = NO
write-good.Weasel = NO
write-good.Cliches = NO
write-good.So = NO
proselint.But = NO
proselint.Typography = NO