Skip to content

Glossary

Concepts pertinent to operational usage of Hyperbole are defined here. See Glossary in the GNU Emacs Manual, if any emacs-related terms are unfamiliar to you.

Ace Window

Emacs extension package that labels windows with letters and allows quick keyboard selection or other operations on a specific window. Hyperbole extends this with a number of additional commands like throw a buffer to a window or replace a windows’s contents. See Keyboard Drags.

Action

An executable behavior associated with a Hyperbole button. Links are a specific class of actions which display existing entities, such as files. See also Action Type.

Action Button

An implicit button that uses a universal button syntax delimited by <angle brackets> to invoke any available Hyperbole action type or Emacs Lisp function. Alternatively, if it is an Emacs Lisp variable name, its action is to display the variable value.

Action Key

See Smart Key.

Action Type

Emacs Lisp commands that specify Hyperbole button behaviors. Action types contain zero or more arguments which must be given values for each button with which they are associated. An action type together with a set of values is an action. Actype is a synonym for action type.

Internally, Hyperbole defines its own namespace for action types defined with its defact macro by prefixing them with ibtypes::. Symbols with this prefix are regular Emacs Lisp commands.

Activation

A request to a Hyperbole button to perform its action. Ordinarily the user presses a key which selects and activates a button.

Argument

A button-specific value fed to a Hyperbole type specification when the button is activated.

Assist Key

See Smart Key.

Attribute

A named parameter slot associated with a category or type of Hyperbole button. An attribute value is typically specific to a particular button instance.

Augment

The Augment system, originally named NLS, was a pioneering research and production system aimed at augmenting human intellect and group knowledge processing capabilities through integrated tools and organizational development strategies. This approach led to the invention of much of interactive computing technology decades ahead of other efforts, including: the mouse, chord keyboards, screen windows, true hypertext, outline processors, groupware, and digitally signed documents. See References, which cites several Douglas Engelbart papers on the subject. The Koutliner demonstrates a few of the concepts pioneered in Augment.

Buffer

An Emacs buffer is an editable or viewable text, possibly with special formatting such as an outline or table. It may also be attached to a process, receiving and updating its text as the process handles changing information.

Button

A selectable Hyperbole construct which performs an action. A button consists of a set of attributes that includes: a textual label, a category, a type and zero or more arguments. Explicit buttons also have creator, create time, last modifier, and last modifier time attributes.

Buttons provide user gateways to information. Users see and interact with button labels; the rest of the button attributes are managed invisibly by Hyperbole and displayed only in response to user queries.

Button Activation

See Activation.

Button Attributes

See Attributes.

Button Data

Lists of button attribute values explicitly saved and managed by Hyperbole. One list for each button created by Hyperbole.

Button File, local

A per-directory file named HYPB that may be used to store any buttons that link to files within the directory. It may be displayed via a menu selection whenever a user is within the directory.

Button File, personal

A per-user file named HYPB that stores all global buttons for the user and any other buttons used to navigate to other information spaces. It may be displayed via a menu selection at any time.

Button Key

A normalized form of a button label used internally by Hyperbole.

Button Label

A text string that visually indicates a Hyperbole button location and that serves as its name and unique identifier. Within a buffer, buttons with the same label are considered separate views of the same button and so behave exactly alike. Since button labels are simply text strings, they may be embedded within any text to provide non-linear information or operational access points.

Button Selection

The act of designating a Hyperbole button upon which to operate. Use the Action Key to select a button.

Category

A class of Hyperbole buttons: implicit, explicit or global.

Cell

See Kcell.

Children

The set of koutline cells which share a common parent cell and thus, are one level deeper than the parent.

Class

A group of functions and variables with the same prefix in their names, used to provide an interface to an internal or external Hyperbole abstraction.

Consult

An Emacs extension package that provides asynchronous search and narrow wrappers around common search commands like grep, ripgrep, find and locate.

Hyperbole uses this package to provide convenience commands for interactive, line-oriented searches.

{M-x hsys-org-roam-consult-grep RET}

Interactively searches Org Roam notes in org-roam-directory with consult.

{M-x hsys-org-consult-grep RET}

Interactively searches Org notes in org-directory with consult.

Context

