Source

hyperbole / DEMO

Full commit
viteno 9f60743 













































































































































































































































































































































































































































































































































































































  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
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
* Hyperbole Demonstration

BeOpen.com, the developer of Hyperbole and InfoDock (an industrial quality
turn-key version of XEmacs), sells high quality commercial support, training,
books and custom package development for InfoDock, XEmacs or GNU Emacs on a
variety of platforms.  Contact us at <info@beopen.com> or visit our web
site at http://www.BeOpen.com.

			     ------------------

This file demonstrates simple usage of the basic Hyperbole button-action
types and shows how Hyperbole can support a style of self-documenting,
interactive files.  See the glossary in the Hyperbole Manual,
"(hyperbole.info)Glossary", if terms used here are unfamiliar to you.

* Smart Keys 

Hyperbole provides two context-sensitive keys, the Action Key and the Assist
Key, jointly referred to as Smart Keys.  The Action Key is the shift-middle
mouse button on a 3-button mouse or shift-left button on a two button mouse
or {M-RET} on your keyboard.  The Assist Key is the shift-right mouse button
or {C-u M-RET}.  (InfoDock users may also use the middle mouse button as the
Action Key.)

See also the later section, <(Smart Mouse Keys)>.


** Button Activation and Help

This button prints the <(factorial)> of 5 in the minibuffer when activated
with the Action Key.  (Once you have Hyperbole installed, just press the
Action Key on the word, <(factorial)>.)  If you instead press the Assist Key,
you get help for the preceding button.  The help provides a summary report of
the button.  You will see that it utilizes the `eval-elisp' action type.  You
can also see who created it.  Try it.

Note that the create-time and mod-time are displayed using your own
timezone but they are stored as universal times.  So if you work with
people at other sites, you can mix their buttons with your own within
the same document and see one unified view of the modification times on
each button.  These times will also be useful for sorting buttons by
time when such features are provided in future Hyperbole releases.

** Smart Scrolling

By default, the variable smart-scroll-proportional is set to t (TRUE).  This
makes a press of the Action Key at the end of a line scroll forward, so that
the current line is placed at the top of the window; the Assist Key does the
reverse when pressed at the end of line; it places the current line at the
bottom of the window.  This is called proportional scrolling because the
amount of scrolling is relative to the point's position in the window.  Try
it and then come back here.

Alternatively, if this variable is set to nil (FALSE), the Smart Keys scroll
forward or backward a windowful when at the end of a line, regardless of
which line point is on, just as {C-v} and {M-v} do.

Let's try windowful scrolling a bit.  Click this button and then practice
scrolling: <(toggle-scroll-proportional)>.  If you prefer the default
proportional scrolling, click on the previous button again to restore it.

If you always want windowful scrolling, you'll have to add a setting of
smart-scroll-proportional to your "~/.emacs" file after the point at which
you load Hyperbole or else set it as part of hyperb:init-hook, which executes
whenever Hyperbole is loaded, e.g.:

   (setq hyperb:init-hook
    (list (function (lambda () (setq smart-scroll-proportional nil)))))


** Hyperbole Menus

To display the top-level Hyperbole menu, click the Action Key anywhere
within this paragraph or alternatively, use {C-h h}.  Clicking within the
paragraph, applies the default operation, given by action-key-default-function,
since the Action Key finds no more specialized context.  The default
operation happens to bring up the Hyperbole menu.

{q} or {C-g} will quit from the menu without invoking any commands if you
just want to take a look.  A menu item is selected by pressing the Action Key
over it or by typing its first letter in upper or lower case.

A click of the Assist Key on a menu item gives help on it.


** Help Buffers

Context-sensitive Action Key help typically is bound to {C-h A}.  {C-u C-h A}
displays the same kind of help for the Assist Key.  Try it.

Any buffer whose name ends in `Help*' is presumed to be a temporary buffer
that one wants to inspect and then remove from view.  If you click either the
Action or Assist Key at the end of a help buffer, the buffer is buried from
view and your window configuration is restored to its state prior to
displaying the help.  If you have removed the Smart Key help buffer, bring it
back.  Then press one of the Smart Keys at its end to remove it.  Note how
your window configuration is restored.

