doomemacs/modules/lang/markdown
Henrik Lissner a79275a476 Bump :lang
200ok-ch/counsel-jq@f5bfed8 -> 200ok-ch/counsel-jq@153d70b
Andersbakken/rtags@63a7d9b -> Andersbakken/rtags@aa4c827
MatthewFluet/company-mlton@b87e363 -> MatthewFluet/company-mlton@9b09d20
NixOS/nix-mode@e32c6bf -> NixOS/nix-mode@0023fc5
OmniSharp/omnisharp-emacs@e26ff8b -> OmniSharp/omnisharp-emacs@8ec5929
ProofGeneral/PG@702f5b9 -> ProofGeneral/PG@bdb6782
Wilfred/elisp-def@da1f763 -> Wilfred/elisp-def@dfca043
agda/agda@5070bd8 -> agda/agda@9d08edb
ananthakumaran/exunit.el@c77b039 -> ananthakumaran/exunit.el@5bb115f
ananthakumaran/tide@a43a37b -> ananthakumaran/tide@7f7334b
asok/projectile-rails@7a256b1 -> asok/projectile-rails@8d6b373
brotzeit/rustic@f7d5ac0 -> brotzeit/rustic@61d600e
clojure-emacs/cider@1a34f89 -> clojure-emacs/cider@815204f
clojure-emacs/clj-refactor.el@9dcc50d -> clojure-emacs/clj-refactor.el@b24ce76
clojure-emacs/clojure-mode@53ef8ac -> clojure-emacs/clojure-mode@f26379b
crystal-lang-tools/emacs-crystal-mode@f9e4db1 -> crystal-lang-tools/emacs-crystal-mode@1599814
cython/cython@17e03b8 -> cython/cython@9a761a6
dgutov/robe@f04dcc7 -> dgutov/robe@3ef165c
diml/utop@7bc5117) -> diml/utop@a5ff52b)
dominikh/go-mode.el@fdf46fe -> dominikh/go-mode.el@49a5380
elixir-editors/emacs-elixir@b78e7f7 -> elixir-editors/emacs-elixir@9de08c1
emacs-csharp/csharp-mode@4916829 -> emacs-csharp/csharp-mode@09b4d57
emacs-ess/ESS@d013616 -> emacs-ess/ESS@5169b0d
emacs-lsp/lsp-dart@b81b1ec -> emacs-lsp/lsp-dart@71902ca
emacs-lsp/lsp-haskell@4d85cb3 -> emacs-lsp/lsp-haskell@7efbef3
emacs-lsp/lsp-java@f43b00a -> emacs-lsp/lsp-java@5f6d357
emacs-lsp/lsp-metals@31dafff -> emacs-lsp/lsp-metals@c76eeb6
emacs-lsp/lsp-pyright@71ff088 -> emacs-lsp/lsp-pyright@65fb141
emacs-lsp/lsp-python-ms@5470ada -> emacs-lsp/lsp-python-ms@689f6cf
emacs-lsp/lsp-sourcekit@948c3a3 -> emacs-lsp/lsp-sourcekit@ff204ed
emacs-php/php-mode@7e5722c -> emacs-php/php-mode@8cdc727
emacs-straight/auctex@fb062a3 -> emacs-straight/auctex@384c4b9
emacs-straight/csv-mode@eb3ec00 -> emacs-straight/csv-mode@8da54e8
emacs-straight/org-mode@9e98e9a -> emacs-straight/org-mode@0b117f7
emacs-typescript/typescript.el@54f14c4 -> emacs-typescript/typescript.el@1043025
emacsmirror/cmake-mode@e58c411 -> emacsmirror/cmake-mode@d5d77de
ericdallo/hover.el@3f07a18 -> ericdallo/hover.el@c9c0593
erlang/otp@8fc0641 -> erlang/otp@af06b43
eschulte/jump.el@e4f1372 -> eschulte/jump.el@55caa66
ethereum/emacs-solidity@d166a86 -> ethereum/emacs-solidity@b4fd719
factor/factor@94a922a -> factor/factor@1928e60
fsharp/emacs-fsharp-mode@13fbf4c -> fsharp/emacs-fsharp-mode@78898a1
fxbois/web-mode@890e837 -> fxbois/web-mode@8ef4793
godotengine/emacs-gdscript-mode@75fe658 -> godotengine/emacs-gdscript-mode@16c631c
greghendershott/racket-mode@3563081 -> greghendershott/racket-mode@75ea8f6
haskell/haskell-mode@0d39c84 -> haskell/haskell-mode@3a019e6
hhvm/hack-mode@9079bc3) -> hhvm/hack-mode@847fd91)
hvesalai/emacs-scala-mode@9d3b56e -> hvesalai/emacs-scala-mode@402d6df
idris-hackers/idris-mode@b77eadd -> idris-hackers/idris-mode@80aabd2
immerrr/lua-mode@d2ff304 -> immerrr/lua-mode@2d9a468
iyefrat/evil-tex@ac313ef -> iyefrat/evil-tex@5f0d6fb
jaor/geiser@cd00be6 -> jaor/geiser@26dd2f4
jcollard/elm-mode@363da4b -> jcollard/elm-mode@188b9c7
joaotavora/sly@3278819 -> joaotavora/sly@fb84318
jorgenschaefer/emacs-buttercup@2f24a44 -> jorgenschaefer/emacs-buttercup@1de6be4
jrblevin/markdown-mode@dcad557 -> jrblevin/markdown-mode@0517340
jwiegley/emacs-async@14f48de -> jwiegley/emacs-async@d7e7f79
jyp/attrap@9c88154 -> jyp/attrap@778382e
jyp/dante@e2acbf6 -> jyp/dante@7b1ab64
kaushalmodi/ox-hugo@04f41ca -> kaushalmodi/ox-hugo@a05667e
leanprover/lean-mode@cc1f5fa -> leanprover/lean-mode@15bee87
ledger/ledger-mode@805507f -> ledger/ledger-mode@3495d12
mooz/js2-mode@f7816bd -> mooz/js2-mode@29979e5
nonsequitur/inf-ruby@b012457 -> nonsequitur/inf-ruby@1fc972e
ocaml-ppx/ocamlformat@860266b -> ocaml-ppx/ocamlformat@7db8d13
ocaml/dune@4d097cd -> ocaml/dune@f839fc1
ocaml/merlin@28193d5 -> ocaml/merlin@36d0aef
pezra/rspec-mode@f1029ca -> pezra/rspec-mode@92ef785
polymode/poly-R@51ffeb6 -> polymode/poly-R@c42ff3a
polymode/polymode@3284ff1 -> polymode/polymode@b3871e9
purescript-emacs/psc-ide-emacs@663f4e2 -> purescript-emacs/psc-ide-emacs@ce97d71
purescript-emacs/purescript-mode@154ad16 -> purescript-emacs/purescript-mode@8410baf
pwalsh/pipenv.el@f516a1a -> pwalsh/pipenv.el@8f50c68
pythonic-emacs/anaconda-mode@b1875a5 -> pythonic-emacs/anaconda-mode@081f9d8
racer-rust/emacs-racer@a0bdf77 -> racer-rust/emacs-racer@f17f9d7
rubocop-hq/rubocop-emacs@03bf155 -> rubocop-hq/rubocop-emacs@1372ee3
seagle0128/grip-mode@91da46f -> seagle0128/grip-mode@1aebf9c
senny/rvm.el@b2498a4 -> senny/rvm.el@c1f2642
swift-emacs/swift-mode@0bc8d8d -> swift-emacs/swift-mode@95ff004
takaxp/org-tree-slide@04b5a9d -> takaxp/org-tree-slide@c9487e5
technomancy/fennel-mode@fa56106 -> technomancy/fennel-mode@bebc9dd
tpapp/julia-repl@d073acb -> tpapp/julia-repl@7ce38a9
wbolster/emacs-python-pytest@3fadf1f -> wbolster/emacs-python-pytest@31ae5e0
wwwjfy/emacs-fish@db257db -> wwwjfy/emacs-fish@a7c953b