A programmatic or positional state recognized by Hyperbole. We speak of Smart Key and implicit button contexts. Both are typically defined in terms of surrounding patterns within a buffer, but may be defined by arbitrary Emacs Lisp predicates.

Display

See Screen.

Domain

The contexts in which an implicit button type may be found, i.e. where its predicate is true.

Drag

A mouse button press in one location and following release in another location.

An Action Button that links to an explicit button. It begins with <elink: followed by an explicit button label, an optional ebut file and ends with a closing >.

Environment

See Hyperbole Environment.

Explicit Button

A button created and managed by Hyperbole, associated with a specific action type. By default, explicit buttons are delimited like this ‘<(fake button)>’. Direct selection is used to operate upon an explicit button.

Flymake

Flymake is an Emacs library that lints your code in the background. It provides flymake-minor-mode for source buffers and flymake-diagnostics-buffer-mode for listing the linter issues for a given source buffer. Hyperbole extends this library with Smart Key jump and display issue contexts as well as a key map of commands in source buffers to support removal of flymake issues without having to jump to the issue listing buffer.

Frame

An Emacs frame displays one or more Emacs windows and widgets (menubars, toolbars, scrollbars). Under a graphical window system, this is a single window system window. On a dumb terminal, only one frame is visible at a time as each frame generally fills the whole terminal display, providing a virtual screen capability. Emacs windows exist within a frame.

Global Button

A Hyperbole button which is accessed by name rather than direct selection. Global buttons are useful when one wants quick access to actions such as jumping to common file locations or for performing sequences of operations. One need not locate them since they are always available by name, with full completion offered. All global buttons are stored in the file returned by the function call, (gbut:file), and may be activated with the Action Key when editing this file. By default, this is the same as the user’s personal button file.

An Action Button that links to a global button. It begins with <glink: followed by a global button label and then a closing >.

Global Button File

See Button File, personal and Global Button.

Grid

See Windows Grid.

The maximum length of a button label is limited by the variable hbut:max-len. If 0, there is no limit and searches for button end delimiters can go as far as the end of the buffer. Use the function, (hbut:max-len), to read the proper value.

History

A Hyperbole menu command that moves back one step in Hyperbole hyperlink traversal and restores the prior frame and window configuration.

Hook Variable

A variable that permits customization of an existing function’s operation without the need to edit the function’s code. See also the documentation for the function (run-hooks).

HyControl

HyControl, the Hyperbole window and frame control manager, offers fast, single key manipulation of window and frame creation, deletion, sizing, position and face zooming (enlarging/shrinking).

HyNote

HyNote is a start on Hyperbole’s note taking system. It presently simply provides an experience similar to HyWiki, but for Org directory and Org Roam file and headline links. See the documentation for the implicit button type it defines, hynote-file.

HyNote supports Org, Markdown, Koutline and Emacs Outline file formats. It uses UUIDs and HyRolo for quick note lookups across matching files in hynote-directory-list.

In the future, it will also provide a universal way to easily link to information across many file formats.

See also HyWiki.

Hyperbole

The flexible, programmable information management and viewing system documented by this manual. It utilizes a button-action model and supports hypertextual linkages. Hyperbole is all things to all people.

Hyperbole Environment

A programmatic context within which Hyperbole operates. This includes the set of Hyperbole types defined and the set of Hyperbole code modules loaded. It does not include the set of accessible buttons. Although the entire Emacs environment is available to Hyperbole, we do not speak of this as part of the Hyperbole environment.

Hypertext

A text or group of texts which may be explored in a non-linear fashion through associative linkages embedded throughout the text. Instead of simply referring to other pieces of work, hypertext references when followed actually take you to the works themselves.

HyRolo

HyRolo, the Hyperbole record/contact manager, provides rapid lookup of multi-line, hierarchically ordered free form text records. It can also lookup records from Google/GMail Contacts and the Big Brother DataBase (BBDB) package.

HyWiki

HyWiki, the Hyperbole personal wiki tool, lets you create a personal wiki of interlinked Org files in a single directory, where each page name automatically becomes a live HyWikiWord link back to the associated page whenever added in any file within the HyWiki directory. HyWikiWords also work outside this directory if you turn on the minor hywiki-mode in other buffers. A single command, {C-u C-h h h p}, publishes/exports an entire HyWiki to HTML for display on the web.

