bbatsov/projectile@bbcf781 -> bbatsov/projectile@46d2010 domtronn/all-the-icons.el@ed8e44d -> domtronn/all-the-icons.el@8c02280 emacsmirror/straight@fc077dd -> emacsmirror/straight@0c7c757 justbur/emacs-which-key@3642c11 -> justbur/emacs-which-key@e48e190 jwiegley/use-package@7d92536 -> jwiegley/use-package@4fb1f9a purcell/ns-auto-titlebar@1efc30d -> purcell/ns-auto-titlebar@60273e7 + :app - :app calendar kidd/org-gcal.el@7445058 -> kidd/org-gcal.el@2cad2d8 - :app irc jorgenschaefer/circe@e5bf5f8 -> jorgenschaefer/circe@89aac22 - :app rss skeeto/elfeed@d0405e6 -> skeeto/elfeed@8fb09ad - :app twitter abo-abo/avy@509471b -> abo-abo/avy@bbf1e73 + :completion - :completion company company-mode/company-mode@5eb7d86 -> company-mode/company-mode@54f60ef sebastiencs/company-box@889d723 -> sebastiencs/company-box@20384f0 - :completion helm emacs-helm/helm@5d224cb -> emacs-helm/helm@e9a1e53 tumashu/posframe@922e4d2 -> tumashu/posframe@7b92a54 - :completion ivy abo-abo/swiper@c6b60d3 -> abo-abo/swiper@9bb6841 raxod502/prescient.el@b11d79b -> raxod502/prescient.el@cc289ba snyball/ivy-posframe@4474956 -> snyball/ivy-posframe@82a63ae + :checkers - :checkers syntax alexmurray/flycheck-posframe@2b3e94c -> alexmurray/flycheck-posframe@c928b5b + :editor - :editor evil emacs-evil/evil@2bc6ca3 -> emacs-evil/evil@1e7aa5b emacs-evil/evil-collection@3e62b6b -> emacs-evil/evil-collection@c136589 - :editor fold seregaxvm/vimish-fold@6368523 -> seregaxvm/vimish-fold@9d12e39 - :editor god emacsorphanage/god-mode@1eb6ef3 -> emacsorphanage/god-mode@ad2e674 - :editor lispy abo-abo/lispy@cdaa9c7 -> abo-abo/lispy@0a9dcfd noctuid/lispyville@25a7012 -> noctuid/lispyville@0f13f26 - :editor objed clemera/objed@e89d8da -> clemera/objed@dea5a64 - :editor snippets joaotavora/yasnippet@5b1217a -> joaotavora/yasnippet@5cbdbf0 hlissner/doom-snippets@21b7c8d -> hlissner/doom-snippets@60c57d6 - :editor word-wrap emacs-straight/adaptive-wrap@1810c0e -> emacs-straight/adaptive-wrap@319db64 + :emacs - :emacs dired purcell/diredfl@83567d0 -> purcell/diredfl@cd052df - :emacs ibuffer purcell/ibuffer-projectile@504b0ed -> purcell/ibuffer-projectile@ecbe482 purcell/ibuffer-vc@1249c1e -> purcell/ibuffer-vc@5fa6aea - :emacs undo emacs-straight/undo-tree@5b6df03 -> emacs-straight/undo-tree@7523823 ideasman42/emacs-undo-fu@46de023 -> ideasman42/emacs-undo-fu@c0806c1 - :emacs vc magit/magit@d459e52 -> magit/magit@321214c pidu/git-timemachine@391eb61 -> pidu/git-timemachine@8d67575 + :email + :email notmuch https://git.notmuchmail.org/git/notmuch@ad9c2e9 -> https://git.notmuchmail.org/git/notmuch@8776faf org-mime/org-mime@9f84446 -> org-mime/org-mime@9bb6351 + :email wanderlust wanderlust/semi@57a948c -> wanderlust/semi@10897f0 + :input - :input japanese skk-dev/ddskk@fe7f82b -> skk-dev/ddskk@275a831 + :lang - :lang agda agda/agda@8eb0d01 -> agda/agda@36738c1 - :lang cc Andersbakken/rtags@080cb0e -> Andersbakken/rtags@b57b360 MaskRay/emacs-ccls@44f1fb3 -> Sarcasm/irony-mode@5f75fc0 emacsmirror/cmake-mode@bfe85bc -> emacsmirror/cmake-mode@e58c411 - :lang common-lisp joaotavora/sly@becf7b7 -> joaotavora/sly@155cb06 - :lang coq ProofGeneral/PG@0f0bb2c -> ProofGeneral/PG@03e427a cpitclaudel/company-coq@7ec8058 -> cpitclaudel/company-coq@b096cb5 - :lang dart emacs-lsp/lsp-dart@a06fc74 -> emacs-lsp/lsp-dart@437c548 - :lang elixir elixir-editors/emacs-elixir@02a3922 -> elixir-editors/emacs-elixir@01b3324 - :lang elm jcollard/elm-mode@7782be0 -> jcollard/elm-mode@363da4b - :lang emacs-lisp clojure-emacs/cider@9e117c2 -> clojure-emacs/cider@a89b694 clojure-emacs/clojure-mode@da9f1ec -> clojure-emacs/clojure-mode@84ed16c jorgenschaefer/emacs-buttercup@e71a40f -> jorgenschaefer/emacs-buttercup@0e5eae0 xuchunyang/elisp-demos@4cd55a3 -> xuchunyang/elisp-demos@8c97481 - :lang erlang erlang/otp@3065fbf -> erlang/otp@d9bc785 - :lang ess emacs-ess/ESS@3c2fb63 -> emacs-ess/ESS@1baf8bf - :lang fuel factor/factor@497d649 -> factor/factor@3fdb032 - :lang fsharp fsharp/emacs-fsharp-mode@8c86e38 -> fsharp/emacs-fsharp-mode@3e41fe1 - :lang fstar FStarLang/fstar-mode.el@aaaf256 -> FStarLang/fstar-mode.el@bd28cb8 - :lang haskell jyp/dante@7411904 -> jyp/dante@c516bc9 - :lang hy hylang/hy-mode@e2d5fec -> hylang/hy-mode@55e84ca - :lang idris idris-hackers/idris-mode@acc8835 -> idris-hackers/idris-mode@b77eadd - :lang java mopemope/meghanada-emacs@e119c7b -> mopemope/meghanada-emacs@1e41f7f - :lang javascript ananthakumaran/tide@13e7af7 -> ananthakumaran/tide@f0b6dac emacs-typescript/typescript.el@0fc7297 -> emacs-typescript/typescript.el@42a60e5 mooz/js2-mode@5049e54 -> mooz/js2-mode@40aab27 - :lang julia JuliaEditorSupport/julia-emacs@1c122f1 -> JuliaEditorSupport/julia-emacs@b5f5983 tpapp/julia-repl@5fa04de -> tpapp/julia-repl@d073acb - :lang kotlin Emacs-Kotlin-Mode-Maintainers/kotlin-mode@ab61099 -> Emacs-Kotlin-Mode-Maintainers/kotlin-mode@8e6dd57 - :lang latex emacs-straight/adaptive-wrap@1810c0e -> emacs-straight/adaptive-wrap@319db64 emacs-straight/auctex@6abf890 -> emacs-straight/auctex@59e251c iyefrat/evil-tex@bb01576 -> iyefrat/evil-tex@06234c9 - :lang lean leanprover/lean-mode@65b55b1 -> leanprover/lean-mode@6b43776 - :lang ledger ledger/ledger-mode@7d78645 -> ledger/ledger-mode@805507f - :lang markdown Fanael/edit-indirect@935ded3 -> Fanael/edit-indirect@bdc8f54 jrblevin/markdown-mode@fa9fa20 -> jrblevin/markdown-mode@ef2cb4d seagle0128/grip-mode@52768a0 -> seagle0128/grip-mode@281ada2 - :lang nix NixOS/nix-mode@a00b3f7 -> NixOS/nix-mode@0cf1ea1 - :lang ocaml ocaml-ppx/ocamlformat@27a49cc -> ocaml-ppx/ocamlformat@cd0eaa8 ocaml/dune@66cfb3a -> ocaml/dune@daea74e - :lang org abo-abo/org-download@768716b -> abo-abo/org-download@67b3c74 bastibe/org-journal@a6378dc -> bastibe/org-journal@a2728e2 dzop/emacs-jupyter@785edbb -> dzop/emacs-jupyter@360cae2 emacs-straight/org-mode@a1e5bee -> emacs-straight/org-mode@220f2b0 hniksic/emacs-htmlize@86f22f2 -> hniksic/emacs-htmlize@4920510 integral-dw/org-superstar-mode@1748185 -> integral-dw/org-superstar-mode@94f35c2 oer/org-re-reveal@c548e23 -> oer/org-re-reveal@7fe39d5 org-roam/company-org-roam@5d7ccd9 -> org-roam/company-org-roam@1132663 org-roam/org-roam@0aa0a7c -> org-roam/org-roam@c33867e - :lang php emacs-php/php-mode@4345dfd -> emacs-php/php-mode@f4c7c69 jwiegley/emacs-async@86aef2c -> jwiegley/emacs-async@36a1015 - :lang plantuml skuro/plantuml-mode@ea45a13 -> skuro/plantuml-mode@5889166 - :lang python cython/cython@0208bf2 -> cython/cython@fcfd16c emacs-lsp/lsp-pyright@3cf2e8f -> emacs-lsp/lsp-pyright@9603dda emacs-lsp/lsp-python-ms@7a502e6 -> emacs-lsp/lsp-python-ms@a884a9a necaris/conda.el@9d02130 -> necaris/conda.el@9f7eea1 wbolster/emacs-python-pytest@6a3b4e5 -> wbolster/emacs-python-pytest@fc056fa - :lang racket greghendershott/racket-mode@29afd25 -> greghendershott/racket-mode@c55fd70 - :lang rest pashky/restclient.el@e8ca809 -> pashky/restclient.el@ac8aad6 - :lang ruby nonsequitur/inf-ruby@f3c927c -> nonsequitur/inf-ruby@9f0f79f - :lang rust brotzeit/rustic@0ec0688 -> brotzeit/rustic@75b9920 - :lang scala emacs-lsp/lsp-metals@3d4d4b7 -> emacs-lsp/lsp-metals@039aa72 hvesalai/emacs-sbt-mode@633a315 -> hvesalai/emacs-sbt-mode@4358ed8 hvesalai/emacs-scala-mode@46bb948 -> hvesalai/emacs-scala-mode@1d08e88 - :lang scheme flatwhatson/flycheck-guile@f37b614 -> flatwhatson/flycheck-guile@2940f16 jaor/geiser@0c86289 -> jaor/geiser@adc5c4a - :lang solidity ethereum/emacs-solidity@022b315 -> ethereum/emacs-solidity@d166a86 - :lang swift emacs-lsp/lsp-sourcekit@04d75b6 -> emacs-lsp/lsp-sourcekit@130f7a8 swift-emacs/swift-mode@2ab9ea1 -> swift-emacs/swift-mode@d266fbd - :lang web fxbois/web-mode@a2badd0 -> fxbois/web-mode@60ffd87 - :lang yaml yoshiki/yaml-mode@cecf4b1 -> yoshiki/yaml-mode@68fecb5 + :term - :term term manateelazycat/multi-term@7307ddd -> manateelazycat/multi-term@017c77c + :tools - :tools ansible yoshiki/yaml-mode@34648f2 -> yoshiki/yaml-mode@68fecb5 - :tools debugger emacs-lsp/dap-mode@85a6163 -> emacs-lsp/dap-mode@4b18543 realgud/realgud@5b0ed08 -> realgud/realgud@332d136 tumashu/posframe@6d604a7 -> tumashu/posframe@7b92a54 - :tools docker Silex/docker.el@d6233bd -> Silex/docker.el@3773112 - :tools editorconfig editorconfig/editorconfig-emacs@9a73ff7 -> editorconfig/editorconfig-emacs@9bc1343 - :tools ein millejoh/emacs-ipython-notebook@ccbed30 -> millejoh/emacs-ipython-notebook@99a4718 - :tools lookup jacktasia/dumb-jump@b815731 -> jacktasia/dumb-jump@0d74b2f - :tools lsp emacs-lsp/helm-lsp@5c960e7 -> emacs-lsp/helm-lsp@4263c96 emacs-lsp/lsp-mode@edb8119 -> emacs-lsp/lsp-mode@4145a70 emacs-lsp/lsp-ui@1f3e970 -> emacs-lsp/lsp-ui@c39ae37 joaotavora/eglot@fb6b17e -> joaotavora/eglot@5f873d2 - :tools magit magit/forge@2c48746 -> magit/forge@feee7e2 magit/magit@798aff5 -> magit/magit@321214c - :tools pass zx2c4/password-store@07b169e -> zx2c4/password-store@06f4999 - :tools rgb emacs-straight/rainbow-mode@f780ddb -> emacs-straight/rainbow-mode@fdff98b + :ui - :ui doom hlissner/emacs-doom-themes@8a5538e -> hlissner/emacs-doom-themes@24023de - :ui fill-column laishulu/hl-fill-column@43cb3c3 -> laishulu/hl-fill-column@5782a91 - :ui hl-todo tarsius/hl-todo@3bba459 -> tarsius/hl-todo@0598b98 - :ui hydra abo-abo/hydra@87873d7 -> abo-abo/hydra@112e689 - :ui indent-guides DarthFennec/highlight-indent-guides@1b12c7b -> DarthFennec/highlight-indent-guides@a4f7714 - :ui modeline seagle0128/doom-modeline@881e099 -> seagle0128/doom-modeline@ffbaaee - :ui tabs ema2159/centaur-tabs@9114ef4 -> ema2159/centaur-tabs@7e0332b - :ui treemacs Alexander-Miller/treemacs@644e940 -> Alexander-Miller/treemacs@027e03b - :ui window-select abo-abo/ace-window@7003c88 -> abo-abo/ace-window@c7cb315
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 Markdown’s formatting syntax. You can try it out, right now, using the online Dingus.
The overriding design goal for Markdown’s 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 it’s been marked up with tags or formatting instructions. While Markdown’s syntax has been influenced by several existing text-to-HTML filters, the single biggest source of inspiration for Markdown’s 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
- markdownlint (
npm install markdownlint
) - mdl (
gem install mdl
)
- markdownlint (
-
General (natural language)
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:
- John Gruber's original perl script
- The C implementation called discount, by David Parsons
- 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")