Hyperbole Implicit Buttons: Build your Hyperverse | Charlie Holland's Blog
Skip to main content<br>Hyperbole Implicit Buttons: Build your Hyperverse<br>Hyperbole Implicit Buttons: Build your Hyperverse<br>July 29, 2026
© 2026 Charlie Holland
Hyperbole Implicit Buttons: Build your Hyperverse
Hyperbole Implicit Buttons: Build your Hyperverse
Table of Contents
1. TLDR
2. About  emacs hyperbole implicitButtons
3. The Pitch  hyperbole implicitButtons
4. Recognizers and Actions  hyperbole hypertext
5. A Tour of the Built-ins  hyperbole implicitButtons
6. What Will This Keypress Do?  emacs hyperbole
7. The Cascade  hyperbole implicitButtons
8. Buttons by Hand  hyperbole implicitButtons
9. Create Your Own Button Types  hyperbole elisp
9.1. defal: Define an Action Link
9.2. defil: Define an Implicit Link
9.3. defib: Define an Implicit Button
9.4. Closing Thoughts on Button Crafting
10. Try It  hyperbole
11. Further Reading
1. TLDR
Your Emacs is full of markup-free hyperlinks embedded in your text, but<br>you're missing a way to utilize them. Think about a file path in a<br>README, a URL in an email, a commit 55a1f0 in a git log, or a function<br>call. All of these have a logical referent (a location or action), and<br>you likely have a good idea of what they should point to. GNU<br>Hyperbole's implicit buttons are pattern recognizers that identify<br>different hyperlink buttons in many Emacs contexts. Hyperbole's Action<br>Key (a single keybinding) then activates such buttons when it is<br>pressed. This post walks through the built-in recognizers, shows how to<br>ask Emacs "what will happen if I press the Action Key here?" (C-h<br>A), explains the cascade of Hyperbole's pattern recognizers that picks<br>the winning action, and demonstrates how to craft your own button types<br>with a one-liner (defal), a regular expression (defil), or the full<br>power of Lisp (defib).
2. About  emacs hyperbole implicitButtons
This is the second post in my series on Hyperbole. The first post<br>introduced HyWiki, the zero-markup personal wiki, and showed that<br>Hyperbole has almost no adoption burden.
That post introduced implicit buttons in passing, because a HyWikiWord<br>is an implicit button. In this post I want to pay closer attention to<br>the concept, the capability, and the extension API, because the implicit<br>button is the mechanism that turns your information into a navigable,<br>actionable hyperverse.
3. The Pitch  hyperbole implicitButtons
The text that Emacs displays and edits is already full of hyperlinks<br>that need to be brought to life. The mechanism to recognize and act on<br>these hyperlinks is exactly what GNU Hyperbole provides. Without<br>Hyperbole, these hyperlinks are inert. You probably have a good mental<br>model of what these links might be and what they point to, but you lack<br>a consistent, push-button reflex to act upon them.
Hyperbole's Implicit Buttons ship with a very large number of<br>recognizers for different types of hyperlinks that are already there in<br>your text, and allow you to act on them in place, without adding any<br>markup or reformatting the buffer. This freedom from markup is what<br>expands the reach of implicit buttons and makes them effective in<br>read-only buffers as well.
By design, Hyperbole is easy to adopt even if you're integrating<br>thousands of files into a well-used file system. With a few lines of<br>Elisp to install and configure Hyperbole, virtually everything you can<br>open with Emacs gets automatically hyperlinked; over 40 built-in<br>implicit button types (and an unbounded number of custom ones) propagate<br>transparently throughout your system.
In other words, Hyperbole brings your text to life!
4. Recognizers and Actions  hyperbole hypertext
An explicit hyperlink requires markup and time to establish its link<br>to its referent. For example, an or an [[Org Link]]<br>requires something wrapped in delimiters so that some software knows<br>it is actionable. By contrast, an implicit button is recognized<br>solely from the text provided by the author via natural patterns such as<br>URLs, pathnames, key bindings, etc. Implicit buttons are ordinary<br>pieces of text that already carry their own meaning. Hyperbole author<br>Bob Weiner sums these up as "pattern recognizers across large text<br>corpuses".
(A quick note on terminology: Hyperbole also has its own explicit<br>buttons, which I will cover in a future post, but this post is entirely<br>about implicit buttons, which need no such creation step.)
Each implicit button type (ibtype) pairs two things, a recognizer<br>and an action type that are triggered with the press of the Action Key :
A recognizer is a predicate that inspects the text around point and<br>decides whether it matches the pattern.
Upon recognition, an action type is combined with parameters,<br>including any text matched by the recognizer, to form an action<br>that is fired.
John Wiegley, a longtime maintainer of GNU Emacs, frames the division this way1:
Hyperbole lifts some of the cognitive burden from...