remark-lint-sentence-newline

Enforce a newline after an end of sentence in Markdown.

Usage no npm install needed!

<script type="module">
  import remarkLintSentenceNewline from 'https://cdn.skypack.dev/remark-lint-sentence-newline';
</script>

README

Build status Coverage Status

remark-lint-sentence-newline

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.
! is, but not !".
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.

Using the rule

Via .remarkrc

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

Via CLI

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

Blacklisting

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."]
      }
    }
  }
}