Supported settings

The visual mode of the Hugo Config tab doesn’t know what any particular Hugo setting means. It takes whatever keys are in your config, works out a control for each from the value’s type, and files them into sections. This page is about where things end up and what you can and can’t do with them there.

Sections#

Section Keys shown Open by default
Site Settings baseURL, title, languageCode, theme, copyright, paginate, enableRobotsTXT, enableGitInfo Yes
Build Settings buildDrafts, buildFuture, buildExpired No
Site Parameters Everything under params Yes
Permalinks permalinks No
Menus menu No
Markup markup No
Languages languages No
Other Settings Recognised top-level keys that have no section of their own: defaultContentLanguage, disableKinds, summaryLength, uglyURLs, sitemap, minify, imaging, privacy, security, services, frontmatter, caches, related, mediaTypes, outputFormats, deployment and the rest of Hugo’s documented root keys No

Sections other than the first three only appear when the config has something in them, and only those three have an Add field button. To add a top-level key elsewhere, or a new nested block, use raw mode.

Each section shows a count badge of how many keys it holds. Field labels are made from the key name (enableRobotsTXT becomes “Enable Robots TXT”), with the real key in brackets beside it.

Keys the visual mode doesn’t show#

taxonomies, outputs, module and server are recognised but currently have no section in the form, so they’re invisible in visual mode. They’re preserved on save, since the save writes the whole parsed config, but to edit them you need raw mode.

Unrecognised keys#

A top-level key that isn’t on Emet’s list of Hugo root keys (enableEmoji, for instance, or a typo) is displayed under Other Settings and edited in place at the root, so it stays a top-level key.

Controls by value type#

Value Control
true / false Toggle switch
Number Number input
String up to 120 characters, no line breaks Single-line text input
Longer string, or one containing line breaks Textarea
List One control per item, a remove button on each and an Add item button. New items copy the type of the first item, so a list of objects gets a new empty object
Object The same thing one level down, indented with a left border

Every field has a bin icon to remove the key entirely. There’s no undo other than Discard, which throws away all unsaved changes on the tab.

Types are inferred from the value as it was parsed, which has one consequence worth knowing: an empty string, a null or a key you’ve just added via Add field is a text input, and stays one. If you want a boolean, type the key into raw mode as key: false first and it’ll show up as a toggle.

What’s not covered#

Anything that needs structure the form can’t guess at. A new menu with several entries, a languages block for a new language, or an outputFormats definition is far quicker to type into raw mode than to build one Add item at a time. The Hugo configuration reference has the shape of every setting.