Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
2244 lines (1833 sloc) 76.4 KB
\input texinfo @c -*-texinfo-*-
@comment %**start of header
@setfilename markdown-mode.info
@settitle Emacs Markdown Mode
@comment created under Texinfo 6.4
@set PACKAGE @code{markdown-mode}
@set AUTHOR Jason R. Blevins, et al.
@set VERSION 2.2
@set RELEASED May 26, 2017
@set SWCYEARS 2007-2017
@set PACURL @uref{http://jblevins.org/projects/markdown-mode/}
@set SRCURL @uref{https://github.com/jrblevin/markdown-mode}
@set PACSRC @code{markdown-mode.el}
@set TITLE @value{PACKAGE} Manual
@settitle @value{TITLE}
@set DESCRIPTION This manual describes how to install and use
@value{PACKAGE}, an Emacs package for working with markdown-format files.
@documentdescription
@value{DESCRIPTION}
@end documentdescription
@set EDITION @value{VERSION}.a
@set EDITOR Daniel Birket
@set DOCURL @uref{https://github.com/daniel-birket/markdown-mode-texinfo}
@set TEXINFO @cite{@acronym{GNU} Texinfo v6.4}
@set EMACS @cite{Emacs v25.2.1}
@set PANDOC @cite{Pandoc v1.19.2.1}
@comment %**end of header
@syncodeindex vr fn
@syncodeindex ky cp
@copying
@cindex copyright (manual)
Copyright @copyright{} 2017 Daniel Birket.
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the @acronym{GNU} Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts, and
with no Back-Cover Texts. A copy of the license is included in the
section entitled @cite{@acronym{GNU} Free Documentation License}.
@end quotation
This is the @cite{@value{TITLE}}, edition @value{EDITION}, by
@value{EDITOR}, updated @today{}, which describes how to install and
use the Emacs package @value{PACKAGE}, version @value{VERSION},
released @value{RELEASED}, which was written by and Copyright
@copyright{} @value{SWCYEARS} @value{AUTHOR} (See @value{PACURL})
@ifinfo
This @command{info}
@end ifinfo
@iftex
This typeset
@end iftex
@ifhtml
This @acronym{HTML}
@end ifhtml
@ifdocbook
This
@end ifdocbook
document was composed using @value{EMACS} (Richard
M. Stallman, et al. See @uref{https://www.gnu.org/software/emacs/})
and compiled from @file{.texi} source with @value{TEXINFO} (Richard
M. Stallman, et al. See @uref{https://www.gnu.org/software/texinfo/})
@iftex
and typeset using @TeX{} (Donald Knuth, et al. See
@uref{https://www.gnu.org/software/texinfo/})
@end iftex
@ifdocbook
to @command{docbook} format (@acronym{OASIS} See @uref{http://docbook.org}, then
converted to this format using @value{PANDOC} (John MacFarlane, et
al@. @uref{http://pandoc.org}) This format has no index.
@end ifdocbook
@end copying
@dircategory Emacs editing modes
@direntry
* Markdown Mode: (markdown-mode). Emacs mode for markdown text.
@end direntry
@titlepage
@title @value{TITLE}
@subtitle edition @value{EDITION}
@subtitle for @value{PACKAGE} version @value{VERSION}
@author @value{PACKAGE} by @value{AUTHOR}
@author manual by @value{EDITOR}
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage
@contents
@ifnotdocbook
@ifnottex
@node Top
@top @value{TITLE}
@value{DESCRIPTION}
@ifinfo
In @command{info}, type @kbd{3} to jump to the chapter on using
@code{markdown-mode}.
@end ifinfo
@insertcopying
@end ifnottex
@end ifnotdocbook
This manual is based upon the comments and doc strings in the
@value{PACSRC} source code, which begins with:
@cindex copyright (software)
@lisp
;;; markdown-mode.el --- Major mode for Markdown-formatted text -*- lexical-binding: t; -*-
;; Copyright (C) 2007-2017 Jason R. Blevins <jrblevin@@sdf.org>
@dots{}
;; Author: Jason R. Blevins <jrblevin@@sdf.org>
;; Maintainer: Jason R. Blevins <jrblevin@@sdf.org>
;; Created: May 24, 2007
;; Version: 2.2
;; Package-Requires: ((emacs "24") (cl-lib "0.5"))
;; Keywords: Markdown, GitHub Flavored Markdown, itex
;; URL: http://jblevins.org/projects/markdown-mode/
;; This file is not part of GNU Emacs.
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
@end lisp
@menu
* Introduction:: About @command{markdown} & @code{markdown-mode}.
* Installing:: How to Download & Install @code{markdown-mode}.
* Using @code{markdown-mode}:: How to Use @code{markdown-mode}.
* Using @code{gfm-mode}:: How to Use @code{gfm-mode}
* Customizing:: How to Customize @code{markdown-mode} (Variables).
* Development:: For all those that contribute, past or future.
Appendices:
* @acronym{GNU} General Public License 2.0::
* @acronym{GNU} Free Documentation License::
* Functions & Variables::
* Keys and Concepts::
@end menu
@node Introduction
@chapter Introduction
@cindex introduction
This manual describes how to install and use @code{markdown-mode}, an
Emacs package for working with markdown-formatted text. The features
of this package assist the user to insert and manipulate markup syntax
compatible with the external @command{markdown} command and to use it
to convert the markdown-formatted text into @acronym{HTML}-formatted
text.
The package implements two Emacs @emph{major modes}:
@itemize @bullet
@item
@code{markdown-mode}, for editing standard markdown text.@*
@xref{Using @code{markdown-mode}}.
@item
@code{gfm-mode}, for editing GitHub-flavored markdown text.@*
@xref{Using @code{gfm-mode}}.
@end itemize
@pindex markdown
The popular Unix filter command @command{markdown}, created by John
Gruber in 2004 in collaboration with Aaron Swartz, provides an easy
way to produce styled text by first editing simply-formatted text
files and then converting that text to @acronym{HTML}. This approach
uses a programmer's familiar edit-compile workflow, is compatible with
source-code management tools and separates composition from
formatting, allowing the writer to focus on writing without the
distractions of WYSIWYG editors. It is described at
@uref{http://daringfireball.net/projects/markdown/}.
@command{markdown} has been re-implemented by various authors and with
various additional features and syntax, including
@command{multimarkdown}, @command{pandoc}, @command{python markdown}
and many others.
GitHub Flavored Markdown is the dialect of markdown used by GitHub. It
is described at
@uref{http://github.github.com/github-flavored-markdown/}.
@pindex Emacs
The powerful text editor, Emacs, was created in 1976 by Richard
Stallman. It is highly customizable and has 40 years of other
extensions. @cite{@acronym{GNU} Emacs} is documented at
@uref{https://www.gnu.org/software/emacs/}. @cite{XEmacs} is
documented at @uref{http://www.xemacs.org}.
@node Installing
@chapter Installing
@cindex installing
@cindex downloading
This chapter describes how to install @code{markdown-mode} for
everyday use. To install the development version for testing, see
@ref{Development Version}.
@menu
* Recommended Installation:: Install with @code{package.el}.
* Manual Installation:: Install the hard way.
* Managed Loading:: Manage with @code{use-package.el}.
* OS Package Managers:: Install with OS Package Managers.
@end menu
@node Recommended Installation
@section Recommended Installation
@cindex recommended installation
@cindex installation, the easy way
@cindex @code{package.el}, installing with
@cindex MELPA Stable, installing from
@findex package.el
The recommended way to install the package @code{markdown-mode} is to
use @code{package.el}, which has been integrated with Emacs since
version 24. (It is included in version 23, but must be initialized.)
@findex add-to-list
@vindex package-archives
To install @code{markdown-mode}, first add the MELPA Stable archive to
the list of archives used by @code{package.el} by adding the following
lines to your @file{.emacs}, @file{init.el}, or other Emacs startup
file and restarting Emacs (or just evaluate the statements):
@lisp
(require 'package)
(add-to-list 'package-archives
'("melpa-stable" . "https://stable.melpa.org/packages/"))
(package-initialize)
@end lisp
@findex package-install
Then, after restarting Emacs (or otherwise evaluating the above
statements), type the following command:
@kbd{M-x package-install @key{RET} markdown-mode @key{RET}}.
When installed using the package manager this way, the major modes
@code{markdown-mode} and @code{gfm-mode} will be auto-loaded, and
@code{markdown-mode} will be used automatically for file names ending
in either @file{.md} or @file{.markdown}.
You may browse the 1500+ other Emacs packages in the MELPA-Stable
archive at @uref{http://stable.melpa.org/} or by typing @kbd{M-x
list-packages @key{RET}} (after adding it to your package-archives
list, above).
@node Manual Installation
@section Manual Installation
@cindex manual installation
@cindex installation, the hard way
You can manually download and install markdown-mode.
First, download @code{markdown-mode} from one of:
@itemize @bullet
@item @uref{http://jblevins.org/projects/markdown-mode/markdown-mode.el}
@item @uref{http://stable.melpa.org/}
@end itemize
and save the file where Emacs can find it in a directory listed in your
@code{load-path} like @file{/usr/local/share/emacs/site-lisp}.
@findex autoload
@findex add-to-list
@vindex auto-mode-alist
Then configure @code{markdown-mode} and @code{gfm-mode}
to load automatically by adding the following to your init file:
@lisp
(autoload 'markdown-mode
"markdown-mode"
"Major mode for editing Markdown files" t)
(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
(autoload 'gfm-mode
"markdown-mode"
"Major mode for editing GitHub Flavored Markdown files" t)
(add-to-list 'auto-mode-alist '("README\\.md\\'" . gfm-mode))
@end lisp
@pindex cl-lib
This package, @code{markdown-mode.el}, depends on the package
@code{cl-lib}, which has been bundled with @acronym{GNU} Emacs since
version 24.3. If you use @acronym{GNU} Emacs version 24.1 or 24.2 and
lack @code{cl-lib}, you should install @code{cl-lib} using
@code{package.el}. To install @code{cl-lib} type:
@kbd{M-x package-install @key{RET} cl-lib @key{RET}}
@node Managed Loading
@section Managed Loading
@cindex managed loading
@cindex @code{use-package}, loading with
@findex use-package
If you manage loading packages with @code{use-package} then you can
automatically install and configure @code{markdown-mode} by adding a
declaration such as this one to your init file (This is an
example. Please adjust these settings as desired):
@lisp
(use-package markdown-mode
:ensure t
:commands (markdown-mode gfm-mode)
:mode (("README\\.md\\'" . gfm-mode)
("\\.md\\'" . markdown-mode)
("\\.markdown\\'" . markdown-mode))
:init (setq markdown-command "multimarkdown"))
@end lisp
@code{use-package} is documented at
@uref{https://github.com/jwiegley/use-package}
@node OS Package Managers
@section OS Package Managers
@cindex OS package managers
@cindex Linux package, downloading
You may download @code{markdown-mode} in packages for use with several
OS package managers. Most OS packages do not contain the latest
stable version. (Please notify the package maintainer if you download
one that does not.) Note that OS package managers generally do NOT
byte-compile or configure @code{markdown-mode} to load automatically.
Please see the instructions under @ref{Manual Installation} if
@code{markdown-mode} does not load automatically.
@table @asis
@item Debian Linux
@cindex Debian package, downloading
@uref{https://packages.debian.org/sid/lisp/elpa-markdown-mode}
Note: As of Sep-2016, this package contains @code{markdown-mode}
version 2.1. It is unknown if the package manager compiles or
configures @code{markdown-mode}.
@uref{http://packages.debian.org/emacs-goodies-el}
Note: @cite{emacs-goodies-el} is a collection of Emacs programs. The
version of @code{markdown-mode} included in it is unknown.
@item Ubuntu Linux
@cindex Ubuntu @command{apt} package, downloading
@pindex apt
At the terminal prompt, type:
@cartouche
@example
$ sudo apt update
$ apt show elpa-markdown-mode
Package: elpa-markdown-mode
@dots{}
Source: markdown-mode
Version: 2.1-1
@dots{}
Description-en: mode for editing Markdown-formatted text
files in @acronym{GNU} Emacs. The mode provides syntax highlighted,
and keyboard shortcuts for editing, compiling and previewing
Markdown.
@dots{}
Homepage: http://jblevins.org/projects/markdown-mode/
@dots{}
$ sudo apt install elpa-markdown-mode
@end example
@end cartouche
@item RedHat and Fedora Linux
@cindex Redhat package, downloading
@cindex Fedora package, downloading
@uref{https://apps.fedoraproject.org/packages/emacs-goodies}
Note: @cite{emacs-goodies} is a collection of Emacs programs. The
version of @code{markdown-mode} that it includes is unknown.
This package is maintained by @email{sagarun@@fedoraproject.org}
@item NetBSD
@cindex NetBSD package, downloading
@uref{http://pkgsrc.se/textproc/markdown-mode}
Note: As of Sep-2016, this package installs and byte-compiles an
@strong{obsolete} version 2.0 (Sep-2014) of @code{markdown-mode}. You
must manually edit your startup file as described above under
@ref{Manual Installation}.
The package is maintained by @email{minskim@@NetBSD.org}.
@item FreeBSD
@cindex FreeBSD package, downloading
@uref{http://svnweb.freebsd.org/ports/head/textproc/markdown-mode.el}
Note: As of Sep-2016, this package downloads (but does not
byte-compile or configure) @code{markdown-mode} version 2.1 to
@file{/usr/local/share/emacs/site-lisp}. You must manually edit your
startup file as described above under @ref{Manual Installation}.
The package is maintained by @email{olgeni@@FreeBSD.org}
@item Macintosh MacPorts
@cindex MacPorts package, downloading
@pindex port
@uref{https://trac.macports.org/browser/trunk/dports/editors/markdown-mode.el/Portfile}
@raggedright
Note: As of Sep-2016, this package downloads (but does not
byte-compile or configure) an @strong{obsolete} version 2.0 (Sep-2014)
of @code{markdown-mode} from
@uref{git://jblevins.org/git/markdown-mode.git} to
@file{/usr/local/share/emacs/site-lisp}. You must manually edit your
startup file as described above under @ref{Manual Installation}.
@end raggedright
@item Macintosh HomeBrew
@cindex Homebrew package, installing
@pindex brew
At the terminal prompt type
@cartouche
@example
$ brew update
@dots{}
$ brew info homebrew/emacs/markdown-mode
@dots{}
$ brew install homebrew/emacs/markdown-mode
@dots{}
@end example
@end cartouche
@end table
@node Using @code{markdown-mode}
@chapter Using @code{markdown-mode}
@cindex using @code{markdown-mode}
@cindex usage
@findex markdown-mode
This chapter describes how to use @code{markdown-mode}.
@kbd{C-c} is the @code{mode-specific-command-prefix} and most of
@code{markdown-mode}'s keybindings begin with it. Under it, many
keybindings are grouped based on their function:
@table @kbd
@item @kbd{C-c C-a}
@kindex C-c C-a
@kindex C-c C-a C-h
Prefix keys for insert link commands. (@acronym{HTML} <a> tag).@*
Use @kbd{C-c C-a C-h} to list all commands in this group.@*
@xref{Links}
@item @kbd{C-c C-c}
@kindex C-c C-c
@kindex C-c C-c C-h
Prefix keys for 'compiling' markdown. ([c]ompile)@*
Use @kbd{C-c C-c C-h} to list all commands in this group.@*
@xref{Compile Commands}
@item @kbd{C-c C-i}
@kindex C-c C-i
@kindex C-c C-i C-h
Prefix keys for insert image commands. ([i]mage)@*
Use @kbd{C-c C-i C-h} to list all commands in this group.@*
@xref{Images}
@item @kbd{C-c C-s}
@kindex C-c C-s
@kindex C-c C-s C-h
Prefix keys for insert style commands. ([s]tyle)@*
Use @kbd{C-c C-s C-h} to list all commands in this group.@*
@xref{Styles}
@item @kbd{C-c C-t}
@kindex C-c C-t
@kindex C-c C-t C-h
Prefix keys for insert title/header commands. ([t]itle)@*
Use @kbd{C-c C-t C-h} to list all commands in this group.@*
@xref{Headers}
@item @kbd{C-c C-x}
@kindex C-c C-x
@kindex C-c C-x C-h
Prefix keys for manipulating lists.@*
Use @kbd{C-c C-x C-h} to list all commands in this group.@*
@xref{Lists}
@end table
Movement and shifting commands are generally associated with paired
delimiters such as @kbd{M-@{} and @kbd{M-@}}, or @kbd{C-c <} and
@kbd{C-c >}.
@findex org-mode
Outline navigation keybindings the same as in @code{org-mode}.@*
@xref{(org) Motion}
@kindex C-c C-h
You can obtain a list of most @code{markdown-mode} keybindings by
pressing @kbd{C-c C-h} or @kbd{C-h m}.
@menu
* Headers:: Work with Headers.
* Lists:: Work with Lists.
* Styles:: Work with Styles.
* Links:: Work with Links.
* Images:: Work with Images.
* Misc. Commands:: Common/Other Commands.
* Notes:: Notes.
* Compile Commands:: @command{markdown} integration.
@end menu
@node Headers
@section Headers
@cindex headers
This section describes how to work with headers and horizontal rules.
@menu
* Inserting Headers:: Inserting Headers
* Moving Headers:: Moving Single Headers
* Moving Subtrees:: Moving Entire Trees
* Navigating Headers:: Outline Navigation
* Inserting Horizontal Rules::
@end menu
@pindex setext
@pindex atx
Note: John Gruber designed @command{markdown} to handle two
pre-existing types of titles and headers: the underlined titles
supported by @command{setext} by Ian Feldman and the headers marked
with hash marks supported by @command{atx} by Aaron Swartz.
@code{markdown-mode} refers to these header styles as @command{setext}
and @command{atx} headers.
@node Inserting Headers
@subsection Inserting Headers
@cindex inserting headers
@cindex headers, insert
This subsection describes how to insert headers.
All header insertion commands use the text in the active region, if
any, as the header text. Otherwise, if the current line is not
blank, they use the text on the current line. The setext-style
(underlined) header insert commands will prompt for header text if
there is no active region and the current line is blank.
The prefix for this group of header insert commands is @kbd{C-c C-t}.
@table @asis
@item @kbd{C-c C-t h} (@code{markdown-insert-header-dwim})
@kindex C-c C-t h
@findex markdown-insert-header-dwim
This will insert or replace 'appropriate' header markup.
The level and type of the header will match the type and level of the
previous header, unless a prefix argument is used.
@kbd{C-1 C-c C-t h} through @kbd{C-6 C-c C-t h}
With a numeric prefix @kbd{C-1} to @kbd{C-6}, this inserts a header of
the given level, with the type being determined automatically (Note
that only level 1 or 2 setext headers are possible).
@kbd{C-u C-c C-t h} and @kbd{C-u C-u C-c C-t h}
With a @kbd{C-u} prefix, this promotes the header by one level. With a
@kbd{C-u C-u} prefix, this demotes the header by one level.
When there is an active region, this will use it for the header text.
When the point is at an existing header, it will change the type and
level according to the rules above. Otherwise, if the line is not
empty, it will create a header using the text on the current line as
the header text. Finally, if the point is on a blank line, it will
insert empty header markup (atx) or prompt for text (setext).
@item @kbd{C-c C-t H} (@code{markdown-insert-header-setext-dwim})
@kindex C-c C-t H
@findex markdown-insert-header-setext-dwim
This will insert setext-style (underlined) headers when possible. (Note
that only level 1 or 2 setext headers are possible).
@kbd{C-1 C-c C-t H} inserts level-one setext-style headers.
@kbd{C-2 C-c C-t H} inserts level-two setext-style headers.
@kbd{C-u C-c C-t H} and @kbd{C-u C-u C-c C-t H} insert higher or lower
level setext-style headers, if possible.
@end table
To insert a specific style and level of header use one of the
commands below. If the point is at a header, these commands will
replace the existing markup in order to update the level and/or type
of the header.
@strong{atx-style (#) Headers}
@table @asis
@item @kbd{C-c C-t 1} (@code{markdown-insert-header-atx-1})
@kindex C-c C-t 1
@findex markdown-insert-header-atx-1
This inserts a first-level atx-style (#) header, using the text in the
active region or the text on the current line, if any.
@item @kbd{C-c C-t 2} (@code{markdown-insert-header-atx-2})
@kindex C-c C-t 2
@findex markdown-insert-header-atx-2
This inserts a second-level atx-style (##) header, using the text in the
active region or the text on the current line, if any.
@item @kbd{C-c C-t 3} (@code{markdown-insert-header-atx-3})
@kindex C-c C-t 3
@findex markdown-insert-header-atx-3
This inserts a third-level atx-style (###) header, using the text in the
active region or the text on the current line, if any.
@item @kbd{C-c C-t 4} (@code{markdown-insert-header-atx-4})
@kindex C-c C-t 4
@findex markdown-insert-header-atx-4
This inserts a fourth-level atx-style (####) header, using the text in the
active region or the text on the current line, if any.
@item @kbd{C-c C-t 5} (@code{markdown-insert-header-atx-5})
@kindex C-c C-t 5
@findex markdown-insert-header-atx-5
This inserts a fifth-level atx-style (#####) header, using the text in the
active region or the text on the current line, if any.
@item @kbd{C-c C-t 6} (@code{markdown-insert-header-atx-6})
@kindex C-c C-t 6
@findex markdown-insert-header-atx-6
This inserts a sixth-level atx-style (######) header, using the text in the
active region or the text on the current line, if any.
@end table
@strong{setext-style (underlined) Headers}
@table @asis
@item @kbd{C-c C-t !} or @kbd{C-c C-t t} (@code{markdown-insert-header-setext-1})
@kindex C-c C-t t
@kindex C-c C-t !
@findex markdown-insert-header-setext-1
This inserts a first-level setext-style (underlined) header, using the
text in the active region or the text on the current line, if any. The
@kbd{C-c C-t t} keybinding is depreciated.
@item @kbd{C-c C-t @@} or @kbd{C-c C-t s} (@code{markdown-insert-header-setext-2})
@kindex C-c C-t s
@kindex C-c C-t @@
@findex markdown-insert-header-setext-2
This inserts a second-level setext-style (underlined) header, using the
text in the active region or the text on the current line, if any. The
@kbd{C-c C-t s} keybinding is depreciated.
@end table
The prefix for this group of header insert commands is @kbd{C-c C-c}.
@table @asis
@item @kbd{C-c C-]} (@code{markdown-complete})
@kindex C-c C-]
@findex markdown-complete
@cindex header, complete
This completes the markup at the point, if it is determined to be
incomplete.
For example, it ensures that the underline portion of a setext header
is the same length as the heading text, or that the number of leading
and trailing hash marks of an atx header are equal and that there is
no extra white space in the header text.
@item @kbd{C-c C-c ]} (@code{markdown-complete-buffer})
@kindex C-c C-c ]
@findex markdown-complete-buffer
@cindex header, complete all
This completes all headers and normalizes all horizontal rules in the
buffer.
@end table
@node Moving Headers
@subsection Moving Headers
@cindex moving headers
@cindex move single headers
To promote or demote both list items and headers: @xref{Promote/Demote Items}.
@node Moving Subtrees
@subsection Moving Subtrees
@cindex moving subtrees
@cindex move list trees
@cindex move header trees
Entire subtrees of atx headings can be promoted and demoted with
@kbd{M-S-@key{LEFT}} and @kbd{M-S-@key{RIGHT}}, which mirror the
bindings for promotion and demotion of list items. Similarly, subtrees
can be moved up and down with @kbd{M-S-@key{UP}} and
@kbd{M-S-@key{DOWN}}.
Please note the following "boundary" behavior for promotion and
demotion. Any level-six headings will not be demoted further (i.e.,
they remain at level six, since Markdown and HTML define only six
levels) and any level-one headings will promoted away entirely (i.e.,
heading markup will be removed, since a level-zero heading is not
defined).
@table @asis
@item @kbd{M-S-@key{UP}} (@code{markdown-move-subtree-up})
@kindex M-S-@key{UP}
@findex markdown-move-subtree-up
@cindex move a subtree up
This will move the heading at point and the associated sub-tree of
sub-headings and text up above the previous heading of the same level.
@item @kbd{M-S-@key{DOWN}} (@code{markdown-move-subtree-down})
@kindex M-S-@key{DOWN}
@findex markdown-move-subtree-down
@cindex move a subtree down
This will move the heading at point and the associated sub-tree of
sub-headings and text down below the next heading of the same level.
@item @kbd{M-S-@key{LEFT}} (@code{markdown-promote-subtree})
@kindex M-S-@key{LEFT}
@findex markdown-promote-subtree
@cindex promote a subtree
This command will promote the heading at point and the associated
sub-tree of sub-headings and text to the lower (more inclusive) level
to the left.
@item @kbd{M-S-@key{RIGHT}} (@code{markdown-demote-subtree})
@kindex M-S-@key{RIGHT}
@findex markdown-demote-subtree
@cindex demote a subtree
This command will promote the heading at point and the associated
sub-tree of sub-headings and text to the higher (less inclusive) level
to the right.
@end table
@node Navigating Headers
@subsection Navigating Headers
@cindex navigating headers
@cindex header, navigating
@cindex outlining
@findex org-mode
This subsection describes how to navigate among headers and collapse
and expand header sections. These commands are similar to the
navigation commands in @code{outline-mode}.
@table @asis
@item @kbd{C-c C-n} (@code{markdown-next-visible-heading})
@kindex C-c C-n
@findex markdown-next-visible-heading
This will move point to the next visible heading line (of any level).
@item @kbd{C-c C-p} (@code{markdown-previous-visible-heading})
@kindex C-c C-p
@findex markdown-previous-visible-heading
This will move point to the previous visible heading line (of any level).
@item @kbd{C-c C-f} (@code{markdown-forward-same-level})
@kindex C-c C-f
@findex markdown-forward-same-level
This will move point to the next visible heading line at the same
level as the heading currently at point.
@item @kbd{C-c C-b} (@code{markdown-backward-same-level})
@kindex C-c C-b
@findex markdown-backward-same-level
This will move point to the previous visible heading line at the same
level as the heading currently at point.
@item @kbd{C-c C-u} (@code{markdown-up-heading})
@kindex C-c C-u
@findex markdown-up-heading
This will move point up to a lower-level (more inclusive) visible
heading than the heading currently at point.
@end table
@node Inserting Horizontal Rules
@subsection Inserting Horizontal Rules
@cindex inserting horizontal rules
@cindex horizontal rule, insert
@cindex rule, insert
This subsection describes how to insert horizontal rules.
@table @asis
@item @kbd{C-c -} (@code{markdown-insert-hr})
@kindex C-c -
@findex markdown-insert-hr
This will insert (or replace) a horizontal rule.
Without a prefix argument, it will use the first horizontal rule in
the @code{markdown-hr-strings} list.
@kbd{C-u C-c -} will use the last (sixth) horizontal rule in the list.
@kbd{C-1 C-c -} through @kbd{C-6 C-c -} will use the horizontal rule
string selected by the number.
@end table
@node Lists
@section Lists
@cindex lists
This section describes how to insert and renumber list items and move
them up and down.
@menu
* Inserting List Items:: Insert & Renmber Lists
* Promote/Demote List Items:: Move Items Left/Right
* Move List Items:: Move Items Up/Down
@end menu
@node Inserting List Items
@subsection Inserting List Items
@cindex inserting list items
@table @asis
@item @kbd{M-@key{RET}} or @kbd{C-c C-x m} or @kbd{C-c C-j} (@code{markdown-insert-list-item})
@kindex C-c C-j
@kindex M-@key{RET}
@findex markdown-insert-list-item
@cindex list, insert item
This inserts an appopriate new list item. It determines the
appropriate marker (one of the possible unordered list markers or the
next number in sequence for an ordered list) and indentation level by
examining nearby list items. If there is no list before or after the
point, it starts a new list. Prefix this command with @kbd{C-u} to
decrease the indentation by one level. Prefix this command with
@kbd{C-u C-u} to increase the indentation by one level.
@cindex v2.2
@code{markdown-mode} version 2.2 repurposes the @kbd{C-c C-j}
keybinding previously used for @code{markdown-jump} to match the AUCTex
keybinding for inserting list items.
@item @kbd{C-c C-c n} (@code{markdown-cleanup-list-numbers})
@kindex C-c C-c n
@findex markdown-cleanup-list-numbers
@cindex list, renumber all
This renumbers any ordered lists in the buffer that are out of
sequence.
@end table
@node Promote/Demote List Items
@subsection Promote/Demote List Items
@cindex promote/demote list items
To promote or demote both list items and headers: @xref{Promote/Demote Items}.
@node Move List Items
@subsection Move List Items
@cindex move list items
@table @asis
@item @kbd{M-@key{UP}} or @kbd{C-c C-x u} (@code{markdown-move-up})
@kindex M-@key{UP}
@kindex C-c C-x u
@findex @code{markdown-move-up}
@cindex move list item up
This command will move a list item up. It does not move headers.
@item @kbd{M-@key{DOWN}} or @kbd{C-c C-x d} (@code{markdown-move-down})
@kindex M-@key{DOWN}
@kindex C-c C-x d
@findex @code{markdown-move-down}
@cindex move list item down
This command will move a list item down. It does not move headers.
@end table
@node Styles
@section Styles
@cindex styles
This section describes how to insert style markup.
The prefix for this group of commands is @kbd{C-c C-s}.
@table @asis
@item @kbd{C-c C-s e} (@code{markdown-insert-italic})
@kindex C-c C-s e
@findex markdown-insert-italic
This inserts markup to @emph{emphasize} a region or word with
@emph{italic} face, or removes the existing italic emphasis.
If there is an active region, it makes the region italic. If the
point is at a non-italic word, it makes the word italic. If the point
is at an italic word or phrase, it removes the italic markup.
Otherwise, it simply inserts italic delimiters and place the cursor
between them.
@item @kbd{C-c C-s s} (@code{markdown-insert-bold})
@kindex C-c C-s s
@findex markdown-insert-bold
This inserts markup for @strong{strong} emphasis of a region or word
with @strong{bold} face, or removes the existing bold strong
emphasis.
If there is an active region, it makes the region bold. If the point
is at a non-italic word, it makes the word bold. If the point is at
an bold word or phrase, it removes the bold markup. Otherwise, it
simply inserts bold delimiters and place the cursor between them.
@item @kbd{C-c C-s c} (@code{markdown-insert-code})
@kindex C-c C-s c
@findex markdown-insert-code
Insert markup to make a region or word an inline code fragment.
If there is an active region, make the region an inline code fragment.
If the point is at a word, make the word an inline code fragment.
Otherwise, simply insert code delimiters and place the cursor between
them.
@item @kbd{C-c C-s k} (@code{markdown-insert-kbd})
@kindex C-c C-s k
@findex markdown-insert-kbd
@cindex v2.2
Insert markup to wrap a region or word in <kbd> tags.
If there is an active region, use the region. If the point is at a
word, use the word. Otherwise, simply insert <kbd> tags and place the
cursor between them. (@code{markdown-mode} version 2.2).
@item @kbd{C-c C-s b} (@code{markdown-insert-blockquote})
@kindex C-c C-s b
@findex markdown-insert-blockquote
This inserts block quote markup around the active region, if any, or
inserts empty block quote markup.
@item @kbd{C-c C-s C-b} (@code{markdown-blockquote-region})
@kindex C-c C-s C-b
@findex markdown-blockquote-region
This variation of the insert-blockquote function (above) always
operates on the region, regardless of whether it is active or not.
The appropriate amount of indentation, if any, is calculated
automatically given the surrounding context, but may be adjusted later
using the region indentation commands.
@item @kbd{C-c C-s p} (@code{markdown-insert-pre})
@kindex C-c C-s p
@findex markdown-insert-pre
This inserts preformatted code block markup around the active region,
if any, or inserts empty preformatted code block markup.
@item @kbd{C-c C-s C-p} (@code{markdown-pre-region})
@kindex C-c C-s C-p
@findex markdown-pre-region
This variation of the insert-pre function (above) always
operates on the region, regardless of whether it is active or not.
@end table
@node Links
@section Links
@cindex links
This section describes how to insert and work with links.
@menu
* Inserting Links:: Inserting Links
* Checking References:: Checking References
* Navigating Links:: Navigating Links
@end menu
@node Inserting Links
@subsection Inserting Links
@cindex inserting links
@cindex link, insert
The prefix for this group of commands is @kbd{C-c C-a}.
@table @asis
@item @kbd{C-c C-a l} (@code{markdown-insert-link})
@kindex C-c C-a l
@findex markdown-insert-link
@cindex inserting inline links
@cindex inline links, insert
@cindex link, inline, insert
This inserts an inline link of the form @samp{[text](url)}. The link
text is determined as follows: If there is an active region (i.e.,
when transient mark mode is on and the mark is active), use it as the
link text. Otherwise, if the point is at a word, use that word as the
link text. In these two cases, the original text will be replaced
with the link and point will be left at the position for inserting a
URL. Otherwise, insert empty link markup and place the point for
inserting the link text.
@item @kbd{C-c C-a L} (@code{markdown-insert-reference-link-dwim})
@kindex C-c C-a L
@kindex C-c C-a r
@findex markdown-insert-link
@vindex markdown-reference-location
@cindex insert reference links
@cindex reference links, insert
@cindex link, reference, insert
(@kbd{C-c C-a r} depreciated keybinding)
This inserts a reference link of the form @samp{[text][label]} and an
optional corresponding reference label definition. The region (if
active) or the word at point (if any) will be used for the link text.
If neither is available, then the link text will be read from the
mini-buffer.
The reference label will be read from the mini-buffer, with completion
from the set of currently defined references. To create an implicit
reference link, press @key{RET} to accept the default empty label. If
the entered reference label is not defined, it will prompt for the URL
and an optional title.
If a URL is provided, a reference definition will be inserted in
accordance with @code{markdown-reference-location}. If a title is given,
it will be added to the end of the reference definition and will be
used to populate the title attribute when converted to @acronym{XHTML}.
@item @kbd{C-c C-a u} (@code{markdown-insert-uri})
@kindex C-c C-a u
@findex markdown-insert-uri
@cindex inserting URIs
@cindex URI, insert
This inserts a bare URI (URL), delimited by angle brackets. The
region (if active) or the URI at point (if any) will be used for the
link text. Otherwise, it will insert @samp{<>} and position the
point in between the brackets for inserting the URI.
@item @kbd{C-c C-a f} (@code{markdown-insert-footnote})
@kindex C-c C-a f
@findex markdown-insert-footnote
@cindex inserting footnotes
@cindex footnote, insert
This inserts a footnote marker at the point, inserts a
footnote definition below, and positions the point for
inserting the footnote text. Note that footnotes are an
extension to Markdown and are not supported by all processors.
@item @kbd{C-c C-a w} (@code{markdown-insert-wiki-link})
@kindex C-c C-a w
@findex markdown-insert-wiki-link
@cindex inserting wiki-Links
@cindex wiki-link, insert
This is like the inline link insertion command but inserts a wiki link
of the form @samp{[[WikiLink]]}. The region (if active) or the word
at point (if any) will be used for the link text. If neither is
available, it will simply insert @samp{[[]]} and position the point
between the brackets for inserting the link. Note that wiki links are
an extension to Markdown and are not supported by all processors.
@end table
@node Checking References
@subsection Checking References
@cindex checking references
@cindex references, check all
This section describes how to check references.
@table @asis
@item @kbd{C-c C-c c} (@code{markdown-check-refs})
@kindex C-c C-c c
@findex markdown-check-refs
This will check for undefined references. If there are any, a small
buffer will open with a list of undefined references and the line
numbers on which they appear. In Emacs 22 and greater, selecting a
reference from this list and pressing @key{RET} will insert an empty
reference definition at the end of the buffer. Similarly, selecting
the line number will jump to the corresponding line.
@end table
@node Navigating Links
@subsection Navigating Links
@cindex navigating links
@cindex links, navigating
This subsection describes commands that navigate links.
@table @asis
@item @kbd{M-p} (@code{markdown-previous-link})
@kindex M-p
@findex markdown-previous-link
@cindex jump to previous link
This will move to the previous inline, reference or wiki link, if any.
@item @kbd{M-n} (@code{markdown-next-link})
@kindex M-n
@findex markdown-next-link
@cindex jump to next link
This will move to the next inline, reference or wiki link, if any.
@item @kbd{C-c C-o} (@code{markdown-follow-thing-at-point})
@kindex C-c C-o
@findex markdown-follow-thing-at-point
@cindex opening links
@cindex links, opening
Press @kbd{C-c C-o} when the point is on an inline or reference link
to open the URL in a browser. When the point is at a wiki link, open
it in another buffer (in the current window, or in the other window
with the @kbd{C-u} prefix).
@item @kbd{C-c C-l} (@code{markdown-jump})
@kindex C-c C-l
@findex markdown-jump
@cindex jump to a footnote or its marker
@cindex jump to link or its definition
Use @kbd{C-c C-l}> to jump from the object at point to its counterpart
elsewhere in the text, when possible. Jumps between reference links
and definitions; between footnote markers and footnote text. If more
than one link uses the same reference name, a new buffer will be
created containing clickable buttons for jumping to each link. You
may press @key{TAB} or @kbd{S-@key{TAB}} to jump between buttons in
this window.
@cindex v2.2
Note: the keybinding of the @code{markdown-jump} function was changed
from @kbd{C-c C-j} ('j'ump) in version 2.1 to @kbd{C-c C-l} ('l'eap)
in version 2.2 so that @kbd{C-c C-j} could be used to insert list
items using the same key binding as the AUCTeX editor.
@end table
@node Images
@section Images
@cindex images
This section describes how to insert and work with images. The prefix
for this group of commands is @kbd{C-c C-i}.
@table @asis
@item @kbd{C-c C-i i} (@code{markdown-insert-image})
@kindex C-c C-i i
@findex markdown-insert-image
@cindex insert image inline
@cindex image, insert inline
This inserts markup for an inline image using the active region or
the word at point (if any) as the alt text.
@item @kbd{C-c C-i I} (@code{markdown-insert-reference-image})
@kindex C-c C-i I
@findex markdown-insert-reference-image
@cindex insert image reference
@cindex image reference, insert
This inserts markup for an reference-style image using the active
region or the word at point (if any) as the alt text.
@item @kbd{C-c C-i C-t} (@code{markdown-toggle-inline-images})
@kindex C-c C-i C-t
@findex markdown-toggle-inline-images
@cindex toggling image display
@cindex image display, toggling
@cindex v2.2
This will toggle display of local inline images. Use it again to
remove local inline image display. (@code{markdown-mode} version 2.2).
@end table
@node Misc. Commands
@section Misc. Commands
@cindex misc. commands
This section describes commands common to both headers and lists, plus
miscellaneous commands.
@menu
* Promote/Demote Items::
* Indenting the Region::
* Killing Entities::
@end menu
@node Promote/Demote Items
@subsection Promote/Demote Items
@cindex promote/demote items
@cindex promote/demote list items
@cindex list items, promote/demote
@cindex promote/demote headers
@cindex headers, promote/demote
Headings, horizontal rules, and list items can be promoted and
demoted, as well as bold and italic text.
For headings, "promotion" means @emph{decreasing} the level (i.e.,
moving from @samp{<h2>} to @samp{<h1>}) while "demotion" means
@emph{increasing} the level.
For horizontal rules, promotion and demotion means moving backward or
forward through the list of rule strings in
@code{markdown-hr-strings}. For bold and italic text, promotion and
demotion means changing the markup from underscores to asterisks.
To remember these commands, note that @kbd{-} is for decreasing the
level (promoting), and @kbd{=} (on the same key as @kbd{+}) is for
increasing the level (demoting). Similarly, the @key{LEFT} and
@key{RIGHT} arrow keys indicate the direction that the atx heading
markup is moving in when promoting or demoting.
@table @asis
@item @kbd{M-@key{LEFT}} or @kbd{C-c C-x l} or @kbd{C-c C--} (@code{markdown-promote})
@kindex C-c C--
@kindex M-@key{LEFT}
@kindex C-c C-x l
@findex markdown-promote
@cindex promote headers
@cindex promote items
@cindex move an item left
This will promote headers, rules and list items at point, moving them
left. See @code{markdown-promote} below.
@item @kbd{M-@key{RIGHT}} or @kbd{C-c C-x r} or @kbd{C-c C-=} (@code{markdown-demote})
@kindex C-c C-=
@kindex M-@key{RIGHT}
@kindex C-c C-x r
@findex markdown-demote
@cindex demote headers
@cindex demote items
@cindex move an item right
This will demote headers, rules and list items at point, moving them
right.
@end table
@node Indenting the Region
@subsection Indenting the Region
@cindex indenting the region
Text in the region can be indented or exdented as a group using
@kbd{C-c >} to indent to the next indentation point (calculated in the
current context), and @kbd{C-c <} to exdent to the previous
indentation point. These keybindings are the same as those for
similar commands in @code{python-mode}.
@table @asis
@item @kbd{C-c <} (@code{markdown-exdent-region})
@kindex C-c <
@findex markdown-exdent-region
This exdents the region to the previous indentation point.
@item @kbd{C-c >} (@code{markdown-indent-region})
@kindex C-c >
@findex markdown-indent-region
This indents the region to the previous indentation point.
@end table
@node Killing Entities
@subsection Killing Entities
@cindex killing entities
@table @asis
@item @kbd{C-c C-k} (@code{markdown-kill-thing-at-point})
@kindex C-c C-k
@findex markdown-kill-thing-at-point
@cindex kill markup
@cindex kill headers
@cindex header, kill
@cindex kill items
@cindex list item, kill
This kills the header, item or other markdown 'thing' at the point.
The interesting text (but not the markup) is added to the kill-ring.
You can use @kbd{C-y} as usual to yank the text back if desired,
without the old markup.
@end table
@node Notes
@section Notes
@cindex notes
This section contains notes on various details of @code{markdown-mode}.
@menu
* Navigation Differences::
* Mark and Region::
* Indenting::
* Org and Outline features::
@end menu
@node Navigation Differences
@subsection Navigation Differences
@cindex navigation differences
The definition of a "paragraph" is slightly different in markdown-mode
than, say, text-mode, because markdown-mode supports filling for list
items and respects hard line breaks, both of which break paragraphs.
So, markdown-mode overrides the usual paragraph navigation commands
@kbd{M-@{} and @kbd{M-@}} so that with a @kbd{C-u} prefix, these
commands jump to the beginning or end of an entire block of text,
respectively, where "blocks" are separated by one or more lines.
@table @asis
@item @kbd{M-@{} (@code{markdown-backward-paragraph})
@kindex M-@{
@findex markdown-backward-paragraph
This command jumps to the beginning of the block of text at point, or
to the previous paragraph. Paragraphs are delimited by one or more
blank lines.
@item @kbd{M-@}} (@code{markdown-forward-paragraph})
@kindex M-@}
@findex markdown-forward-paragraph
This command jumps to the end of the block of text at point, or
to the next paragraph. Paragraphs are delimited by one or more
blank lines.
@end table
The usual Emacs commands can be used to move by defuns (top-level
major definitions). In markdown-mode, a defun is a section. As
usual, @kbd{C-M-a} will move the point to the beginning of the current
or preceding defun, @kbd{C-M-e} will move to the end of the current or
following defun, and @kbd{C-M-h} will put the region around the entire
defun.
@table @asis
@item @kbd{C-M-a} (@code{markdown-beginning-of-defun})
@kindex C-M-a
@findex markdown-beginning-of-defun
This command will move to the beginning of a section.
@item @kbd{C-M-e} (@code{markdown-end-of-defun})
@kindex C-M-e
@findex markdown-end-of-defun
This command will move to the end of a section.
@item @kbd{C-M-h} (@code{mark-defun})
@kindex C-M-h
@findex mark-defun
This command will put the region around the current section.
@end table
@node Mark and Region
@subsection Mark and Region
@cindex mark
@cindex transient mark
@cindex region
As noted, many of the commands above behave differently depending on
whether Transient Mark mode is enabled or not. When it makes sense,
if Transient Mark mode is on and the region is active, the command
applies to the text in the region (e.g., @kbd{C-c C-s s} makes the
region bold). For users who prefer to work outside of Transient Mark
mode, since Emacs 22 it can be enabled temporarily by pressing
@kbd{C-SPC C-SPC}. When this is not the case, many commands then
proceed to work with the word or line at the point.
When applicable, commands that specifically act on the region even
outside of Transient Mark mode have the same keybinding as their
standard counterpart, but the letter is uppercase. For example,
@code{markdown-insert-blockquote} is bound to @kbd{C-c C-s b} and only
acts on the region in Transient Mark mode while
@code{markdown-blockquote-region} is bound to @kbd{C-c C-s B} and
always applies to the region (when nonempty).
Note that these region-specific functions are useful in many cases
where it may not be obvious. For example, yanking text from the kill
ring sets the mark at the beginning of the yanked text and moves the
point to the end. Therefore, the (inactive) region contains the
yanked text. So, @kbd{C-y} followed by @kbd{C-c C-s C-B} will yank
text and turn it into a blockquote.
@node Indenting
@subsection Indenting
@cindex indenting
@code{markdown-mode} attempts to be flexible in how it handles
indentation. When you press @key{TAB} repeatedly, the point will
cycle through several possible indentation levels corresponding to
things you might have in mind when you press @key{RET} at the end of a
line or @key{TAB}. For example, you may want to start a new list
item, continue a list item with hanging indentation, indent for a
nested pre block, and so on. Exdention is handled similarly when
backspace is pressed at the beginning of the non-whitespace portion of
a line.
@node Org and Outline features
@subsection Org and Outline features
@cindex org-mode visibility
@cindex outline-minor-mode
@code{markdown-mode} supports @code{outline-minor-mode} as well as
@code{org-mode} style visibility cycling for hash-style (atx)
headings.
There are two types of visibility cycling:
@itemize @bullet
@item @kbd{S-@key{TAB}}
@kindex S-TAB
This cycles globally between the table of contents view (headings
only), outline view (top-level headings only), and the full document
view.
@item @key{TAB}
@kindex TAB
Pressing @key{TAB} while the point is at a heading will cycle through
levels of visibility for the subtree: completely folded, visible
children, and fully visible.
@end itemize
Note that mixing hash (atx) and underline (setext) style headings will
give undesired results.
@node Compile Commands
@section Compile Commands
@cindex compile commands
@cindex convert
@cindex output @acronym{HTML}
This section describes compile (output) commands.
The prefix for this group of commands is @kbd{C-c C-c}.
@table @asis
@item @kbd{C-c C-c m} (@code{markdown-other-window})
@kindex C-c C-c m
@findex markdown-other-window
This will run @code{markdown-command} on the current buffer and
display the output (@acronym{XHMTL}) in the other window with the
buffer name @samp{*markdown-output*}.
@item @kbd{C-c C-c p} (@code{markdown-preview})
@kindex C-c C-c p
@findex markdown-preview
This will run @code{markdown-command} on the current buffer and then
preview it by writing it to a temporary file and opening that file in
a browser.
@item @kbd{C-c C-c e} (@code{markdown-export})
@kindex C-c C-c e
@findex markdown-export
This will run @code{markdown-command} on the current buffer and then
save the result to the file @file{basename.html}, where
@samp{basename} is the name of the markdown file (visited by the source
buffer) without its extension.
@item @kbd{C-c C-c v} (@code{markdown-export-and-preview})
@kindex C-c C-c v
@findex markdown-export-and-preview
This will run @code{markdown-command} on the current buffer and then
save the result to the file @file{basename.html}, as with
@code{markdown-export}above, and then preview that file in a browser.
@item @kbd{C-c C-c w} (@code{markdown-kill-ring-save})
@kindex C-c C-c w
@findex markdown-kill-ring-save
This will run @code{markdown-command} on the current buffer and save
the output to the kill ring. You can yank it back where desired with
@kbd{C-y} as usual.
@item @kbd{C-c C-c l} (@code{markdown-live-preview-mode})
@kindex C-c C-c l
@findex markdown-live-preview-mode
This will toggle markdown live preview mode. When enabled, it will
preview the output in the Emacs @code{eww} browser whenever you save
the markdown file. Toggle it off again to stop live preview and close
the @code{eww} browser. You may customize the value of the variable
@code{markdown-live-preview-window-function} with your own function to
use a browser other than @code{eww}. The default value of the variable
is the function @code{markdown-live-preview-window-eww}.
@item @kbd{C-c C-c o} (@code{markdown-open})
@kindex C-c C-c o
@findex markdown-open
This will use @code{markdown-open-command} to open the source markdown
file visited by the buffer directly. See @ref{Customizing External Commands}.
@end table
Summary of compile commands:
@itemize @bullet
@item @kbd{C-c C-c m} @code{markdown-command} > @samp{*markdown-output*} buffer.
@item @kbd{C-c C-c p} @code{markdown-command} > @samp{tempfile} > browser.
@item @kbd{C-c C-c e} @code{markdown-command} > @file{basename.html}.
@item @kbd{C-c C-c v} @code{markdown-command} > @file{basename.html} > browser.
@item @kbd{C-c C-c w} @code{markdown-command} > kill ring.
@item @kbd{C-c C-c l} @code{markdown-command} > @samp{*eww*} buffer (live).
@item @kbd{C-c C-c o} buffer > file > @code{markdown-open-command}.
@end itemize
@node Using @code{gfm-mode}
@chapter Using @code{gfm-mode}
@cindex using @code{gfm-mode}
@cindex GitHub flavored markdown
@findex gfm-mode
This chapter describes the differences between markdown-mode and the
available @cite{GitHub Flavored Markdown Mode}, @code{gfm-mode}.
GitHub Flavored Markdown is described at
@uref{http://github.github.com/github-flavored-markdown/}
The GitHub implementation differs slightly from standard Markdown in
that it supports things like different behavior for underscores inside
of words, automatic linking of URLs, strikethrough text, and fenced
code blocks with an optional language keyword.
The GFM-specific features above apply to @file{README.md} files, wiki
pages, and other Markdown-formatted files in repositories on GitHub.
GitHub also enables additional features
@uref{https://help.github.com/articles/writing-on-github/} for writing
on the site (for issues, pull requests, messages, etc.) that are
further extensions of GFM. These features include task lists
(checkboxes), newlines corresponding to hard line breaks, auto-linked
references to issues and commits, wiki links, and so on. To make
matters more confusing, although task lists are not part of GFM
proper, since 2014 they are rendered (in a read-only fashion) in all
Markdown documents in repositories on the
site. @uref{https://github.com/blog/1825-task-lists-in-all-markdown-documents}
These additional extensions are supported to varying degrees by
@code{markdown-mode} and @code{gfm-mode} as described below.
@table @strong
@item URL autolinking
@cindex GFM URL autolinking
Both @code{markdown-mode} and @code{gfm-mode} support highlighting of
URLs without angle brackets.
@item Multiple underscores in words
@cindex GFM Multiple underscores in words
You must enable @code{gfm-mode} to toggle support for underscores
inside of words. In this mode variable names such as
@var{a_test_variable} will not trigger emphasis (italics).
@item Fenced code blocks
@cindex GFM Fenced code blocks
Code blocks quoted with backticks, with optional programming language
keywords, are highlighted in both @code{markdown-mode} and
@code{gfm-mode}. They can be inserted with @kbd{C-c C-s P}. If there
is an active region, the text in the region will be placed inside the
code block. You will be prompted for the name of the language, but
may press enter to continue without naming a language.
@item Strikethrough
@cindex GFM Strikethrough
Strikethrough text is only supported in @code{gfm-mode} and can be
inserted (and toggled) using @kbd{C-c C-s d}. Following the mnemonics
for the other style keybindings, the letter @kbd{d} coincides with the
HTML tag @code{<del>}.
@item Task lists
@cindex GFM Task lists
@vindex markdown-make-gfm-checkboxes-buttons
GFM task lists will be rendered as checkboxes (Emacs buttons) in both
@code{markdown-mode} and @code{gfm-mode} when
@code{markdown-make-gfm-checkboxes-buttons} is set to a non-nil value
(and it is set to t by default). These checkboxes can be toggled by
clicking @kbd{mouse-1} or pressing @key{RET} over the button.
@item Wiki links
@cindex GFM Wiki links
Generic wiki links are supported in @code{markdown-mode}, but in
@code{gfm-mode} specifically they will be treated as they are on
GitHub: spaces will be replaced by hyphens in filenames and the first
letter of the filename will be capitalized. For example, @cite{[[wiki
link]]} will map to a file named @file{Wiki-link} with the same
extension as the current file.
@item Newlines
@cindex GFM Newlines
@findex visual-line-mode
Neither @code{markdown-mode} nor @code{gfm-mode} do anything
specifically with respect to newline behavior. If you use
@code{gfm-mode} mostly to write text for comments or issues on the
GitHub site (where newlines are significant and correspond to hard
line breaks) then you may want to enable @code{visual-line-mode} for
line wrapping in buffers. You can do this with a @code{gfm-mode-hook}
as follows:
@lisp
;; Use visual-line-mode in gfm-mode
(defun my-gfm-mode-hook ()
(visual-line-mode 1))
(add-hook 'gfm-mode-hook 'my-gfm-mode-hook)
@end lisp
@item Preview
@cindex GFM Preview
@vindex markdown-command
@vindex markdown-open-command
GFM-specific preview can be powered by setting @code{markdown-command}
to use a GFM preview application like Docter
(@uref{https://github.com/alampros/Docter}). This may also be
configured to work with @cite{Marked 2} for
@code{markdown-open-command}.
@end table
@node Customizing
@chapter Customizing
@cindex customizing
@cindex variables
This chapter describes how to customize @code{markdown-mode}.
You may customize the variables in this section by adding lines to
your Emacs startup file or by running @kbd{M-x customize-group
markdown} and then restarting Emacs.
@menu
* Customizing External Commands:: Customize External Commands.
* Customizing Markdown Format:: Customize Markdown Format.
* Customizing Markdown Headers:: Customize Markdown Headers
* Customizing Indenting:: Customize Markdown Indenting
* Wiki-Links Syntax Highlighting:: Customize Wiki-Links Syntax
* Customizing GitHub Flavored Markdown::
* Customizing @acronym{HTML} Format:: Customize @acronym{HTML} format
* @LaTeX{} Math Syntax Highlighting:: Highlight @LaTeX{} Math.
@end menu
@node Customizing External Commands
@section Customizing External Commands
@cindex external commands, customizing
The variables in this section control how @code{markdown-mode} calls
external commands to convert markdown text to @acronym{HTML} or
another format or to preview the markdown text.
@vtable @code
@item markdown-command
@vindex markdown-command
@cindex @code{markdown-command}, configure
string, default: @code{"markdown"}.
This variable specifies the command and options that
@code{markdown-mode} will use to run @command{markdown} or another
output processor in the following functions:
@itemize @bullet
@item @kbd{C-c C-c m} (@code{markdown-other-buffer})
@item @kbd{C-c C-c p} (@code{markdown-preview})
@item @kbd{C-c C-c e} (@code{markdown-export})
@item @kbd{C-c C-c v} (@code{markdown-export-and-preview})
@item @kbd{C-c C-c w} (@code{markdown-kill-ring-save})
@end itemize
Examples of @code{markdown-command} configurations in Emacs startup file:
@table @asis
@item Default. Assumes @command{markdown} command in @env{$PATH}.
@cindex @command{markdown}, configure
@pindex markdown
@lisp
(setq markdown-command "markdown")
@end lisp
@item @command{markdown} with specified path
You may need to specify the path to @command{markdown} if it is not in
the @env{$PATH}, as when Emacs is launched as an app under MacOS.
@lisp
(setq markdown-command "/usr/local/bin/markdown")
@end lisp
@item @command{markdown} with @command{smartypants}
@cindex @command{smartypants}, configure
@cindex smart quotation marks
@pindex smartypants
You may pipe the output of @command{markdown} to @command{smartypants}
to add smart quotation marks.
See @uref{https://daringfireball.net/projects/smartypants/}.
@lisp
(setq markdown-command "markdown | smartypants")
@end lisp
@item @command{multimarkdown}
@cindex @command{multimarkdown}, configure
@pindex multimarkdown
@command{multimarkdown} usually outputs to @acronym{HTML} like
@command{markdown}, but can also output to several other formats with
the @option{--to=@var{FORMAT}} option. It includes the functionality
of @command{smartypants}.
See @uref{http://fletcherpenney.net/multimarkdown/}.
@lisp
(setq markdown-command
"/usr/local/bin/multimarkdown")
@end lisp
@item @command{pandoc}
@cindex @command{pandoc}, configure
@cindex other formats, output to
@cindex outputting to other formats
@pindex pandoc
@command{pandoc} will output to @acronym{HTML}, but it can also output
to 40 other formats and converts from 5 different markdown dialects,
including GitHub-flavored markdown.
See @uref{http://pandoc.org}
@lisp
(setq markdown-command
(concat
"/usr/local/bin/pandoc"
" --from=markdown"
" --to=html"))
@end lisp
@end table
@item markdown-command-needs-filename
@vindex markdown-command-needs-filename
@code{nil} or @code{t}, default: @code{nil}.
Set @code{markdown-command-needs-filename} to @code{t} if the program
specified by @code{markdown-command} needs a filename, that is, if the
program does not accept standard input (@code{stdin}).
When @code{markdown-command-needs-filename} is set to @code{nil}, the
default, @code{markdown-mode} will pass the markdown content to the
program specified by @code{markdown-command} using standard input
(@code{stdin}).
When @code{markdown-command-needs-filename} is set to @code{t} (or any
non-@code{nil}), @code{markdown-mode} will pass the name of the file
visited by the current buffer as the final command-line argument to
the program specified by @code{markdown-command}. Note that in this
case, you will only be able to run @code{markdown-command} from
buffers that are visiting a file.
@item markdown-open-command
@kindex C-c C-c o
@vindex markdown-open-command
@cindex @code{markdown-open}, customize
@pindex Marked 2
string, default: @code{nil}.
This variable specifies the command and options that the function
@code{markdown-open}, bound to @kbd{C-c C-c o}, will use to open the
markdown file in an external markdown previewer application. The
command will be called with a single argument: the name of the file
visited by the buffer. (This only works if the buffer is visiting a
file.)
One possible previewer application is @cite{Marked 2} by Brett
Terpstra, a live-updating Markdown previewer available from
the Apple app store.
You can can open an OSX app like @cite{Marked 2} by running a script
like the one below with the @code{markdown-open-command}.
Script @file{/usr/local/bin/markview}
@cartouche
@example
#!/bin/bash
# Check that file exists and launch app with or without it.
if [[ -f $1 ]]
then open -a "Marked 2" $1
else open -a "Marked 2"
fi
@end example
@end cartouche
@end vtable
@node Customizing Markdown Format
@section Customizing Markdown Format
@cindex markdown format, customizing
The variables in this section control how @code{markdown-mode} formats
Markdown text. These variables may be set in the Emacs startup file
or by using @kbd{M-x customize-mode}.
@vtable @code
@item markdown-bold-underscore
@code{nil} or @code{t}, default: @code{nil}.
Set to a non-nil value to use two underscores when inserting bold text
instead of two asterisks.
@item markdown-italic-underscore
@code{nil} or @code{t}, default: @code{nil}.
Set to a non-nil value to use single underscores when inserting italic
text instead of single asterisks.
@item markdown-reference-location
@code{header}, @code{end}, or @code{immediately}, default @code{header}
This value determines where to insert reference definitions. The
possible locations are:
@itemize
@item @code{header} - before the next header.
@item @code{end} - the end of the document.
@item @code{immediately} - after the current block.
@end itemize
Example:
@lisp
(setq markdown-reference-location 'end)
@end lisp
@item markdown-footnote-location
@code{header}, @code{end}, or @code{immediately}, default @code{end}
This value determines where to insert footnote text. The possible
locations are the same as for @code{markdown-reference-location},
above, but the default is @code{end}.
@item comment-auto-fill-only-comments
@code{nil} or @code{t}, default: @code{nil}.
This variable is made buffer-local and set to @code{nil} by default.
In programming language modes, when this variable is non-nil, only
comments will be filled by @code{auto-fill-mode}. However, comments
in Markdown documents are rare and the most users probably intend for
the actual content of the document to be filled. Making this variable
buffer-local allows @code{markdown-mode} to override the default
behavior induced when the global variable is non-nil.
@end vtable
@node Customizing Markdown Headers
@section Customizing Markdown Headers
@cindex markdown headers, customizing
The variables in this section allow you to customize how
@code{markdown-mode} uses headers.
@vtable @code
@item markdown-asymmetric-header
@code{nil} or @code{t}, default: @code{nil}.
Determines if header style will be asymmetric.
Set to non-nil to only have header characters to the left of the
title. The default will ensure header characters are placed to the
left and right of the title.
@item markdown-header-scaling
@cindex v2.2
@code{nil} or @code{t}, default: @code{nil}.
Determines whether to use variable-height faces for headers.
Set to a non-nil value to use a variable-pitch font for headers where
the size corresponds to the level of the header.
In detail: When non-nil, @code{markdown-header-face} will inherit from
@code{variable-pitch} and the six scaling values in
@code{markdown-header-scaling-values} will be applied to headers of
levels one through six respectively.
@item markdown-header-scaling-values
@cindex v2.2
A list of 6 float, default: @code{(list 1.8 1.4 1.2 1.0 1.0 1.0)}
A list of 6 scaling values, relative to baseline, for headers of
levels one through six. They are used when `markdown-header-scaling`
is non-nil.
@item markdown-nested-imenu-header-index
@cindex v2.2
@code{nil} or @code{t}, default: @code{nil}.
Set to a non-nil value to use nested imenu header instead of a flat
index. A nested index may provide more natural browsing from the
menu, but a flat list may allow for faster keyboard navigation via tab
completion.
@item markdown-hr-strings
A list of 6 strings. The default is:
@lisp
("-------------------------------------------------------------------------------"
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
"---------------------------------------"
"* * * * * * * * * * * * * * * * * * * *"
"---------"
"* * * * *")
@end lisp
A list of strings to use when inserting horizontal rules. Different
strings will not be distinguished when converted to @acronym{HTML} --
they will all be converted to @code{<hr/>} -- but they may add visual
distinction and style to plain text documents. To maintain some
notion of promotion and demotion, keep these sorted from largest to
smallest.
@end vtable
@node Customizing Indenting
@section Customizing Indenting
@cindex indenting, customizing
The variables in this section allow you to customize how
@code{markdown-mode} handles indentation.
@vtable @code
@item markdown-list-indent-width
integer, default: 4
Determines the depth of indentation for lists when inserting,
promoting, and demoting list items.
@item markdown-indent-function
function, default: @code{markdown-indent-line}
Determines the function to use for automatic indentation.
@item markdown-indent-on-enter
@code{nil} or @code{t}, default: @code{t}.
Set to a non-nil value to automatically indent new lines when the
enter key is pressed.
@end vtable
@node Wiki-Links Syntax Highlighting
@section Wiki-Links Syntax Highlighting
@cindex wiki links syntax highlighting
@cindex highlighting [[wiki-links]] syntax
Besides supporting the basic Markdown syntax, @code{markdown-mode}
also includes syntax highlighting for [[Wiki-Links]]. This support is
enabled by setting @code{markdown-enable-wiki-links} to a non-nil
value.
Wiki-links may be followed by pressing @kbd{C-c C-o} when the point is
at a wiki-link. Use @kbd{M-p} and @kbd{M-n} to quickly jump to the
previous and next links (including links of other types).
Aliased (or ``piped'') wiki-links of the form
@samp{[[linktext|PageName]]} are also supported. Since some wikis
reverse these components, set @code{markdown-wiki-link-alias-first} to
nil to treat them as @samp{[[PageName|linktext]]}.
If @code{markdown-wiki-link-fontify-missing} is also non-nil,
@code{markdown-mode} will highlight wiki-links with a missing target
file in a different color. By default, Markdown Mode only searches
for target files in the current directory. Sequential parent
directory search (like @command{Ikiwiki}) can be enabled by setting
@code{markdown-wiki-link-search-parent-directories} to a non-nil
value.
The variables below customize how Wiki-Links are handled.
@vtable @code
@item markdown-enable-wiki-links
@findex markdown-toggle-wiki-links
@cindex v2.2
@code{nil} or @code{t}, default: @code{nil}.
This enables syntax highlighting for [[Wiki-Links]].
Set this to a non-nil value to turn on [[Wiki-Links]] support by
default. [[Wiki-Links]] support can be toggled later using the
function @code{markdown-toggle-wiki-links}.
@item markdown-link-space-sub-char
character, default: @code{"_"}
Determines the character to replace spaces when mapping wiki links to
file names.
For example, use an underscore for compatibility with the Python
Markdown Wiki-Links extension. In @code{gfm-mode}, this is set to
@code{"-"} to conform with GitHub wiki links.
@item markdown-wiki-link-alias-first
@code{nil} or @code{t}, default: @code{t}.
Set this to a non-nil value to treat aliased wiki links as
@samp{[[linktext|PageName]]}. When set to nil, they will be treated
as @samp{[[PageName|linktext]]}.
@item markdown-wiki-link-fontify-missing
@code{nil} or @code{t}, default: @code{nil}.
When non-nil, change the wiki-link face according to the existence of
the target files.
This is expensive because it requires checking for the file each time
the buffer changes or the user switches windows. It is disabled by
default because it may cause lag when typing on slower machines.
@item markdown-wiki-link-search-parent-directories
@pindex ikiwiki
@code{nil} or @code{t}, default: @code{nil}.
When non-nil, search for wiki-link targets in parent
directories. (This is the default search behavior of Ikiwiki.)
This only applies when @code{markdown-wiki-link-fontify-missing},
above, is non-nil.
See @uref{https://ikiwiki.info}
@end vtable
@node Customizing GitHub Flavored Markdown
@section Customizing GitHub Flavored Markdown
@cindex GitHub flavored markdown, customizing
This section describes variables that customize @code{gfm-mode}.
@vtable @code
@item markdown-gfm-additional-languages
list of strings, default @code{nil}
Determines any more languages to make available, in addition to the
300+ languages predefined in @code{markdown-gfm-recognized-languages},
when inserting @acronym{GFM} code blocks. Language strings must be
trimmed of white space and not contain any curly braces. They may be
of arbitrary capitalization.
@item markdown-gfm-use-electric-backquote
@findex markdown-electric-backquote
@code{nil} or @code{t}, default @code{t}
Set to non-nil to use the function @code{markdown-electric-backquote}
for interactive insertion of @acronym{GFM} code blocks when backquote
is pressed three times.
@item markdown-make-gfm-checkboxes-buttons
@code{nil} or @code{t}, default @code{t}
Determines whether GitHub Flavored Markdown style task lists
(checkboxes) should be turned into buttons that can be toggled with
mouse-1 or RET. If non-nil, then buttons are enabled. This works in
@code{markdown-mode} as well as @code{gfm-mode}.
@end vtable
@node Customizing @acronym{HTML} Format
@section Customizing @acronym{HTML} Format
@cindex customizing @acronym{HTML} format
@cindex @acronym{HTML} format, customize
This section describes variables that customize @acronym{HTML} formatting.
@vtable @code
@item markdown-uri-types
list of strings, default: @code{("acap" "cid" "data" "dav" "fax"
"file" "ftp" "gopher" "http" "https" "imap" "ldap" "mailto" "mid"
"modem" "news" "nfs" "nntp" "pop" "prospero" "rtsp" "service" "sip"
"tel" "telnet" "tip" "urn" "vemmi" "wais")}
Determines the list of protocol schemes (e.g., @code{"http"}) for URIs
that @code{markdown-mode} should highlight.
@item markdown-css-paths
list of strings, default @code{nil}
Determines a list of URLs of CSS files to link to in the output @acronym{XHMTL}.
@item markdown-content-type
string, default: @code{""}
when set to a nonempty string, an @samp{http-equiv} attribute will be
included in the @acronym{XHMTL} @samp{<head>} block. The suggested
values are @code{"application/xhtml+xml"} or @code{"text/html"}.
This variable must be set to a non-empty string to use
@code{markdown-coding-system}, below.
@item markdown-coding-system
string or @code{nil}, default: @code{nil}
This variable is used for specifying the character set identifier in
the @samp{http-equiv} attribute when included. The variable
@code{markdown-content-type} must be set before this variable has any
effect. When @code{markdown-coding-system} is set to @code{nil},
@code{buffer-file-coding-system} will be used to automatically
determine the coding system string (falling back to @samp{iso-8859-1}
when unavailable). Common settings are @samp{utf-8} and
@samp{iso-latin-1}.
@item markdown-xhtml-header-content
string, default @code{""}
Determines any additional content to include in the @acronym{XHMTL} @samp{<head>}
block.
@item markdown-xhtml-standalone-regexp
string, default @code{^\\(<\\?xml\\|<!DOCTYPE\\|<html\\)}
a regular expression which @code{markdown-mode} uses to determine
whether the output of @code{markdown-command} is a standalone
@acronym{XHMTL} document or an @acronym{XHMTL} fragment. If this
regular expression is not matched in the first five lines of output,
@code{markdown-mode} assumes the output is a fragment and adds a
header and footer.
@end vtable
@node @LaTeX{} Math Syntax Highlighting
@section @LaTeX{} Math Syntax Highlighting
@cindex @LaTeX{} math syntax highlighting
@cindex highlighting @LaTeX{} math syntax
This section describes the variable that enables @LaTeX{} Math Syntax
highlighting.
@vtable @code
@item markdown-enable-math
@code{nil} or @code{t}, default: @code{nil}.
Syntax highlighting for mathematical expressions written in @LaTeX{}
can be enabled by default by setting @code{markdown-enable-math} to a
non-nil value. You can set it either via customize or by placing
@code{(setq markdown-enable-math t)} in @file{.emacs}, and then
restarting Emacs or calling @code{markdown-reload-extensions}.
Only expressions denoted by @samp{$..$}, @samp{$$..$$}, or
@samp{\[..\]} are highlighted.
Math support can be toggled later using @kbd{M-x markdown-enable-math}.
@end vtable
@node Development
@appendix Development
@cindex development
This appendix is for contributors to @code{markdown-mode}, past or
future@dots{} @strong{Thank you.}
@menu
* Acknowledgments:: Many Thanks to Contributors.
* History of Releases:: History of Software Releases.
* Development Version:: how to Get the Development Version.
* Bugs and Errors:: how to Report Bugs and Errors.
@end menu
@node Acknowledgments
@section Acknowledgments
@cindex acknowledgments
@cindex contributors
@cindex credits
@cindex thank you
@code{markdown-mode} has benefited greatly from the efforts of many
people. Please see the ``;;; Acknowledgments:'' section of
@value{PACSRC} and the GitHub contributors graph at @uref{https://github.com/jrblevin/markdown-mode/graphs/contributors}.
@node History of Releases
@section History of Releases
@cindex history of releases
@cindex releases
@code{markdown-mode} was primarily written and is maintained by Jason
Blevins. The first release, 1.1, was on May 24, 2007.
Most of the prior versions may be downloaded:
@itemize @bullet{}
@item 2007-05-24 v1.1
@item 2007-05-25 v1.2
@item 2007-06-05 v1.3 @uref{http://jblevins.org/projects/markdown-mode/rev-1-3}
@item 2007-06-29 v1.4
@item 2007-10-11 v1.5 @uref{http://jblevins.org/projects/markdown-mode/rev-1-5}
@item 2008-06-04 v1.6 @uref{http://jblevins.org/projects/markdown-mode/rev-1-6}
@item 2009-10-01 v1.7 @uref{http://jblevins.org/projects/markdown-mode/rev-1-7}
@item 2011-08-12 v1.8 @uref{http://jblevins.org/projects/markdown-mode/rev-1-8}
@item 2011-08-15 v1.8.1 @uref{http://jblevins.org/projects/markdown-mode/rev-1-8-1}
@item 2013-01-25 v1.9 @uref{http://jblevins.org/projects/markdown-mode/rev-1-9}
@item 2013-03-24 v2.0 @uref{http://jblevins.org/projects/markdown-mode/rev-2-0}
@item 2016-01-09 v2.1 @uref{http://jblevins.org/projects/markdown-mode/rev-2-1}
@item 2017-05-26 v2.2 @uref{http://jblevins.org/projects/markdown-mode/rev-2-2}
@end itemize
@node Development Version
@section Development Version
@cindex development version
You may browse the project files of @code{markdown-mode}, contribute
to its development or help to test the current development version.
@itemize @bullet
@item To browse the @code{markdown-mode} project files, visit the
project's page on GitHub at @value{SRCURL}.
@item To contribute to the development of @code{markdown-mode}, you should fork
the project to your own GitHub account.
@item To test the current development version of
@code{markdown-mode}, download @value{PACSRC} from @value{SRCURL} or
from @acronym{MELPA} at @url{https://melpa.org/#/markdown-mode} to the
directory @file{~/my/directory}. Then ensure that Emacs can find it by
adding the following line to your Emacs startup file:
@lisp
(add-to-list 'load-path "~/my/directory")
@end lisp
Please realize that the development version may be unstable at times.
See the next section for how to submit a bug report.
@end itemize
@node Bugs and Errors
@section Bugs and Errors
@cindex bugs and errors
@cindex feedback
@cindex contact information
@table @strong
@item Software Bugs
@code{markdown-mode} now requires @acronym{GNU} Emacs 24.3 and later.
If have an older version of Emacs, please consider updating your
version of Emacs to resolve any problems.
If you have identified a bug with @code{markdown-mode.el}, please
construct a test case or a patch and create an issue on the issue
tracker at @uref{https://github.com/jrblevin/markdown-mode/issues}.
@item Manual Errors
This manual is maintained on GitHub at@*
@value{DOCURL} by
@value{EDITOR}.
Please submit document errata to the issue tracker
there. Please do not complain to Dr. Blevin about errors in
@emph{this} manual. You will find @emph{his} original manual at
@value{SRCURL}.
@end table
@node @acronym{GNU} General Public License 2.0
@unnumbered @acronym{GNU} General Public License 2.0
@cindex license (software)
@cindex @acronym{GNU} General Public License 2.0
@include gpl-2.0.texi
@c @node @acronym{GNU} General Public License 3.0
@c @unnumbered @acronym{GNU} General Public License 3.0
@c @cindex license (updated)
@c @cindex @acronym{GNU} General Public License 3.0
@c
@c @include gpl.texi
@c
@node @acronym{GNU} Free Documentation License
@unnumbered @acronym{GNU} Free Documentation License
@cindex license (manual)
@cindex @acronym{GNU} Free Documentation License
@include fdl.texi
@node Functions & Variables
@unnumbered Functions & Variables
@printindex fn
@node Keys and Concepts
@unnumbered Keys and Concepts
@printindex cp
@bye