This is an remark-lint rule that enforces a newline after an end of sentence in Markdown.
How do we define an end of sentence?
It is a .
, ?
or !
followed by a space.
<!-- Invalid -->
Hello, world. This sentence should be on a second line.
<!-- Valid -->
Hello, world.
This sentence should be on a second line.
Hello.<-There is no space after the dot, so this is not an error.
"Hello, world!" This sentence is not required to be on a second line because
!" is not an end of sentence.
Regarding that !"
example: !
is a sentence end, but !"
isn't.
But you're free to add a newline after !"
, or wherever.
This rule's job is to complain when you don't have a newline in certain cases.
It never complains when you do have a newline.
npm install -g remark
npm install -g remark-lint
npm install remark-lint-sentence-newline # local install!
Then, set up your .remarkrc
:
{
"plugins": {
"remark-lint": {
"external": ["remark-lint-sentence-newline"]
}
}
}
Now you can use the following command to run the lint:
remark --no-stdout xxx.md
The following works for remark-lint >= 2.2.0
.
Prior to 2.2.0, remark-lint did not load globally installed (a la npm install -g
) lint rules, so the following wouldn't work.
npm install -g remark
npm install -g remark-lint
npm install -g remark-lint-sentence-newline # global install!
remark --no-stdout -u remark-lint="external:[\"remark-lint-sentence-newline\"]" xxx.md
Earlier, we defined what an end of sentence is, but often there are exceptions
to the rule.
For example, we often use e.g.
followed by a space.
The second dot followed by a space is eligible as an end of sentence, but we
don't want a newline in the middle of the following sentence for example:
Some open-source projects (e.g. remark-lint) are awesome
So we need a way to define exceptions.
The blacklist
option in your .remarkrc
(or in your CLI option) allows you to
achieve this.
{
"plugins": {
"remark-lint": {
"external": ["remark-lint-sentence-newline"],
"sentence-newline": {
"blacklist": ["e.g."]
}
}
}
}