Remember that this works for any help buffer, whether or not Hyperbole
generated it.

* Explicit Button Samples

Hyperbole is pretty forgiving about the format of explicit buttons.  For
example, all of the following represent the same button, as long as one
clicks on the *first* line of the button, within the button delimiters:

  <(factorial button)>

  <( factorial      button)>

  Pam>  <(factorial
  Pam>    button)>

  ;; <(factorial
  ;;   button)>

  /* <( factorial      */
  /*    button )> */


If your <(Info-directory-list)> or <(Info-directory)> variables include the
directory that contains the online GNU Emacs manual, activation of the
next button will tell you about <(keyboard macros)>.  Can't remember a
Hyperbole term?  Check out the Hyperbole Manual <(glossary)>.

Here is a <(keyboard macro)> button.  It displays documentation for the first
Emacs Lisp function that follows it, e.g. (hbut:report).  You can see that a
button label can consist of a number of words, up to a set <(maximum
length)>.

A <(shell command)> button can do many things, such as display the length of
this file.  While such commands are executing, you can perform other
operations.  If you create a button that runs a shell command which
displays its own window system window, i.e. a window outside of Emacs, use
`exec-window-cmd' rather than `exec-shell-cmd' as its action type.

You can link to files such as your <(.login)> file.  Or directories,
like the <(tmp directory)>.  When creating file links, if the file you
are linking to is loaded in a buffer, you are prompted as to whether you
want the link to jump to the present point in that buffer.  If so, the
link will always jump there, so position point within the referent file
to take advantage of this feature.  Note how a separate window is used
when you activate file link buttons.  Most basic Hyperbole action types
display their results in this manner.

You can make a button an alias for another by using the `link-to-ebut'
action type.  This <(factorial alias)> button does whatever the earlier
<(factorial)> button does.

The `link-to-mail' action type allows you to reference mail messages
that you have stored away.  We can't demonstrate it here since we don't
have the mail messages that you do.

Hyperbole buttons may also be embedded within mail messages.  Even
buttons copied into mail replies can work:

    Emile said:
    >
    > Hyperbole is better than home baked bread but not as filling.
    > The following sample button displays a message, <(as long as 
    > you click within its first line)>.


* Implicit Button Samples

** Key Sequence Buttons

Any Emacs key sequence delimited with braces may be executed by
activating it as a button, for example {C-u C-p} should leave point four
lines above the button line.  A help request upon the key sequence
displays the documentation for its command binding, i.e. what it does.
If it does not represent a bound key sequence, it will not be
treated as a key sequence button.

** Implicit Path Links

Any absolute or relative pathname (whether doubly quoted or not) acts as an
implicit button that either displays the referenced path within a buffer,
passes it to an external viewer program, or runs a function that operates upon
the path.  These are `pathname' implicit buttons.  For example, activate
"HY-README".  HY-README or `HY-README' would work as well.

Most pathnames simply link to the files that they name and so are simply
displayed for editing.  The variable `hpath:suffixes' is a list of filename
suffix strings that are added to or removed from pathnames when searching for
a match.  So if "HY-README.gz" existed, the pathname button "HY-README"
would display it.  If you use the Emacs "crypt.el" package, then compressed
files will be uncompressed before they are displayed.  Activate
"HY-README.gz" and you'll see that the HY-README file is displayed as
desired.

The variable `hpath:display-alist' contains pairs of pathname expressions and
edit functions.  When a pathname matches an expression, the associated edit
function is invoked upon the pathname.

The variable `hpath:find-alist' determines the file suffixes which should be
viewed with external programs.  It also specifies the associated viewer
program for each different window system under which Hyperbole may be run.
See its documentation for more details.  Under the X window system, for
example, if you have the `xv' program, all of the following file formats may
be displayed as images: gif, tiff, xbm, pm, pbm, and jpeg.

