# The button is already in the buffer, you just press M-RET

> GNU Hyperbole is three decades of Emacs Lisp that turns text you did not write for it into hypertext. It recognises patterns already sitting in a buffer, from grep output to stack backtraces to Org links, and activates them with M-RET, with C-u M-RET for a preview first. The build system is developer-only, ELPA syncs the master branch daily so release tags lag the source, and the README announces 9.2.0 while the newest tag is 9.1.0.

**rswgnu/hyperbole** — GNU Hyperbole: The Everyday, Hypertextual Information Manager

- Repository: https://github.com/rswgnu/hyperbole
- Stars: 194 · Forks: 13
- Language: Emacs Lisp
- License: GPL-3.0
- Published: 2026-08-22 · Updated: 2026-08-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/rswgnu-hyperbole

## Like Markdown for hypertext, except you wrote no markup

The self-description is that GNU Hyperbole, pronounced Ga-new Hi-per-bo-lee, is like Markdown for hypertext, and the difference is where the markup comes from. Instead of you marking up a document, Hyperbole recognises dozens of pre-existing patterns that are already in the buffer, in any mode, and can turn them into hyperbuttons immediately. The named list runs from email addresses, URLs, and grep -n output through programming backtraces, sequences of Emacs keys, programming identifiers, Texinfo and Info cross-references, Org links, and Markdown links, and on and on. So loading Hyperbole makes text come to life with no extra effort and no complex formatting, which is the whole pitch: the text is the channel and the recogniser does the work rather than you maintaining a convention. Pattern detection is per buffer and per mode, not per file type you had to configure.

## M-RET activates, C-u M-RET shows you first

One key does the work. Pressing M-RET by default on any kind of Hyperbole button activates it, so you can rely on muscle memory and let the computer work out what to do from context. The second binding is the one that makes that safe: C-u M-RET shows you what any button will do in any context before you activate it, so when you are unsure, or when a button would email someone, you can check first. Emailing a button is itself a supported action, which is one reason the preview exists. Buttons can also be created without any keyboard markup at all, by dragging between a source and a destination window with a mouse button depressed, and later activated by pressing or clicking on them, or by giving the name of the button. Creating a link and firing a link are therefore both single actions, and the name-based activation is what makes a button reachable from somewhere other than where it lives.

## The web is one button type, not the architecture

Hyperbole ships a set of button types that work without any markup at all, and the point about how they are constructed is that each one is written in Lisp and can be wholly independent of the web. Web links are one type of Hyperbole link, not something fundamental to the link architecture, which is a deliberate reversal of how a browser-shaped tool tends to be built. The practical consequence is that the tool stays useful when the web is not involved at all, and it is described as a good assistant when editing HTML or JavaScript or when browsing pages and links, because the same recognisers apply there too. Extending it is a matter of a few lines of code, or even a few words, to define your own implicit button type for your own buttons, after which they can be activated anywhere in Emacs rather than only in buffers you set up yourself.

## One global minor mode, no dependencies, quick to remove

The installation story is deliberately low-friction. Hyperbole installs as a single Emacs package with no dependencies outside standard Emacs libraries, most of it is one global minor mode that you can activate and deactivate at will, and it can be uninstalled quickly as well, so the README frames trying it as carrying no risk. Activation is C-u M-x hyperbole-mode RET, and the suggested next step is the interactive demo at C-h h d d. There is a neat demonstration of the implicit button idea built into the document itself: with Hyperbole loaded, pressing M-RET inside any of the brace-delimited series of keys in the README executes them on the fly, which the text describes as easy keyboard-macro style buttons in any text. The claim that Hyperbole is something to be experienced rather than understood from reading is the reason that demo exists, and the reason the manual is offered in three formats.

## The Makefile warns you off, then ELPA does the releasing

The build file is the clearest statement of who the project is for. Its header says that GNU Hyperbole should be installed for use via the Emacs package system, pointing at the INSTALL file, the Info node (emacs)Packages, and that only Hyperbole developers and testers need to use the file for building distributions while others may ignore it. It also instructs you to edit the configurable section before your first make. The targets are narrow: make help for options, make doc to build only the manual output formats, make pkg to assemble an Emacs package for testing, make release to upload a tar ball to ftp.gnu.org, make website to generate and upload site sources, and make env to list build environment versions. Releasing to ELPA needs none of that, because the master branch on savannah is synced daily by ELPA automatically, so tags trail the source.

## Thirty-two years between the two dates in the Makefile

