Skip to content
An interactive wrapper around the Hugo site generator.
Emacs Lisp
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This is an Emacs package that provides an interactive interface for the Hugo static site generator. It is loosely modeled after the great Magit package and provides not only an interactive content management facility, but also some minor mode niceties that make blogging on the platform a little easier.

The underlying code is a nearly wholesale copy of my octopress.el package, which provided nearly identical facilities for the Octopress static site generator, so if you ever used that, you should feel right at home with this.


For now, this package is only available on GitHub and you must clone or download the script and install it in your load path. You might accomplish this using Git by running this command in your user-emacs-directory:

$ git clone hugo

Then you can add that directory to your load path and load the package by adding these lines to your init.el (or similar):

(add-to-list 'load-path (expand-file-name "hugo" user-emacs-directory))
(require 'hugo)

Feel free to use use-package or whatever you're comfortable with.


The primary interface into hugo.el is via the function hugo-status, which will first prompt you for the path to your site's root directory (unless you run it from a buffer visiting a file that can be discerned to live within a Hugo site), and then display the main status pane.

Within the status pane, you will see the absolute path to your site on disk, the status of the local server, and a list of your drafts and posts.

You can press ? at any time to open the help pane, and from there you can easily run any of the provided commands, which should be self-explanatory.


There are configurable options accessible via the customize facility in Emacs. Run M-x customize-group RET hugo RET to see them.


If you are using hugo.el to author multiple Hugo sites, you will undoubtedly encounter problems. While most of the internals of the package are written to accommodate multiple sites, the configurable settings are stored centrally and so it is currently impossible to customize any of the settings for only a single site.

Further, switching from one Hugo site to another during the same Emacs session may not always work as expected. Generally, if you run hugo-status from within a buffer visiting a file within a Hugo site, it should figure it out automatically and you'll be on your way. If ever that does not happen, open an issue.

These are problems that have existed in octopress.el since the beginning, and I am not likely to solve them until I am juggling a few Hugo sites and have the need.

You can’t perform that action at this time.