Hugo descriptions with ox-hugo

In a previous post, I explained how slugify this blog’s headings. Now, I’m going demonstrate how I do to insert front matter descriptions.

Currently, there are two ways to make ox-hugo insert a description attribute in a post’s front matter. The first method leverages the property EXPORT_HUGO_CUSTOM_FRONT_MATTER:

* Your cool title
# other props...
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :description Your cool description

Now, the one I use is made with the help of Org Mode’s Blocks.

* Your cool title
# other props...

Your cool description

By default, the easiest way to insert one is to run the press C-c C-, TAB description. However, this is keybinding sequence is quite long. In comparison, inserting a source block only requires C-c C-, s. So, why not have d as an option to select description? Here is how I did it.

I started by running C-h k (describe-key) and then C-c C-, to find out which command was associated with this keybinding. It turns out that it runs org-insert-structure-template, that selects a block from the variable org-structure-template-alist. Running C-c v (describe-variable) showed me the default value for this variable:

(("a" . "export ascii")
 ("c" . "center")
 ("C" . "comment")
 ("e" . "example")
 ("E" . "export")
 ("h" . "export html")
 ("l" . "export latex")
 ("q" . "quote")
 ("s" . "src")
 ("v" . "verse"))

Well, now it’s simply a matter of adding the ("d" . "description") value to the list and we should be good to go:

(add-to-list 'org-structure-template-alist '("d" . "description"))