C CSS Makefile
Clone or download
Latest commit 31b8273 Jun 18, 2018
Failed to load latest commit information.
man Add new functions, fix some white-space, and add our pledge(2) promises. Jun 18, 2018
LICENSE.md No commit message Dec 7, 2016
Makefile Add lowdown_buf_diff(3) and bring other manpages in line. Jun 18, 2018
README.md Doc typos fixed by Svyatoslav Mishyn, thank you! Apr 19, 2018
archive.xml Heavier weight throughout. Oct 19, 2017
autolink.c Useless cast. Sep 5, 2017
buffer.c Equality of buffers. Oct 12, 2017
compats.c Bring up to date with oconfigure. Apr 18, 2018
configure Bring up to date with oconfigure. Apr 18, 2018
diff.c Have top-down optimisation only match siblings of adjacent matches. Jun 18, 2018
diff.css Updating diff document. Oct 18, 2017
diff.js Add diff algorithm paper. Oct 17, 2017
diff.md Document new topdown optimisation behaviour. Jun 18, 2018
diff.old.md Comparison file. Jun 18, 2018
document.c Fix #15, thanks! Apr 18, 2018
extern.h Split out metadata formatters. Oct 19, 2017
html.c Convert %F to broken-down to avoid problems on musl linux. Jun 9, 2018
html_escape.c Split escape files into output modes. Sep 15, 2017
html_smartypants.c Stop using uint8_t and just use char. Sep 4, 2017
index.md Note libdiff docs. Jun 16, 2018
library.c Remove debugging, update copy. Jun 16, 2018
log.c Edge in a parsed tree interface. For now, this prints the tree on stderr Jul 27, 2017
lowdown.h Add change enumeration. Oct 8, 2017
main.c Don't leak "fin". Oct 13, 2017
mandoc.css Add more static www content. Dec 26, 2016
nroff.c Convert %F to broken-down to avoid problems on musl linux. Jun 9, 2018
nroff_escape.c From #9 --- thanks! Sep 29, 2017
nroff_smartypants.c Quotes can be single-quote. Sep 10, 2017
template.css Make latest version be noticed. Oct 19, 2017
template.xml Heavier weight throughout. Oct 19, 2017
tests.c Bring up to date with oconfigure. Apr 18, 2018
tree.c Add change enumeration. Oct 8, 2017
util.c Split out metadata formatters. Oct 19, 2017
versions.xml More version information. Jun 18, 2018
xmalloc.c Use xrecallocarray. Oct 11, 2017



lowdown is a fork of hoedown, although the parser and front-ends have changed significantly.

This is a read-only repository for tracking development of the system. Stable releases are available at the website.

The fork features the following modifications to its predecessor:

  1. Put all header files into one and clean up source layout.
  2. Remove all macro cruft (Microsoft checks and builtins).
  3. Remove all option handling.
  4. Use err(3).
  5. Use pledge(2), Mac OS X's sandbox, or FreeBDS's capsicum(4), if applicable.
  6. Add manpage.
  7. Strip use of externally-defined memory management.
  8. Rename internal API (for brevity).
  9. Prune dead code and de-obfuscate some internal structures.
  10. Create a usable library interface.
  11. Remove "semantic quote" option, as it has no nroff basis.
  12. Remove "emphasis as underline" option, as it has no nroff basis and is confusing on the web.
  13. Have the back-end parser to generate an AST instead of directly rendering.
  14. Several superfluous mechanisms (pools and stacks) removed.
  15. Document language syntax in a manpage.

For the moment, lowdown output is the same as hoedown with the following presets:

  • XHTML mode
  • autolinking
  • fenced code
  • tables
  • superscripts
  • footnotes
  • disabled inline HTML (truly an evil feature of Markdown)
  • "smartypants" enabled

Individual features can be enabled and disabled at will.

The following modifications to the HTML5 output have been made:

  • "smartypants" emits Unicode codepoints instead of HTML entities to make the output XML-friendly
  • emit image dimensions if specified in the link text

The following major feature additions have been added:

  • output mode for troff (via either the -ms or -man package)
  • extension output mode for GNU troff (-mpdfmark, PSPIC, etc.)
  • "smartypants" mode for the troff outputs
  • metadata support
  • tree output for AST debugging
  • "diff" engine for semantic differences between documents

It builds and runs on OpenBSD, Linux (musl and glibc), and Mac OS X.

If you have any comments or patches, please feel free to post them here or notify me by e-mail.


All sources use the ISC license. See the LICENSE.md file for details.