markdowny ========= A Markdown parser with strict error handling, generating an AST that can be easily adjusted and converted to text or HTML. It supports some additional syntax: - spans between `[` and `]`; - divs without block elements (such as div and p) between `[[` and `]]`; - divs with block elements (such as div and p) between `[[[` and `]]]`; - literals between `[[[[` and `]]]]`; - setting styles/classes/ids etc with `{#id; style: value; .classname}`. - HTML tags such as `div` with a newline after are assumed to contain block elements. HTML tags without a newline after are assumed to not contain block elements. - `!![description](image-src)` is a block level image (not wrapped in `
`) This library also has a `resolve_markdown()` function that does a number of things: - makes sections around headings (h1,h2,..), and make links to them; - highlight source code (if `syntect` feature is enabled); - converts math to mathml (if `latex2mathml` feature is enabled); - creates figures (start blockquote with `figure_type #reference_key: caption`, figure type can be `listing`/`figure`/etc, `#reference_key` can be used in links); - resolves section and figure counters (start headings and figures with `?`, if link body contains `?`, replace by actual number). ### Neovim LSP config ```lua vim.api.nvim_create_autocmd('FileType', { pattern = 'markdown', callback = function(args) vim.lsp.start({ cmd = { 'markdowny-lsp' }, name = 'markdowny', }) end, }) ```