Templates are implemented using the excellent etlua package.


Each template set is a pair of files; marker and main.etlua.


The marker file contains a “magic” string, that is used to find the location in the NEWS file to insert new entries.

It is matched with lua‘s string.match function, and should be as tight as possible to prevent false matches. The default template’s marker is %.%. contents:: which matches a reST table of contents directive.


The main.etlua file is the template that is used to generate the header and individual entries for the NEWS file.

It is provided with the following data:

Variable Description
date The data provided by the user with the histofile update --date option.
entries The new entries to add to the output.
old_entries The previously existing data in the NEWS file.
version The version provided by the user with the version argument.

The following formatting functions are provided for convenience:

Function Description
stylise() Basic terminal formatting support
wrap_entry() A simple line wrapper for text inputs

Along with the following variables for formatting output:

Variable Type Description
bg string indexed table Colours to set terminal background.
bold string Set terminal to bold
fg string indexed table Colours to set terminal foreground.
form_feed string Force a form feed
reset string Reset terminal formatting
underline string et terminal to underline