See the documentation for its implicit button types, hywiki-word and hywiki-existing-word.

An Action Button that links to another implicit button. It begins with <ilink: followed by an implicit button label, an optional ibut file and ends with a closing >.

Implicit Button

A button recognized contextually by Hyperbole. Such buttons contain no button data but may have an optional preceding label that looks like this: ‘<[label]>’. See also implicit button type.

Implicit Button Type

A specification of how to recognize and activate implicit buttons of a specific kind. Implicit button types often utilize structure internal to documents created and managed by tools other than Hyperbole, for example, programming documentation. Ibtype is a synonym for implicit button type. See also system encapsulation.

Internally, Hyperbole defines its own namespace for ibtypes defined with its defib macro by prefixing them with ibtypes::. Symbols with this prefix are invokable Emacs Lisp functions.

InfoDock

InfoDock is an older integrated productivity toolset for software engineers and knowledge workers built atop XEmacs; it is no longer maintained or updated, though many of its packages can be used with GNU Emacs. An older version from 1999 may be found at infodock.sf.net.

InfoDock has much of the power of GNU Emacs, but with an easier to use and more comprehensive menu-based user interface. Most objections people raise to using emacs have already been addressed in InfoDock. InfoDock is meant for people who prefer a complete, pre-customized environment in one package.

Instance Number

A colon prefaced number appended to the label of a newly created button when the button’s label duplicates the label of an existing button in the current buffer. This number makes the label unique and so allows any number of buttons with the same base label within a single buffer.

Jedi

See also https://tkf.github.io/emacs-jedi/latest/.

Jedi is a Emacs package for Python completion, definition and documentation lookup.

Key Sequence

A single sequence of keys that can invoke an Emacs command.

Key Series

A series of one or more Emacs key sequences delimited by braces that Hyperbole processes when activated as an implicit button, as if the keys were typed in by the user.

Kcell Ref

A reference to a Koutline cell. Such a reference may be:

12 - a whole number representing a permanent idstamp

or any of the following string forms:

1 or 1b - relative id, augment style 1.2 - relative id, legal style 012 - permanent idstamp 1a=012 - both relative and permanent ids (in that order) separated by = |viewspec - a viewspec setting, rather than a cell reference

Optionally, any of these id forms (or the relative form) may be followed by zero or more whitespace characters, a | and some view specification characters. See View Specs.

An angle bracket, <>, delimited implicit button type that displays a koutline cell referent at the top of a window. The link may be of any of the following forms:

  < pathname [, kcell-ref] >
  < [-!&] pathname >
  < @ kcell-ref >

See the above definition of Kcell Ref for kcell-ref formats.

Koutline

A hierarchically ordered grouping of cells which may be stored as a file and viewed and edited as an outline.

Koutliner

Koutliner, the Hyperbole outliner, is a powerful autonumbering outliner with permanent hypertext anchors for easy hyperlinking and view specs for rapid outline view alteration.

Kcell

Cells or kcells are elements within koutlines. Each cell may contain textual and graphical contents, a relative identifier, a permanent identifier and a set of attributes such as the user who created the cell and the time of creation. See also Koutliner.

A reference from a Hyperbole button to an existing (non-computed) entity. The referenced entity is called a referent. Links are a subset of the types of actions that Hyperbole buttons support.

Local Button File

See Button File, local.

Minibuffer Window

The one line window at the bottom of a frame where messages and prompts are displayed.

Minibuffer Menu

A Hyperbole menu displayed in the minibuffer window. Each menu item within a minibuffer menu begins with a different letter that can be used to invoke the item (case doesn’t matter). Items that display other menus end with a forward slash, ‘/’.

Mouse Key

Mouse Button

See Smart Key.

NLS

See Augment.

Node

See Link or Cell.

The OO-Browser

See also https://www.gnu.org/software/oo-browser.

The GNU OO-Browser is a multi-windowed, interactive object-oriented class browser similar in use to the well-known Smalltalk browsers. It runs inside Emacs. It is unique in a number of respects foremost of which is that it works well with most major object-oriented languages in use today. You can switch from browsing in one language to another in a few seconds. It provides both textual views within an editor and graphical views under the X window system and Windows. It includes support for C, C++, Common Lisp and its Object System (CLOS), Eiffel, Java, Objective-C, Python and Smalltalk.