Several prefix characters may be attached to pathnames to indicate that
a different action should be taken when the button is activated.
An exclamation point prefix indicates that the full pathname should be run
as a non-windowed shell program.  For example, try "!/bin/date".
An ampersand prefix means run the full pathname as a windowed program, e.g.
"&/usr/bin/X11/xeyes".  Finally, a hyphen indicates that the filename should
be evaluated as an Emacs Lisp program, e.g. "-hibtypes.elc", rather than
displayed.

If you use the Extended File System (EFS) package with GNU Emacs, XEmacs or
InfoDock, remote pathnames of the form:

	  /user@host.domain:/path

will be recognized by Hyperbole.

Once you have EFS configured for loading, if you are on the Internet,
you can click on any of the following to browse the contents of the
Hyperbole distribution (limit the amount you do this so as not to deny
others access to the archive):

        "/anonymous@ftp.beopen.com:/pub/hyperbole/"
	 /anonymous@ftp.beopen.com:/pub/hyperbole/

You can see that for EFS pathnames, Hyperbole recognizes them with or
without the double quote delimiters.  These same pathnames can be used
within explicit buttons which link to files or directories.  The HTML
(HyperText Markup Language) ftp pathname format used by World-Wide-Web
browsers is also recognized and may even be used with the {C-x C-f}
(find-file) command:

	 ftp://ftp.beopen.com/pub/

GNU Info (filename)node references such as "(hyperbole.info)Glossary" or
"(emacs)Glossary", work similarly, thanks to the `Info-node' button type.
Try one of the Glossary buttons above.

If you want to quickly learn how to create explicit buttons, see
"(hyperbole.info)Drags" and "(hyperbole.info)Menus".

So now when browsing the many documents that refer to filenames or Info
nodes in this way, you can just click on the name to see the contents.
(If a doubly quoted string references a local pathname that does not
exist within the file system, it will not be considered a pathname
button by Hyperbole.)  Pathname implicit buttons provide one example of
how Hyperbole can improve your working environment without you having to
do any work at all.


Hyperbole provides a history command which returns you to previous button
locations in the reverse order of the way you traverse them.  You access it
by selecting the Hist command from the top-level Hyperbole menu, {C-h h h}.
Remember this because you will want to use that command to return to this
DEMO later.

Now suppose you want to browse through a number of files within the
Hyperbole distribution.  You could use the Emacs dired subsystem,
"(emacs)Dired", but a faster way is to note that files named MANIFEST
and DIR are used to summarize the files in a directory, so we can use
each of their entries as an implicit button (of `dir-summary' type) to
take us to the file.

Let's look at "MANIFEST".  Now click anywhere within a line in the MANIFEST
file and you see that it is displayed as expected.  (Remember to use the
Hyperbole history command to return here.)  You can get help on these buttons
just like any others.

Table of contents entries in "HY-README" files act similarly.  Click on
"HY-README" to view that file and then click on a table of contents entry to
jump to the associated section in the "HY-README" file.

** World-Wide-Web URL Buttons

You can browse URLs (universal resource locators) from within any buffer
once Hyperbole is loaded.  Hyperbole's Cust (Customization) menu allows you
to set the web browser to which URLs are sent.  (Under Windows, external web
browsers are not supported; use the W3 web browser within your editor.)

Try using the Action Key on:  "http://www.beopen.com".

Full and abbreviated web and ftp URLs, e.g. www.beopen.com, are recognized
with or without quotes.

** Using URLs as Filenames

