forked from rswgnu/hyperbole
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
382 lines (293 loc) · 16.7 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
# README --- Information GNU Hyperbole users and maintainers should read
#
# Author: Bob Weiner
#
# Orig-Date: 19-Oct-91 at 03:27:47
# Last-Mod: 24-Jan-22 at 00:19:12 by Bob Weiner
#
# Copyright (C) 1989-2021 Free Software Foundation, Inc.
# See the "HY-COPY" file for license information.
#
# This file is part of GNU Hyperbole.
We hope you enjoy using GNU Hyperbole. Feel free to mail or post news
containing this file wherever it may be of use. Hyperbole is designed and
written by Bob Weiner. It is maintained by him and Mats Lidell.
===========================================================================
* Table of Contents
===========================================================================
* Summary
* Files
* Programmer Quick Reference
* User Quotes
* Why was Hyperbole developed?
===========================================================================
* Summary
===========================================================================
GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is like
Markdown for hypertext. Hyperbole automatically recognizes dozens of
common, pre-existing patterns in any buffer regardless of mode and can
instantly activate them as hyperbuttons with a single key: email addresses,
URLs, grep -n outputs, programming backtraces, sequences of Emacs keys,
programming identifiers, Texinfo and Info cross-references, Org links,
Markdown links and on and on. All you do is load Hyperbole and then your
text comes to life with no extra effort or complex formatting.
Hyperbole includes easy-to-use, powerful hypertextual button types without
the need to learn a markup language. Hyperbole's button types are written
in Lisp and can be wholly independent of the web, i.e. web links are one
type of Hyperbole link, not fundamental to its link architecture. However,
Hyperbole is a great assistant when editing HTML or Javascript or when
browsing web pages and links.
Hyperbole comes pre-built with most of the implicit button types you will
need but with a little extra effort and a few lines of code (or even just a
few words), you can define your own implicit button types to recognize your
specific buttons and then activate them anywhere in Emacs. You press a
single key, {M-RET} by default, on any kind of Hyperbole button to activate
it, so you can rely on your muscle memory and let the computer do the hard
work of figuring out what to do. {C-u M-RET} shows you what any button will
do in any context before you activate it, so you can always be sure of what
you are doing when needed or if some emails you a button (you can do that
too).
Hyperbole is something to be experienced and interacted with, not understood
from reading alone. It installs normally as a single Emacs package with no
dependencies outside of standard Emacs libraries. Most of Hyperbole is a
single global minor mode that you can activate and deactivate at will. And
it can be uninstalled quickly as well if need be, so there is no risk to
giving it a spin.
Once you have it installed and activated {C-u M-x hyperbole-mode RET}, try
the interactive demo with {C-h h d d}. In fact, if you have Hyperbole
loaded, you can press {M-RET} inside any of the brace delimited series of
keys you see in this document and it will execute them on-the-fly (easy
keyboard-macro style buttons in any text).
Hyperbole can dramatically increase your productivity and greatly reduce the
number of keyboard/mouse keys you'll need to work efficiently.
In short, Hyperbole lets you:
1. Quickly create hyperlink buttons either from the keyboard or by dragging
between a source and destination window with a mouse button depressed.
Later, activate buttons by pressing/clicking on them or by giving the name of
the button.
2. Activate many kinds of `implicit buttons' recognized by context within
text buffers, e.g. URLs, grep output lines, and git commits. A single key
or mouse button automatically does the right thing in dozens of contexts;
just press and go.
3. Build outlines with multi-level numbered outline nodes, e.g. 1.4.8.6,
that all renumber automatically as any node or tree is moved in the
outline. Each node also has a permanent hyperlink anchor that you can
reference from any other node;
4. Manage all your contacts quickly with hierarchical categories and embed
hyperlinks within each entry. Or create an archive of documents with
hierarchical entries and use the same search mechanism to quickly find any
matching entry;
5. Use single keys to easily manage your Emacs windows or frames and quickly
retrieve saved window and frame configurations;
6. Search for things in your current buffers, in a directory tree or across
major web search engines with the touch of a few keys.
The common thread in all these features is making retrieval, management and
display of information fast and easy. That is Hyperbole's purpose.
Hyperbole works well on GNU Emacs 24.4 or above. It is designed and written
by Bob Weiner. It is maintained by him and Mats Lidell. Its main
distribution site is: https://www.gnu.org/software/hyperbole. If any term in
here is new or unfamiliar to you, you can look it up in the Hyperbole Manual
Glossary.
===========================================================================
* Files
===========================================================================
For a more extensive summary of Hyperbole with text and images, see the
Hyperbole home page: https://www.gnu.org/software/hyperbole. If you have
already downloaded Hyperbole, see the "HY-ABOUT" file for a longer
description and overview of Hyperbole.
See "FAST-DEMO" for a demonstration of standard Hyperbole button capabilities.
This is the best way to initially interactively learn about Hyperbole after
installing it.
"man/im/demo.png", "man/im/hyperbole-cv.png" and "koutline.png" are
screenshots of Hyperbole in action.
HyControl is Hyperbole's frame and window manager; a long video
demonstrating many of HyControl's features is available at
https://youtu.be/M3-aMh1ccJk.
See the "HY-NEWS" file for a summary of new features in this release.
See the "INSTALL" file for installation and invocation instructions.
See the "HY-COPY" and "COPYING" files for license information.
See the "MANIFEST" file for summaries of Hyperbole distribution files.
Various forms of the reference manual for Hyperbole are below the
"man/" subdirectory.
===========================================================================
* Programmer Quick Reference
===========================================================================
"MANIFEST" summarizes most of the files in the distribution.
See "DEMO" for a lengthier tutorial of standard Hyperbole button
capabilities. This is the best way to go deeper into all of Hyperbole.
The Hyperbole Manual is a reference manual, not a simple introduction.
Naming conventions:
- All Hyperbole-specific code files begin with an 'h', aside from the
Koutliner files which are in the kotl/ subdirectory and begin with a 'k'.
- Hyperbole user-interface files begin with 'hui-' or 'hmouse-'.
- Files that define implicit button types begin with 'hib'.
- Encapsulations of foreign systems begin with 'hsys-'.
Most of the standard Emacs user interface for Hyperbole is located in
"hui.el". Most of the Hyperbole application programming interface can be
found in "hbut.el". "hbdata.el" encapsulates the button attribute storage
implemented by Hyperbole. "hmail.el" provides a basic abstract interface
for integrating mail readers other than Rmail into Hyperbole.
See the "(hyperbole)Questions and Answers" appendix in the Hyperbole
manual for information on how to alter the default context-sensitive
Hyperbole key bindings (Smart Keys).
===========================================================================
* User Quotes
===========================================================================
*** MAN I love Hyperbole!!! Wow! ***
-- Ken Olstad
Cheyenne Software, Inc.
-------
I *love* koutlines.
-- Bob Glickstein
Z-Code Software Corporation
-------
GNU Hyperbole is a game-changer for your mental model of information
management and personal productivity. Even if you don't use it you should
study one or two of the modules and compare them to how you solve the same
problem with your preferred tool of choice. It is subtle, and subtle is one
of the hardest and post powerful things to reside in your mental landscape
these days.
-- Grant Rettke
Org2Blog Maintainer
-------
One of the nicest things about Hyperbole is that it's available
everywhere. Org-mode is a mode and its features are only available in
*.org files. For instance if you dropped into `eshell' or `ansi-term' and
did `ls', you can move point to any of the directory's contents, do M-RET
(or Shift-Button2) and jump to that file. And that's just one example.
Note that this means that all Hyperbole functionality is available in
*.org files as well. To me, except for the Hyperbole outliner, that means
complementary not conflicting. It's Hyperbole *and* org-mode, not
Hyperbole vs. org-mode.
Additionally, off the bat, I found it very well documented and for me
that's a proxy for the quality of a package. The maintainers are quite
responsive. There's plenty more functionality that I haven't uncovered yet
but due to the ease of installation and the quality of the documentation,
digging into it is actually fun.
-- Aditya Siram
-------
For me, Emacs isn't Emacs without Hyperbole. I have depended on Hyperbole
daily since 1992, when I first started using it to manage my development
environment. It didn't take long before I could summon almost any
information I needed directly from within my editing environment with an
implicit button. Since I almost never have to slow down to look for
things--one context-dependent button usually produces exactly what I need
--I am able to maintain focus on the task I am working on and complete it
more quickly. With its gestural interface, seamless integration with other
Emacs packages and incredibly useful set of core features. I think that
Hyperbole is one of the best designed and most easily extensible software
products I have ever come across. It is certainly the one which has made
the biggest improvement in my personal productivity.
-- Chris Nuzum
Co-founder, Traction Software, Inc.
-------
I've found Hyperbole (in conjunction with XEmacs) to be very useful
for signal processing algorithm development.
For me, it has almost completely obsoleted the engineering notebook:
I keep a set of files with ideas, algorithms, and results, linked
together and to the implementation in C++ files. Using XEmacs'
support for embedding graphics, I've written a mode that accepts
image tags (formatted like HTML), and reads in GIF files to display
plots. I have another program that converts the file to HTML (not
perfect, but adequate), so I can put any aspect of development on
our internal web for others to see.
-- Farzin Guilak
Protocol Systems, Inc., Engineer
-------
I am blind and have been using Hyperbole since 1992. I used to use a PC as
a talking terminal attached to a UNIX system, but then I developed
Emacspeak which lets me use Emacs and Hyperbole from standard UNIX
workstations with an attached voice synthesizer.
My main uses are:
1) Global and implicit buttons for jumping to ftp sites.
2) The contact manager with Emacspeak support.
3) Explicit buttons as part of comments made about a structured document.
Each button jumps to the document section referred to by the comment.
This is very, very useful.
4) The Hyperbole Koutliner, which I find a very useful tool. I've
implemented Emacspeak extensions to support it.
-- TV Raman
Google Inc.
-------
I've been a grateful Hyperbole user for a few years now. Hyperbole's
flexibility and ease of use is a marvel.
Mainly, I write easy little implicit button types (and corresponding action
types) to make my life easier. For example, I have an implicit button type
to bury certain buffers when I click at their bottoms, one that recognizes
a bug report record in various contexts and edits it, one that links pieces
of test output in a log file to the corresponding test case source code
(EXTREMELY helpful in interpreting test output), others that support our
homegrown test framework, one that handles tree dired mode the way I'd
like, one that completely handles wico menus (I've also overloaded the
wconfig actions triggered by diagonal mouse drags with wicos actions), and
a couple that support interaction with BBDB.
Other than that, I keep a global button file with 30 or so explicit buttons
that do various little things, and I index saved mail messages by putting
explicit link-to-mail buttons in an outline file.
-- Ken Olstad
Cheyenne Software, Inc.
-------
In general, Hyperbole is an embeddable, highly extensible hypertext
tool. As such, I find it very useful. As it stands now, Hyperbole is
particularly helpful for organizing ill-structured or loosely coupled
information, in part because there are few tools geared for this purpose.
Hyperbole also possesses a lot of potential in supporting a wider
spectrum of structuredness, ranging from unstructured to highly
structured environments, as well as structural changes over time.
Major Uses:
* Menu interface to our own collaborative support environment called
CoReView: This interface brings together all top-level user commands
into a single partitioned screen, and allows the end user to interact
with the system using simple mouse-clicking instead of the meta-x key.
* Gateway to internet resources: this includes links to major Internet
archive sites of various types of information. Links are made at both
directory and file levels.
* Alternative directory organizer: The hierarchical nature of the Unix
file system sometimes makes it difficult to find things quickly and
easily using directory navigational tools such as dired. Hyperbole
enables me to create various "profile" views of my directory tree, with
entries in these views referring to files anywhere in the hierarchy.
* Organizing and viewing online documentation: using Hyperbole along with
Hyper-man and Info makes it truly easy to look up online documentation.
* Other desktop organization tasks: including links to various mail
folders, saved newsgroup conversation threads, online note-taker,
emacs-command invocations, etc.
-- Dadong Wan
University of Hawaii
-------
Hyperbole is the first hyper-link system I've run across that is
actually part of the environment I use regularly, namely Emacs. The
complete flexibility of the links is both impressive and expected -- the
idea of making the link itself programmable is clever, and given that one
assumes the full power of Emacs. Being able to send email with buttons
in it is a very powerful capability. Using ange-ftp mode, one can make
file references "across the world" as easily as normal file references.
-- Mark Eichin
Cygnus Support
-------
I just wanted to say how much I enjoy using the Hyperbole Koutliner.
It is a great way to quickly construct very readable technical documents
that I can pass around to others. Thanks for the great work.
-- Jeff Fried
Informix
-------
The Hyperbole system provides a nice interface to exploring corners of
Unix that I didn't know existed before.
-- Craig Smith
===========================================================================
* Why was Hyperbole developed?
===========================================================================
Hyperbole was originally designed to aid in research aimed at Personalized
Information production/retrieval Environments (PIEs). Hyperbole was a
PIE Manager that provided services to PIE Tools. PIEmail, a mail reader was
the only PIE Tool developed as part of this research but Hyperbole has
greatly expanded since then and has long been a production quality toolset.
An examination of many hypertext environments as background research did
not turn up any that seemed suitable for the research envisioned, mainly
due to the lack of rich, portable programmer and user environments. We also
tired of trying to manage our own distributed information pools with standard
UNIX tools. And so Hyperbole was conceived and raved about until it
got its name.
Since then Hyperbole has proved indispensable at improving information
access and organization in daily use over many years. Why not start
improving your information handling efficiency today?