Hyperbole provides the mouse support for the OO-Browser, providing Smart Keys that utilize the OO-Browser’s capabilities both when it is displayed on screen and when editing code.

Org Mode

A built-in Emacs mode for outlining, note taking and scientific publishing. Hyperbole simplifies access to a number of its features and integrates its own hypermedia capabilities with those of Org mode. Hyperbole can display the referent of any Org Id. See Smart Key - Org Mode.

Org Roam

An Emacs extension package that inserts ids into Org mode files and indexes them within a Sqlite database for rapid note taking and lookup by title. Hyperbole can display the referent of any Org Roam Id and provides full-text searching of Org Roam nodes utilzing the interactive grep commands from the Consult extension package.

Outline

See Koutline.

Parent

Any koutline cell which has children.

Predecessor

The previous same level koutline cell with the same parent.

Predicate

A boolean (‘nil’ = false, non-nil = true = ‘t’) Lisp expression typically evaluated as part of a conditional expression. Implicit button types contain predicates that determine whether or not a button of that type is to be found at point.

Referent

See Link.

Remote Pathname

A file or directory on a system not shared within the local area network. The built-in Emacs library, Tramp, handles remote pathnames and Hyperbole uses it to enable viewing and editing of remote paths of the form: /<protocol>:<user>@<host>:<path> as well as web URLs. Use the Cust/Find-File-URLs menu option to enable this feature.

Rolo

See HyRolo.

Root Cell

A koutline cell which has cells below it at lower outline levels. All such cells share the same root cell.

Screen

The total display area available to Emacs frames. This may consist of multiple physical monitors arranged into a single virtual display. Screen edges are thus the outer borders of the virtual display.

Smart Key

A context-sensitive key used within Hyperbole and beyond. There are two Smart Keys, the Action Key and the Assist Key. The Action Key activates Hyperbole buttons and scrolls the current buffer line to the top of the window when pressed at the end of a line.

The Assist Key shows help for Hyperbole buttons and scrolls the current line to the bottom of the window when pressed at the end of a line.

The {C-h h d s} Doc/SmartKeys menu item displays a full summary of Smart Key capabilities. See Smart Keys, for complete details.

Smart Menus

Smart Menus are an older in-buffer menu system that work on dumb terminals and pre-dated Emacs’ own dumb terminal menu support. They are included with InfoDock (which is no longer maintained) and are not available separately. They are not a part of Hyperbole and are not necessary for its use but are still supported by the Smart Keys.

Source Buffer / File

The buffer or file within which a Hyperbole button is embedded.

Subtree

All of the cells in a koutline which share the same root cell, excluding the root cell.

Successor

The next same level koutline cell which follows the current cell and shares the same parent.

System Encapsulation

Use of Hyperbole to provide an improved or consistent user interface to another system. Typically, implicit button types are defined to recognize and activate button-type constructs managed by the other system.

Tramp

A remote file access library built-in to Emacs. It uses secure transfer and works with many types of hosts. It allows you to use remote pathnames that are accessible via Internet protocols just like other pathnames, for example when finding a file. Hyperbole recognizes pathnames of the form, /<protocol>:<user>@<host>:<path> and web URLs.

Tree

The set of cells in a koutline that share a common root cell, including the root cell.

URL

A Universal Resource Locator specification used on the World-Wide web to access documents and services via a multiplicity of protocols.

View

A perspective on some information. A view can affect the extent of the information displayed, its format, modes used to operate on it, its display location and so forth.

View Spec

A terse string that specifies a particular view of a koutline or a link referent. If a view spec is active for a buffer, the view spec appears within the modeline like so, <|view spec>. See View Specs.

Window

An Emacs window displays a single Emacs buffer within a single frame. Frames may contain many windows.

Windows Grid

A feature of HyControl invoked with {@} which creates, lays out and populates a grid of a specified size of new Emacs windows, e.g. 4 rows by 3 columns, each displaying a different buffer chosen by a set of user specifiable filters or from a list.