The file header carries an origin line and a modification line, and the gap between them is the history in two timestamps. The original date is 15-Jun-94 at 03:42:38 and the last modification is 27-Sep-26 at 02:26:14, both by Bob Weiner, with a copyright line reading 1994-2026 Free Software Foundation, Inc. and a pointer to the HY-COPY file for license information. So the same author has maintained this for the whole span, under GPL-3.0, and the repository is not archived with a last push dated September 16, 2026. The supporting files match that age and convention: a ChangeLog rather than a generated changelog, COPYING alongside HY-COPY, a .mailmap for contributor identity, and a .dir-locals.el for Emacs project settings. Documentation is likewise layered, with a web manual, an Info manual browsable inside Emacs, a PDF manual, and a separate path holding the stable release documentation.

## Flat h-prefixed sources, and demo files with their own extensions

The Lisp is not in a subdirectory. Every source file sits at the top of the repository with an h prefix and a role-based suffix, which makes the architecture readable from the file list alone. Activation lives in hact.el, hactypes.el, and hargs.el; the button machinery in hbut.el, hargs.el, hasht.el, hbdata.el, and hbmap.el; history in hhist.el and activities and consultation in hsys-activities.el and hsys-consult.el. Integrations are split by external package, with hib-debbugs.el, hib-doc-id.el, hib-kbd.el, and hib-social.el, mail spread across hmail.el, hmh.el, hrmail.el, and hsmail.el, and the mouse layer alone occupying seven files from hmouse-drv.el through hmouse-tag.el. Configuration is hsettings.el, initialisation hinit.el. The non-Lisp files are just as telling: DEMO, FAST-DEMO, and DEMO-ROLO.otl, plus two .kotl outlines, HY-CONCEPTS.kotl and HY-WHY.kotl, and .hypb alongside _hypb as the project's own button files.

## The title says 9.2.0, the newest tag says 9.1.0

Version reporting is where the repository is least tidy. The README heading reads GNU Hyperbole 9.2.0, while the newest published tag is hyperbole-9.1.0 from July 27, 2026, and that release is named as an interim release to sync with package archive versioning, which says plainly that the number moved for packaging reasons rather than feature reasons. Before it sat hyperbole-9.0.1 from March 10, 2024, and before that hyperbole-8.0.2pre from February 19, 2024, so the 9.0 line stood for more than two years. The 9.0.1 and 8.0.2pre names are also inconsistent, one hyphenated with the project name and one not. The same split shows up in the documentation pointers, where the stable release manual lives under a stable path while the development manual, Info manual, and PDF manual are referenced directly. If you pin a version, pin the tag rather than the README heading.

## Conclusion

GNU Hyperbole suits Emacs users who already live in buffers full of incidental URLs, grep hits, backtraces, and cross-references, and who would rather not maintain a markup convention. It does not suit anyone who wants a documented data model, because the button types are Lisp functions you extend yourself. Before installing, read INSTALL, activate the mode with C-u M-x hyperbole-mode, then run the C-h h d d demo, and skip the Makefile, which its own comments say is for developers and testers only.

## FAQ

### What is GNU Hyperbole?

An Emacs Lisp information manager described as being like Markdown for hypertext. It recognises dozens of existing patterns in any buffer regardless of mode and turns them into hyperbuttons you activate with a single key, with no markup language to learn.

### Which key activates a Hyperbole button?

M-RET by default. C-u M-RET shows what any button will do in any context before you activate it, and a button can be emailed. Buttons can also be activated by clicking on them or by giving the name of the button.

### Does Hyperbole need anything outside Emacs?

No. It installs as a single Emacs package with no dependencies outside standard Emacs libraries. Most of it is one global minor mode you activate with C-u M-x hyperbole-mode and deactivate at will, and it can be uninstalled quickly.

### Do I need the Makefile to build Hyperbole?

No. The Makefile states that only Hyperbole developers and testers need it for building distributions and that others may ignore it. Installation is meant to go through the Emacs package system, and releasing to ELPA is automatic because the master branch is synced daily.

### What is the current version of GNU Hyperbole?

The README heading reads 9.2.0, while the newest tag is hyperbole-9.1.0 from July 27, 2026, named as an interim release to sync with package archive versioning. The tag before that was hyperbole-9.0.1 from March 10, 2024.

### How do I learn Hyperbole beyond the README?

There is a web manual, an Info manual browsable inside Emacs, a PDF manual, and separate documentation for the stable release. The README also lists a long overview video with timestamped sections, an unscripted demo at EmacsATX that covers how it differs from Org mode, and conference talks on HyWiki, buttons, Org mode, HyRolo, Koutline, and HyControl.

## Sources

- [Official README](https://github.com/rswgnu/hyperbole#readme)
- [Project repository](https://github.com/rswgnu/hyperbole)
- [Release notes](https://github.com/rswgnu/hyperbole/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/rswgnu-hyperbole
