I had always thought that the only way to do was to either have a blank
line (which is not a line break, but a paragraph break) or add the
<br /> HTML tag. I avoided the latter because I think it just plain
looks ugly, and erases the elegance of using markdown, formatting
Today, I learned that you can simply add two spaces at the end of the line to force a line break. When I first heard this, I thought it was one of those newfangled extended markdown syntaxes. That’s not the case, and this syntax is in John Gruber’s original syntax documentation:
When you do want to insert a
<br />break tag using Markdown, you end a line with two or more spaces, then type return.
I must’ve completely missed that every time I’ve read the document.
My elation at learning a new thing was quickly dashed when I remembered
that I hate trailing whitespace and use a
pre-commit hook on every repository I manage. I like this
syntax feature so much that I started considering how I would add an
exception. A quick look at the hook’s source code showed
that someone had already thought of that:
# preserve trailing two-space for non-blank lines in markdown files if is_markdown and (not line.isspace()) and line.endswith(b' '): return line[:-2].rstrip(chars) + b' ' + eol return line.rstrip(chars) + eol
All I needed to do was add an argument to my
for that particular hook:
repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.3.0 hooks: - id: trailing-whitespace exclude: .gitignore args: - --markdown-linebreak-ext=md ...
Now, trailing whitespace is still removed, except when it is used for forcing line-breaks in markdown files.