Hyperbole also allows the family of `find-file' (Open File) commands to accept
ftp and www URLs.  Both full URLs and abbreviated ones, like www.BeOpen.com,
can be recognized.  File name completion does not work with URLs thus you have
to type or paste in the entire URL.  Because there is added overhead with this
feature, it is not enabled by default.

This feature will work only if you have the EFS (Extended File System) Emacs
Lisp package installed.  To enable the feature, use the Hyperbole menu item
Cust/Find-File-URLs (or Find-File-Accepts-URLs on the Hyperbole/Customization
pulldown menu).  Either of these toggles acceptance of URLs.  When enabled
the string, URLs, appears in the parenthesized minor-mode section of the
modeline. Try it now.

To enable this feature each time you start the editor, add the following to
your personal initialization file: (hyperb:find-file-urls-mode 1)

** Grep, Occurrence, Debugger and Compiler Error Buttons, and Cscope Analyzer
   Lines

The output of `grep -n', the UNIX line pattern matcher, can be
activated as buttons that jump to each matched line within its source
file; use {M-x grep RET}.

Compiler error messages also serve as implicit buttons that jump to
associated source lines; use {M-x compile RET}.  GDB, DBX or XDB stack frames
along with GDB breakpoint listing lines also link to source lines.

{M-x occur RET} (find matches in a single buffer) and {M-x moccur RET}
(find matches across multiple buffers and files) also produce implicit
button output that displays associated source lines.

If you have the Cscope C/C++ code analyzer from the AT&T Toolchest and have
loaded the cscope.el library add-on for GNU Emacs, then the output lines from
a cscope query serve as implicit buttons which jump to associated source
lines.  Cscope goes beyond the basic Emacs tags facility to allow you to see
the callers of a function and the functions called by a specific routine.

** Annotated Bibliography Buttons

Here's a use of an annotated bibliography reference implicit button
which allows you to see a bibliography entry such as [Stallman 87] when
you activate the button between brackets.

** Completion Buttons

Often when Emacs or Hyperbole prompts for an argument in the
minibuffer, a list of possible argument completions is available by
pressing {?}.  A single Action Key press on any of these completions
inserts it into the minibuffer for your inspection.  A second press on
the same completion causes it to be used as the argument value and any
succeeding argument prompt is then displayed.  Test this technique
with a {C-x C-f} (find-file) and then a {?}.

** Hyperbole Source Buttons

If you ask for help on the [Stallman 87] button, the first line of the
help buffer will look like this:

@loc> "DEMO"

except it will contain the full pathname of the file.  If the button
were embedded within a buffer without an attached file, the first line
of the help buffer might look like:

@loc> #<buffer *scratch*>