Fix #4695
Close #4529
Close #4576
2021-02-25 10:46:46 -05:00
..
autoload.el Fix #4407: regression in +markdown-flyspell-word-p 2020-12-13 00:21:10 -05:00
config.el Markdown: add keymap for insert commands 2021-01-03 18:48:33 -06:00
doctor.el Add grip-mode for live GF markdown previews 2019-10-19 10:16:33 +13:00
packages.el Bump :lang 2021-02-25 10:46:46 -05:00
README.org Update list of markdown-compile-* in markdown doc 2020-05-24 08:22:01 +02:00

lang/markdown

Description

This module provides Markdown support for Emacs.

Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).

Thus, “Markdown” is two things: (1) a plain text formatting syntax; and (2) a software tool, written in Perl, that converts the plain text formatting to HTML. See the Syntax page for details pertaining to Markdowns formatting syntax. You can try it out, right now, using the online Dingus.

The overriding design goal for Markdowns formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like its been marked up with tags or formatting instructions. While Markdowns syntax has been influenced by several existing text-to-HTML filters, the single biggest source of inspiration for Markdowns syntax is the format of plain text email. John Gruber

Module Flags

  • +grip Enables grip support (on <localleader> p), to provide live github-style previews of your markdown (or org) files.

Plugins

  • markdown-mode
  • markdown-toc

