Introducing mallard-mode, a new major mode for Emacs

Jaromir Hradilek <jhradilek at>
Mon Aug 19 22:20:15 EDT 2013

Hello everyone,

When I first tried configure my Emacs to provide decent support  for 
DocBook and Mallard, what bothered me most was how unnecessarily 
complicated the whole process was. I mean, why should every single user 
tell their editor where to find the schema, how to recognize the file 
type, and how to indent the XML code? Well, I wanted to learn Emacs Lisp 
anyway, and so I decided to bite the bullet and make all this simpler.

mallard-mode [1] is a new major mode for editing Mallard pages in Emacs 
and just like my Mallard snippets [2] for this editor, it is available 
as an installable package in MELPA [3]. All you need to configure your 
editor to fully support Mallard is to enable the MELPA repository and 
run the following Emacs commands:

   M-x package-refresh-contents
   M-x package-install mallard-mode

That is it. With this package installed, whenever you open a Mallard 
page or open a file with the .page or .page.stub file extension, Emacs 
automatically enables mallard-mode, loads the corresponding RELAX NG 
schema, sets appropriate indentation rules, and enables automatic line 
wrapping. In addition, if you happen to have the yelp-check utility 
installed, you can use some of its features directly from your editor by 
using the following key bindings:

   C-c C-c  Display editorial comments in the file.
   C-c C-h  Display broken external links in the file.
   C-c C-s  Display the status of the file.
   C-c C-v  Validate the currently edited file.

For a detailed description of what this mode offers and how to customize 
and use it, please, refer to its GitHub page [1] where you can also 
clone it, fork it, submit pull requests, or report issues. Any feedback 
is of course very appreciated and so are feature requests.

Many thanks to Shaun McCance for allowing me to distribute the RELAX NG 
schema for Mallard 1.0 with this package!

Thank you,

P.S.: Mallard is also supported by Vim [4][5]. If you think that 
integration with yelp and yelp-check is a good idea, I can certainly 
make it possible in Vim as well.


Jaromir Hradilek