If you click on the buffer name, the buffer will be displayed just as a
file buffer would.  This type of implicit button is called a
`hyp-source' button.

You can also activate any explicit buttons shown in a help buffer.

** UNIX Man Apropos Buttons

Below are some lines output by the UNIX `apropos' command (with a little
touchup for display purposes).  A button activation anywhere within such
a line recognizes the line as an apropos entry and tries to display the
man page for the entry.  Try it.  (If you happen to use the `superman'
package which fetches man pages in the background, you'll have to wait
for the next version of superman which removes incompatibilities with
the standard man page fetch command before you can use these
`man-apropos' implicit buttons.)

grep, egrep, fgrep (1V) - search a file for a string or regular expression
rm, rmdir (1)           - remove (unlink) files or directories
touch (1V)              - update the access and modification times of a file
cat (1V)                - concatenate and display 

** Internet Request For Comments (RFC) Document Browsing

If you are on the Internet and you have the ange-ftp or EFS remote file
handling package for GNU Emacs, you can retrieve and browse RFC documents
used in Internet standard-making.  Simply use the Action Key on an RFC
document identifier, like RFC-822.  Rfc822 and rfc 822 work as well.  The
`rfc' implicit button type provides this service.  The `hpath:rfc' variable
specifies the location from which to retrieve RFCs.

Once you have retrieved an RFC, an Action Key press most anywhere within a
line typically will produce a table of contents summary of the RFC (via the
`rfc-toc' implicit button type).  An Action Key press on any of the table of
contents lines then displays that section, for easy random access browsing.

** Site-specific Online Library Document IDs

Hyperbole offers a powerful, yet easy to use facility for building online
libraries through the use of the `doc-id' implicit button type.  A document id
is used just like a reference citation in traditional publications but
it actually links to the document that it references and the card catalog
(index) entry for the document.  One can easily pass around doc ids to point
people to appropriate documents.  For example, a mail message in response to
a question might say, "See [Emacs-001] for examples of what Emacs can do."

Since the format and handling of document identifiers and their index entries
is site-specific, document id handling is not completely configured in a
default Hyperbole configuration.  If you wish to setup this facility for
site or personal use, see the DESCRIPTION section in "hib-doc-id.el" for
installation and use information.


* Smart Mouse Keys

If you use Emacs with mouse support under the X window system, OpenWindows,
NEXTSTEP, or Apollo's DM window system, Hyperbole automatically configures
your mouse keys for use as Smart Keys and provides additional
display-oriented operations as demonstrated here.

See the Hyperbole menu item, Doc/SmartKy, for a summary of all Smart Key
operations.  For extensive details on Smart Key operation, see the Hyperbole
manual section, "(hyperbole.info)Smart Key Reference".

When Hyperbole is installed, a key may be bound which allows you to
switch between the Smart Key mouse bindings and your prior ones. `C-h w
hmouse-toggle-bindings RTN' should show you any key which performs this
command.  If no key binding has been established or if you prefer one of
your own, simply select a key and bind it within your "~/.emacs" file. 
For example, (global-set-key "\C-ct" 'hmouse-toggle-bindings).


** Context-sensitive Help

Since the Smart Keys perform different operations in different contexts, it
is important to have context-sensitive help available.  The earlier section
on Help Buffers explained how to display such help from the keyboard.  The
same help can be displayed using the mouse by depressing the Smart Key for
which you want help, performing any action necessary to register a context,
such as a drag motion, and then pressing the other Smart Key.

Here is an example.  Depress the Action Key somewhere within this paragraph
and while holding it down, depress the Assist Key.  Then release the keys in
any order and the help display will pop up.  It explains that there was no
particular matching Smart Key context, so a default operation is performed
(the value of the variable `action-key-default-function' determines the
operation performed).

** Scrolling to the Beginning and End of Buffers

A left to right horizontal drag of the Action Key of 5 or more characters
scrolls the current buffer to its end (what {M->} does by default).  A right
to left drag of the Action Key does the opposite; it scrolls to the buffer's
beginning (what {M-<} does by default).  Try out these operations and then
use the Smart Key end of line scrolling capability to return here.

** Creating and Deleting Windows

Horizontal and vertical drags of the Assist Key within a single window can be
used to create and delete Emacs windows.

A horizontal drag of five or more characters from left to right creates a new
window by splitting the current window into two windows, one on top of the
other.  A horizontal drag from right to left deletes the current window.  A
vertical drag in either direction splits the current window into two
side-by-side windows.

Let's try these.  Remember to use your Assist Key.  You need only move your
mouse pointer a few characters to register a drag.  First, split this window
with a left to right drag, then delete either one of the windows with a right
to left drag.

Now try a side-by-side window split.  Drag vertically in the up or down
direction three or more lines to split the window and then use a right to
left drag to delete either one of the side-by-side windows.

** Resizing Windows

You can easily resize Emacs windows by dragging their window separators
(modelines or vertical side lines) within a frame.  Simply depress either
Smart Key on a modeline or near a window side, hold it down while you drag to
a new location and then release.  The window separator will then jump to the
location of release.  Basically, just drag the window separator to where you
want it.  If you want a single window to fill an entire frame, drag its
modeline, and if necessary its side, to the edge of the frame.

Did you follow all that?  Let's try it to be sure.  First, you need at least
two windows, so create a new one with the drag techniques you just learned.
Now drag with either Smart Key from the shared window edge to a new location.
See how both windows change size?

Try to drag the bottom modeline.  You see that you can't.

** Swapping Buffers

Swapping buffer locations is quick and easy with Hyperbole.  Simply drag
from one window to another with the Assist Key.

Split the current window into two, one above the other.  Drag the upper
modeline so that one window is clearly bigger than the other.  Now try
dragging from inside one window to another with the Assist Key.

** Modeline Clicks

Window modelines are treated specially be Hyperbole.  They are broken up into
three regions, each with their own Smart Key operations.  The regions are:
the left edge, the right edge, and the middle portion (the non-edge part of
the modeline).  The edge regions are the left or rightmost three characters
of the modeline, by default.

*** Switching to Another Buffer

An Action Key click in the left edge of a modeline buries the current buffer,
i.e. puts it on the bottom of the buffer list and removes it from view, if it
is not the only available buffer.  An Assist Key click in the left edge of a
modeline unburies the bottom buffer.  Repeated clicks of either key allow you
to cycle through buffers to get to the one you want.  Try this out.

*** Displaying Documentation

An Action Key click in the right edge of a modeline displays the Info manual
browsing system, see "(info)".  Once in Info, you can click with your Action
Key to follow menu items, cross references, or to jump to Info nodes
referenced within the top header line of a node.  Try browsing a bit and
while in Info display context-sensitive help for both the Action and Assist
Keys to see all that they can do.

If you click again with the Action Key on the right edge of the window
displaying Info, it will hide the Info buffer.  Thus, it works as a toggle to
display or to hide the Info buffer.  Try it.

A click of the Assist Key at the right edge of a modeline toggles between
display and removal of a Smart Key operation summary.  To remove the summary,
you must click on the modeline of the window displaying the summary.


*** Buffer Menu Display

An Action Key click in the center portion of a modeline displays a buffer
menu, a summary of available buffers.  An Action Key click on any buffer menu
line then displays that buffer.

This behavior is subject to change in the future if a more useful Action Key
operation is found for the middle of modelines.


** Saving and Restoring Window Configurations

A window configuration consists of the set of windows within a single Emacs
frame.  This includes their locations, buffers, and scrolled positions of
their buffers.

Hyperbole allows you to save and restore window configurations with simple
diagonal mouse drags within a single window.  A diagonal drag in any
direction of the Action Key saves the current window configuration to a ring
of window configurations, just like the Emacs text kill ring.  (See
"(Emacs)Kill Ring".)  Each diagonal drag in any direction of the Assist Key
restores a prior saved window configuration from the ring.  Window
configurations are restored in reverse order of the way they were saved.
Since a ring is circular, after the oldest element is restored, the newest
element will again be restored and so on.

If these operations are unclear to you, just forget about them and move on.
They are not necessary to enjoy the rest of Hyperbole.  Otherwise, give them
a try by creating various window configurations and then saving and restoring
them.

* Outliner

The Hyperbole outliner only works under GNU Emacs version 19 or higher and
XEmacs version 19.9 or higher.  You can tell whether you are running a
version of Emacs which supports the outliner by hitting
@{@kbd{C-h h}@} to display the Hyperbole menu.  If you see an
@code{Otl/} entry in the menu, then the outliner is available.
Otherwise, the outliner does not work with your version of Emacs, so
this section of the DEMO will not be of interest to you.

The Hyperbole outliner produces structured, autonumbered documents
composed of hierarchies of cells.  Each cell has two identifiers, a
relative autonumber indicating its present position within the outline
and a permanent identifier suitable for use within hyperlink references
to the cell.

If the outliner works in your Emacs, see "kotl/EXAMPLE.kotl", an outline file
that explains how to operate the outliner.    Use the @code{Otl/Example} menu
entry to display this file.  Additional documentation can be found in
"(hyperbole.info)Outliner".  "(hyperbole.info)Outliner Keys"
summarizes in alphabetical order the outliner commands which are bound
to keys.


* References

[Stallman 87]  Stallman, Richard.  GNU Emacs Manual.  Free Software
Foundation, Cambridge: MA, March 1987.

* THE END