Hacks

  • Flyspell has been configured not to spell check in code blocks, links, HTML tags or references.

Prerequisites

This module has two soft dependencies: a linter and a compiler (for previewing markdown).

Linters

Out of the box, flycheck recognizes these checkers for markdown-mode and gfm-mode:

  • Markdown-specific

  • General (natural language)

    • proselint

      • pip install proselint
      • Or through your OS package manager

        • MacOS: brew install proselint
        • Arch Linux: pacman -S proselint
    • textlint (npm install textlint)

Markdown preview

This module requires a markdown compiler in order for markdown-preview to work. It will recognize and use one of the following executables, in this order (you only need one):

  • markedjs: a markdown compiler "built for speed"
  • pandoc: the universal markup transpiler
  • markdown: there are various flavors of this compiler. This module will look for these two:

  • multimarkdown: a compiler for a language that is a superset of Markdown, with additional output formats and features.

MarkedJS

Not to be confused with the Marked 2 app, marked is an npm package:

npm install -g marked

Pandoc

Pandoc is the universal markup transpiler. It should be available through your system package manager. For example:

  • MacOS: brew install pandoc
  • Arch Linux: pacman -S pandoc

Markdown

The C implementation of Markdown.pl, called discount, is available through your OS's package manager:

  • MacOS: brew install discount
  • Arch Linux: pacman -S discount

The original perl script that discount is inspired from can be found on John Gruber's website.

MultiMarkdown

See its documentation for details on what MultiMarkdown is. The compiler can be installed through your OS's package manager:

  • MacOS: brew install multimarkdown
  • Arch Linux: multimarkdown is available on the AUR

Features

Markdown preview

markdown-preview is bound to <localleader> p. This will open a preview of your compiled markdown document in your browser.

Alternatively, you can use grip-mode through +grip.

Configuration

Changing how markdown is compiled

When markdown-preview is invoked (<localleader> p) it consults markdown-command. Its default value (#'+markdown-compile) will consult +markdown-compile-functions: a list of functions that take three arguments: the start and end point in the current buffer to use as input, and an output buffer to insert the result in.

By default, the value of +markdown-compile-functions is:

'(+markdown-compile-marked
  +markdown-compile-pandoc
  +markdown-compile-markdown
  +markdown-compile-multimarkdown)

These functions will attempt to use the marked, pandoc and markdown executables, if available. Changing this variable will control how markdown is compiled.

;; Add a new one
(add-hook '+markdown-compile-functions #'my-compile-function)

;; Or remove an existing one
(remove-hook '+markdown-compile-functions #'+markdown-compile-markdown)

Otherwise, you can change markdown-command directly:

(setq markdown-command "markdown | smartypants")