doomemacs/modules/lang/markdown
Henrik Lissner ba8bf1ab9f
bump: :lang
Alexander-Miller/company-shell@a77f4de759 -> Alexander-Miller/company-shell@5f959a63a6
Emacs-Kotlin-Mode-Maintainers/kotlin-mode@3e0c34087b -> Emacs-Kotlin-Mode-Maintainers/kotlin-mode@fddd747e5b
FStarLang/fstar-mode.el@c95c2a61a6 -> FStarLang/fstar-mode.el@ab0697b947
Fuco1/sphinx-mode@9d4075c106 -> Fuco1/sphinx-mode@77ca51adf9
Groovy-Emacs-Modes/groovy-emacs-modes@bf732d367b -> Groovy-Emacs-Modes/groovy-emacs-modes@c612ac1e9f
Khady/merlin-eldoc@db7fab1edd -> Khady/merlin-eldoc@bf8edc63d8
OVYA/php-cs-fixer@7e12a1af5d -> OVYA/php-cs-fixer@efe4368d89
ProofGeneral/PG@e1e29acb04 -> ProofGeneral/PG@8416875696
Wilfred/elisp-def@dfca043ec0 -> Wilfred/elisp-def@1d2e88a232
agda/agda@b612cabaae -> agda/agda@bb7603d197
amake/flutter.el@08138f8c95 -> amake/flutter.el@edd3f5eb3f
ananthakumaran/exunit.el@0715c2dc2d -> ananthakumaran/exunit.el@e0a8c2b81f
beancount/beancount-mode@ea8257881b -> beancount/beancount-mode@519bfd868f
bradyt/dart-mode@3bac14200f -> bradyt/dart-mode@9c846769ab
brantou/emacs-go-tag@59b243f2fa -> brantou/emacs-go-tag@33f2059551
cdominik/cdlatex@8e963c6853 -> cdominik/cdlatex@ac024ce293
clojure-emacs/cider@92c1b6de20 -> clojure-emacs/cider@1ed5163433
clojure-emacs/clj-refactor.el@db89b55871 -> clojure-emacs/clj-refactor.el@b5abe655e5
clojure-emacs/clojure-mode@414157c3e5 -> clojure-emacs/clojure-mode@3453cd229b
cpitclaudel/company-coq@a6e349e013 -> cpitclaudel/company-coq@5affe7a96a
crystal-lang-tools/emacs-crystal-mode@96a8058205 -> crystal-lang-tools/emacs-crystal-mode@9bfb9f0f56
davazp/graphql-mode@9740e4027b -> davazp/graphql-mode@1437b79006
diml/utop@bbd9a6ed45 -> diml/utop@ace481388a
dominikh/go-mode.el@3273fcece5 -> dominikh/go-mode.el@166dfb1e09
elixir-editors/emacs-elixir@e0d0466d83 -> elixir-editors/emacs-elixir@7641373f05
emacs-csharp/csharp-mode@856ecbc0a7 -> emacs-csharp/csharp-mode@02c61c219b
emacs-ess/ESS@39eba28300 -> emacs-ess/ESS@8b4664e4a7
emacs-lsp/lsp-dart@fda433671f -> emacs-lsp/lsp-dart@3db9f93c83
emacs-lsp/lsp-java@0968038b9a -> emacs-lsp/lsp-java@dbe448a886
emacs-lsp/lsp-sourcekit@f877659bab -> emacs-lsp/lsp-sourcekit@468c641e35
emacs-php/composer.el@7c7f89df22 -> emacs-php/composer.el@5af1707fef
emacs-php/php-mode@5f26bec865 -> emacs-php/php-mode@fb11df8268
emacs-php/phpactor.el@34195f1533 -> emacs-php/phpactor.el@9440005814
emacs-php/psysh.el@21250984ad -> emacs-php/psysh.el@796b26a5cd
emacs-straight/auctex@830e40a063 -> emacs-straight/auctex@3929d5408b
emacs-straight/csv-mode@43f6106f0d -> emacs-straight/csv-mode@d190a479b4
emacs-straight/rainbow-mode@949166cc01 -> emacs-straight/rainbow-mode@8e96388fb4
emacs-straight/sml-mode@0338e9729b -> emacs-straight/sml-mode@5426ff4738
emacsmirror/auctex-latexmk@4d35352265 -> emacsmirror/auctex-latexmk@b00a95e6b3
emacsmirror/paredit@e4a67f4f23 -> emacsmirror/paredit@9a2c4b37fc
emacsorphanage/macrostep@424e3734a1 -> emacsorphanage/macrostep@75ecd04121
erlang/otp@9ba9f6e60d -> erlang/otp@be7109f43b
ethereum/emacs-solidity@20fb77e089 -> ethereum/emacs-solidity@ddb4a901c3
factor/factor@1aeafdb87b -> factor/factor@76ac65649d
fsharp/emacs-fsharp-mode@c1e58c61f9 -> fsharp/emacs-fsharp-mode@09fec6c91f
fxbois/web-mode@efa853e5cf -> fxbois/web-mode@df97ab62c9
godotengine/emacs-gdscript-mode@4badcf6a0c -> godotengine/emacs-gdscript-mode@d392e8aa7e
greghendershott/racket-mode@af9b760e7b -> greghendershott/racket-mode@947d9806ee
hhvm/hack-mode@a522f61c08 -> hhvm/hack-mode@26f06ffe82
idris-hackers/idris-mode@65d6db1b75 -> idris-hackers/idris-mode@c96f45d1b8
immerrr/lua-mode@5a9bee8d5f -> immerrr/lua-mode@ad639c62e3
iyefrat/evil-tex@0fa85c3fc8 -> iyefrat/evil-tex@3e0a26b91a
jcollard/elm-mode@d4e434fa18 -> jcollard/elm-mode@5797500d74
joaotavora/sly@4513c382f0 -> joaotavora/sly@fa70fc8ab1
jorgenschaefer/emacs-buttercup@ceedad5efa -> jorgenschaefer/emacs-buttercup@07a52c9969
jrblevin/markdown-mode@1f709778ac -> jrblevin/markdown-mode@c765b73b37
jschaf/powershell.el@ce1f0ae0b2 -> jschaf/powershell.el@f2da15857e
jwiegley/emacs-async@c78bab7506 -> jwiegley/emacs-async@71cc50f27f
leanprover/lean-mode@c1c68cc946 -> leanprover/lean-mode@362bc6fa3e
ledger/ledger-mode@b55384d9cd -> ledger/ledger-mode@4b32f70173
midnightSuyama/shader-mode@d7dc8d0d6f -> midnightSuyama/shader-mode@fe5a1982ba
necaris/conda.el@667968184e -> necaris/conda.el@28f51e49fd
nlamirault/phpunit.el@fe6bc91c3b -> nlamirault/phpunit.el@4a36906344
ocaml-ppx/ocamlformat@9cbd8150c2 -> ocaml-ppx/ocamlformat@1ad4bdba9e
ocaml/dune@3df932f7f9 -> ocaml/dune@f5a5a9c17b
ocaml/merlin@be753d9412 -> ocaml/merlin@306af713e2
ocaml/tuareg@ad8a688b7e -> ocaml/tuareg@53ce2fdfdd
pashky/restclient.el@9e2cfa8652 -> pashky/restclient.el@0ba72816f9
polymode/polymode@2094c92403 -> polymode/polymode@15b6c1e94a
purcell/flycheck-package@615c1ed8c6 -> purcell/flycheck-package@3a6aaed29f
purescript-emacs/purescript-mode@0acd1af446 -> purescript-emacs/purescript-mode@cf113871f9
s-kostyaev/go-gen-test@35df36dcd5 -> s-kostyaev/go-gen-test@f84f4177af
seagle0128/grip-mode@6d6ddbe0af -> seagle0128/grip-mode@5809fb62f6
sebasmonia/sharper@96edd4a1db -> sebasmonia/sharper@496e90e337
smihica/emmet-mode@6b2e554f7f -> smihica/emmet-mode@63b6932603
swift-emacs/swift-mode@f4529efa45 -> swift-emacs/swift-mode@1244ee48de
technomancy/fennel-mode@5664357349 -> technomancy/fennel-mode@52da9715b0
vspinu/company-math@45778f5731 -> vspinu/company-math@3eb006874e
whirm/flycheck-kotlin@bf1b398bdd -> whirm/flycheck-kotlin@a2a6abb9a7
wwwjfy/emacs-fish@a7c953b149 -> wwwjfy/emacs-fish@d04478c0ab
xuchunyang/elisp-demos@01c301b516 -> xuchunyang/elisp-demos@792be709c8
yoshiki/yaml-mode@535273d5a1 -> yoshiki/yaml-mode@3fcb36d603
ziglang/zig-mode@aa20d630b8 -> ziglang/zig-mode@9c5e41d6a0
2023-02-21 19:32:39 -05:00
..
autoload.el Fix #4407: regression in +markdown-flyspell-word-p 2020-12-13 00:21:10 -05:00
config.el refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
doctor.el refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
packages.el bump: :lang 2023-02-21 19:32:39 -05:00
README.org docs: change link format 2022-10-05 01:01:19 +02:00

:lang markdown

Description   unfold

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
Enable grip support (on <localleader> p), to provide live github-style previews of your markdown (or org) files.

Hacks

  • doom-package:flyspell has been configured not to spell check in code blocks, links, HTML tags or references.

TODO Changelog

This module does not have a changelog yet.

Installation

Enable this module in your doom! block.

This module requires:

  • A linter (requires doom-module::checkers syntax)
  • A markdown 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 compiler

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

TODO Usage

🔨 This module's usage documentation is incomplete. Complete it?

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 doom-module:+grip.

Configuration

🔨 This module's configuration documentation is incomplete. Complete it?

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")

Troubleshooting

There are no known problems with this module. Report one?

Frequently asked questions

This module has no FAQs yet. Ask one?

TODO Appendix

🔨 This module has no appendix yet. Write one?