home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.006 / xemacs-1 / lib / xemacs-19.13 / lisp / hyperbole / DEMO < prev    next >
Encoding:
Text File  |  1995-05-20  |  24.7 KB  |  551 lines

  1. * Overview
  2.  
  3. This file demonstrates simple usage of the basic Hyperbole button-action
  4. types and shows how Hyperbole can support a style of self-documenting,
  5. interactive files.  See the glossary in the Hyperbole Manual,
  6. "(hyperbole.info)Glossary", if terms used here are unfamiliar to you.
  7.  
  8. * Smart Keys
  9.  
  10. Hyperbole provides two context-sensitive keys, the Action Key and the Assist
  11. Key, jointly referred to as Smart Keys.  The Action Key is the shift-middle
  12. mouse button on a 3-button mouse or shift-left button on a two button mouse
  13. or {M-RET} on your keyboard.  The Assist Key is the shift-right mouse button
  14. or {C-u M-RET}.  (InfoDock users may also use the middle mouse button as the
  15. Action Key.)
  16.  
  17. See also the later section, <(Smart Mouse Keys)>.
  18.  
  19.  
  20. ** Button Activation and Help
  21.  
  22. This button prints the <(factorial)> of 5 in the minibuffer when activated
  23. with the Action Key.  (Once you have Hyperbole installed, just press the
  24. Action Key on the word, <(factorial)>.)  If you instead press the Assist Key,
  25. you get help for the preceding button.  The help provides a summary report of
  26. the button.  You will see that it utilizes the 'eval-elisp' action type.  You
  27. can also see who created it.  Try it.
  28.  
  29. Note that the create-time and mod-time are displayed using your own
  30. timezone but they are stored as universal times.  So if you work with
  31. people at other sites, you can mix their buttons with your own within
  32. the same document and see one unified view of the modification times on
  33. each button.  These times will also be useful for sorting buttons by
  34. time when such features are provided in future Hyperbole releases.
  35.  
  36. ** Smart Scrolling
  37.  
  38. You can scroll through this file by clicking after the end of any line.  The
  39. Action Key scrolls forward a windowful and the Assist key scrolls backward.
  40. Try it and then come back here.
  41.  
  42. By default, the variable smart-scroll-proportional is set to nil (FALSE),
  43. which makes the Smart Keys scroll forward or backward a windowful when at the
  44. end of a line, regardless of which line point is on, just as {C-v} and {M-v}
  45. do.  If it is set to t (TRUE), the Action Key scrolls so that the line
  46. clicked upon is placed at the top of the window; the Assist Key does the
  47. reverse, placing the line clicked upon at the bottom of the window.  This is
  48. called proportional scrolling because the amount of scrolling is relative to
  49. the point's position in the window.
  50.  
  51. Let's try proportional scrolling a bit.  Click this button and then practice
  52. scrolling: <(toggle-scroll-proportional)>.  If you don't like proportional
  53. scrolling, click on the previous button again to restore regular scrolling.
  54. If you always want proportional scrolling, you'll have to add a setting of
  55. smart-scroll-proportional to your "~/.emacs" file after the point at which
  56. you load Hyperbole or else set it as part of hyperb:init-hook, which executes
  57. whenever Hyperbole is loaded, e.g.:
  58.  
  59.    (setq hyperb:init-hook
  60.     (list (function (lambda () (setq smart-scroll-proportional t)))))
  61.  
  62.  
  63. ** Hyperbole Menus
  64.  
  65. To display the top-level Hyperbole menu, click the Action Key anywhere
  66. within this paragraph or alternatively, use {C-h h}.  Clicking within the
  67. paragraph, applies the default operation, given by action-key-default-function,
  68. since the Action Key finds no more specialized context.  The default
  69. operation happens to bring up the Hyperbole menu.
  70.  
  71. {q} or {C-g} will quit from the menu without invoking any commands if you
  72. just want to take a look.  A menu item is selected by pressing the Action Key
  73. over it or by typing its first letter in upper or lower case.
  74.  
  75. A click of the Assist Key on a menu item gives help on it.
  76.  
  77.  
  78. ** Help Buffers
  79.  
  80. Context-sensitive Action Key help typically is bound to {C-h A}.  {C-u C-h A}
  81. displays the same kind of help for the Assist Key.  Try it.
  82.  
  83. Any buffer whose name ends in `Help*' is presumed to be a temporary buffer
  84. that one wants to inspect and then remove from view.  If you click either the
  85. Action or Assist Key at the end of a help buffer, the buffer is buried from
  86. view and your window configuration is restored to its state prior to
  87. displaying the help.  If you have removed the Smart Key help buffer, bring it
  88. back.  Then press one of the Smart Keys at its end to remove it.  Note how
  89. your window configuration is restored.
  90.  
  91. Remember that this works for any help buffer, whether or not Hyperbole
  92. generated it.
  93.  
  94. * Explicit Button Samples
  95.  
  96. Hyperbole is pretty forgiving about the format of explicit buttons.  For
  97. example, all of the following represent the same button, as long as one
  98. clicks on the *first* line of the button, within the button delimiters:
  99.  
  100.   <(factorial button)>
  101.  
  102.   <( factorial      button)>
  103.  
  104.   Pam>  <(factorial
  105.   Pam>    button)>
  106.  
  107.   ;; <(factorial
  108.   ;;   button)>
  109.  
  110.   /* <( factorial      */
  111.   /*    button )> */
  112.  
  113.  
  114. If your <(Info-directory-list)> or <(Info-directory)> variables include the
  115. directory that contains the online GNU Emacs manual, activation of the
  116. next button will tell you about <(keyboard macros)>.  Can't remember a
  117. Hyperbole term?  Check out the Hyperbole Manual <(glossary)>.
  118.  
  119. Here is a <(keyboard macro)> button.  It displays documentation for the first
  120. Emacs Lisp function that follows it, e.g. (hbut:report).  You can see that a
  121. button label can consist of a number of words, up to a set <(maximum
  122. length)>.
  123.  
  124. A <(shell command)> button can do many things, such as display the length of
  125. this file.  While such commands are executing, you can perform other
  126. operations.  If you create a button that runs a shell command which
  127. displays its own window system window, i.e. a window outside of Emacs, use
  128. 'exec-window-cmd' rather than 'exec-shell-cmd' as its action type.
  129.  
  130. You can link to files such as your <(.login)> file.  Or directories,
  131. like the <(tmp directory)>.  When creating file links, if the file you
  132. are linking to is loaded in a buffer, you are prompted as to whether you
  133. want the link to jump to the present point in that buffer.  If so, the
  134. link will always jump there, so position point within the referent file
  135. to take advantage of this feature.  Note how a separate window is used
  136. when you activate file link buttons.  Most basic Hyperbole action types
  137. display their results in this manner.
  138.  
  139. You can make a button an alias for another by using the 'link-to-ebut'
  140. action type.  This <(factorial alias)> button does whatever the earlier
  141. <(factorial)> button does.
  142.  
  143. The 'link-to-mail' action type allows you to reference mail messages
  144. that you have stored away.  We can't demonstrate it here since we don't
  145. have the mail messages that you do.
  146.  
  147. Hyperbole buttons may also be embedded within mail messages.  Even
  148. buttons copied into mail replies can work:
  149.  
  150.     Emile said:
  151.     >
  152.     > Hyperbole is better than home baked bread but not as filling.
  153.     > The following sample button displays a message, <(as long as 
  154.     > you click within its first line)>.
  155.  
  156.  
  157. * Implicit Button Samples
  158.  
  159. ** Key Sequence Buttons
  160.  
  161. Any Emacs key sequence delimited with braces may be executed by
  162. activating it as a button, for example {C-u C-p} should leave point four
  163. lines above the button line.  A help request upon the key sequence
  164. displays the documentation for its command binding, i.e. what it does.
  165. If it does not represent a bound key sequence, it will not be
  166. treated as a key sequence button.
  167.  
  168. ** Implicit Path Links
  169.  
  170. Any doubly quoted pathname acts as an implicit button that displays the
  171. referenced path within a buffer or passes it to an external viewer program.
  172. These are 'pathname' implicit buttons.  For example, activate "README".
  173.  
  174. The variable 'hpath:find-alist' determines the file suffixes which should be
  175. viewed with external programs.  It also specifies the associated viewer
  176. program for each different window system under which Hyperbole may be run.
  177. See its documentation for more details.  Under the X window system, for
  178. example, if you have the 'xv' program, all of the following file formats may
  179. be displayed as images: gif, tiff, xbm, pm, pbm, and jpeg.
  180.  
  181. Several prefix characters may be attached to pathnames to indicate that
  182. a different action should be taken when the button is activated.
  183. An exclamation point prefix indicates that the full pathname should be run
  184. as a non-windowed shell program.  For example, try "!/bin/date".
  185. An ampersand prefix means run the full pathname as a windowed program, e.g.
  186. "&/usr/bin/X11/xeyes".  Finally, a hyphen indicates that the filename should
  187. be loaded as an Emacs Lisp program, e.g. "-hibtypes.elc".
  188.  
  189. If you use the ange-ftp or efs add-on to GNU Emacs, such remote pathnames
  190. will work as well.  (The latest version of ange-ftp may always be obtained
  191. via anonymous ftp to:
  192.   "/anonymous@alpha.gnu.ai.mit.edu:ange-ftp/ange-ftp.tar.gz"). 
  193.  
  194. Once you have *loaded* the ange-ftp or the efs package (or you use a version
  195. of Emacs 19 which autoloads ange-ftp), if you are on the Internet, you can
  196. click on any of the following to browse the contents of the Hyperbole
  197. distribution at the University of Illinois at Urbana (limit the amount
  198. you do this so as not to deny others access to the archive):
  199.  
  200.      "/anonymous@cs.uiuc.edu:pub/xemacs/infodock/"
  201.           /anonymous@128.174.252.1:/pub/xemacs/infodock/
  202.       /cs.uiuc.edu:pub/xemacs/infodock/
  203.  
  204. You can see that for ange-ftp/efs pathnames, Hyperbole recognizes them with
  205. or without the double quote delimiters.  These same pathnames can be used
  206. within explicit buttons which link to files or directories.  The HTML
  207. (HyperText Markup Language) ftp pathname format used by World-Wide-Web
  208. browsers is also recognized:
  209.  
  210.      "ftp://cs.uiuc.edu/pub/xemacs/infodock/
  211.  
  212.  
  213. GNU Info (filename)node references such as "(hyperbole.info)Glossary" or
  214. "(emacs)Glossary", work similarly, thanks to the 'Info-node' button type.
  215. Try one of the Glossary buttons above.
  216.  
  217. If you want to quickly learn how to create explicit buttons, see
  218. "(hyperbole.info)Drags" and "(hyperbole.info)Menus".
  219.  
  220. So now when browsing the many documents that refer to filenames or Info
  221. nodes in this way, you can just click on the name to see the contents.
  222. (If a doubly quoted string references a local pathname that does not
  223. exist within the file system, it will not be considered a pathname
  224. button by Hyperbole.)  Pathname implicit buttons provide one example of
  225. how Hyperbole can improve your working environment without you having to
  226. do any work at all.
  227.  
  228.  
  229. Hyperbole provides a history command which returns you to previous button
  230. locations in the reverse order of the way you traverse them.  You access it
  231. by selecting the Hist command from the top-level Hyperbole menu, {C-h h h}.
  232. Remember this because you will want to use that command to return to this
  233. DEMO later.
  234.  
  235. Now suppose you want to browse through a number of files within the
  236. Hyperbole distribution.  You could use the Emacs dired subsystem,
  237. "(emacs)Dired", but a faster way is to note that files named MANIFEST
  238. and DIR are used to summarize the files in a directory, so we can use
  239. each of their entries as an implicit button (of 'dir-summary' type) to
  240. take us to the file.
  241.  
  242. Let's look at "MANIFEST".  Now click anywhere within a line in the MANIFEST
  243. file and you see that it is displayed as expected.  (Remember to use the
  244. Hyperbole history command to return here.)  You can get help on these buttons
  245. just like any others.
  246.  
  247. ** World-Wide-Web URL Buttons
  248.  
  249. If you use the w3 World-Wide-Web browser add-on to GNU Emacs, you can browse
  250. URLs (universal resource locators) from within any buffer just as you would
  251. any other implicit button, once you do some initial setup.
  252.  
  253. First you must ensure that you load the Hyperbole library that supports URL
  254. viewing.  Either your "hsite.el" file should require hsys-w3 as part of
  255. 'hibtypes:begin-load-hook' or you should move point after the following line
  256. and hit {C-x C-e} to evaluate it.
  257.  
  258.          (progn (require 'w3) (require 'hsys-w3))
  259.  
  260. Now try using the Action Key on:
  261.  
  262.          "http://www.ncsa.uiuc.edu"
  263.  
  264. ** Grep, Occurrence, Debugger and Compiler Error Buttons, and Cscope Analyzer
  265.    Lines
  266.  
  267. The output of 'grep -n', the UNIX line pattern matcher, can be
  268. activated as buttons that jump to each matched line within its source
  269. file; use {M-x grep RET}.
  270.  
  271. Compiler error messages also serve as implicit buttons that jump to
  272. associated source lines; use {M-x compile RET}.  GDB, DBX or XDB stack frames
  273. along with GDB breakpoint listing lines also link to source lines.
  274.  
  275. {M-x occur RET} (find matches in a single buffer) and {M-x moccur RET}
  276. (find matches across multiple buffers and files) also produce implicit
  277. button output that displays associated source lines.
  278.  
  279. If you have the Cscope C/C++ code analyzer from the AT&T Toolchest and have
  280. loaded the cscope.el library add-on for GNU Emacs, then the output lines from
  281. a cscope query serve as implicit buttons which jump to associated source
  282. lines.  Cscope goes beyond the basic Emacs tags facility to allow you to see
  283. the callers of a function and the functions called by a specific routine.
  284.  
  285. ** Annotated Bibliography Buttons
  286.  
  287. Here's a use of an annotated bibliography reference implicit button
  288. which allows you to see a bibliography entry such as [Stallman 87] when
  289. you activate the button between brackets.
  290.  
  291. ** Completion Buttons
  292.  
  293. Often when Emacs or Hyperbole prompts for an argument in the
  294. minibuffer, a list of possible argument completions is available by
  295. pressing {?}.  A single Action Key press on any of these completions
  296. inserts it into the minibuffer for your inspection.  A second press on
  297. the same completion causes it to be used as the argument value and any
  298. succeeding argument prompt is then displayed.  Test this technique
  299. with a {C-x C-f} (find-file) and then a {?}.
  300.  
  301. ** Hyperbole Source Buttons
  302.  
  303. If you ask for help on the [Stallman 87] button, the first line of the
  304. help buffer will look like this:
  305.  
  306. @loc> "DEMO"
  307.  
  308. except it will contain the full pathname of the file.  If the button
  309. were embedded within a buffer without an attached file, the first line
  310. of the help buffer might look like:
  311.  
  312. @loc> #<buffer *scratch*>
  313.  
  314. If you click on the buffer name, the buffer will be displayed just as a
  315. file buffer would.  This type of implicit button is called a
  316. 'hyp-source' button.
  317.  
  318. You can also activate any explicit buttons shown in a help buffer.
  319.  
  320. ** UNIX Man Apropos Buttons
  321.  
  322. Below are some lines output by the UNIX 'apropos' command (with a little
  323. touchup for display purposes).  A button activation anywhere within such
  324. a line recognizes the line as an apropos entry and tries to display the
  325. man page for the entry.  Try it.  (If you happen to use the 'superman'
  326. package which fetches man pages in the background, you'll have to wait
  327. for the next version of superman which removes incompatibilities with
  328. the standard man page fetch command before you can use these
  329. 'man-apropos' implicit buttons.)
  330.  
  331. grep, egrep, fgrep (1V) - search a file for a string or regular expression
  332. rm, rmdir (1)           - remove (unlink) files or directories
  333. touch (1V)              - update the access and modification times of a file
  334. cat (1V)                - concatenate and display 
  335.  
  336. ** Internet Request For Comments (RFC) Document Browsing
  337.  
  338. If you are on the Internet and you have the ange-ftp or efs remote file
  339. handling package for GNU Emacs, you can retrieve and browse RFC documents
  340. used in Internet standard-making.  Simply use the Action Key on an RFC
  341. document identifier, like RFC-822.  Rfc822 and rfc 822 work as well.  The
  342. 'rfc' implicit button type provides this service.  The 'hpath:rfc' variable
  343. specifies the location from which to retrieve RFCs.
  344.  
  345. Once you have retrieved an RFC, an Action Key press most anywhere within a
  346. line typically will produce a table of contents summary of the RFC (via the
  347. 'rfc-toc' implicit button type).  An Action Key press on any of the table of
  348. contents lines then displays that section, for easy random access browsing.
  349.  
  350. ** Site-specific Online Library Document IDs
  351.  
  352. Hyperbole offers a powerful, yet easy to use facility for building online
  353. libraries through the use of the 'doc-id' implicit button type.  A document id
  354. is used just like a reference citation in traditional publications but
  355. it actually links to the document that it references and the card catalog
  356. (index) entry for the document.  One can easily pass around doc ids to point
  357. people to appropriate documents.  For example, a mail message in response to
  358. a question might say, "See [Emacs-001] for examples of what Emacs can do."
  359.  
  360. Since the format and handling of document identifiers and their index entries
  361. is site-specific, document id handling is not completely configured in a
  362. default Hyperbole configuration.  If you wish to setup this facility for
  363. site or personal use, see the DESCRIPTION section in "hib-doc-id.el" for
  364. installation and use information.
  365.  
  366.  
  367. * Smart Mouse Keys
  368.  
  369. If you use Emacs with mouse support under the X window system, NeXTstep,
  370. OpenWindows, SunView, or Apollo's DM window system, Hyperbole automatically
  371. configures your mouse keys for use as Smart Keys and provides additional
  372. display-oriented operations as demonstrated here.
  373.  
  374. See the Hyperbole menu item, Doc/SmartKy, for a summary of all Smart Key
  375. operations.  For extensive details on Smart Key operation, see the Hyperbole
  376. manual section, "(hyperbole.info)Smart Key Reference".
  377.  
  378. When Hyperbole is installed, a key may be bound which allows you to
  379. switch between the Smart Key mouse bindings and your prior ones. `C-h w
  380. hmouse-toggle-bindings RTN' should show you any key which performs this
  381. command.  If no key binding has been established or if you prefer one of
  382. your own, simply select a key and bind it within your "~/.emacs" file. 
  383. For example, (global-set-key "\C-ct" 'hmouse-toggle-bindings).
  384.  
  385.  
  386. ** Context-sensitive Help
  387.  
  388. Since the Smart Keys perform different operations in different contexts, it
  389. is important to have context-sensitive help available.  The earlier section
  390. on Help Buffers explained how to display such help from the keyboard.  The
  391. same help can be displayed using the mouse by depressing the Smart Key for
  392. which you want help, performing any action necessary to register a context,
  393. such as a drag motion, and then pressing the other Smart Key.
  394.  
  395. Here is an example.  Depress the Action Key somewhere within this paragraph
  396. and while holding it down, depress the Assist Key.  Then release the keys in
  397. any order and the help display will pop up.  It explains that there was no
  398. particular matching Smart Key context, so a default operation is performed
  399. (the value of the variable 'action-key-default-function' determines the
  400. operation performed).
  401.  
  402. ** Scrolling to the Beginning and End of Buffers
  403.  
  404. A left to right horizontal drag of the Action Key of 5 or more characters
  405. scrolls the current buffer to its end (what {M->} does by default).  A right
  406. to left drag of the Action Key does the opposite; it scrolls to the buffer's
  407. beginning (what {M-<} does by default).  Try out these operations and then
  408. use the Smart Key end of line scrolling capability to return here.
  409.  
  410. ** Creating and Deleting Windows
  411.  
  412. Horizontal and vertical drags of the Assist Key within a single window can be
  413. used to create and delete Emacs windows.
  414.  
  415. A horizontal drag of five or more characters from left to right creates a new
  416. window by splitting the current window into two windows, one on top of the
  417. other.  A horizontal drag from right to left deletes the current window.  A
  418. vertical drag in either direction splits the current window into two
  419. side-by-side windows.
  420.  
  421. Let's try these.  Remember to use your Assist Key.  You need only move your
  422. mouse pointer a few characters to register a drag.  First, split this window
  423. with a left to right drag, then delete either one of the windows with a right
  424. to left drag.
  425.  
  426. Now try a side-by-side window split.  Drag vertically in the up or down
  427. direction three or more lines to split the window and then use a right to
  428. left drag to delete either one of the side-by-side windows.
  429.  
  430. ** Resizing Windows
  431.  
  432. You can easily resize Emacs windows by dragging their window separators
  433. (modelines or vertical side lines) within a frame.  Simply depress either
  434. Smart Key on a modeline or near a window side, hold it down while you drag to
  435. a new location and then release.  The window separator will then jump to the
  436. location of release.  Basically, just drag the window separator to where you
  437. want it.  If you want a single window to fill an entire frame, drag its
  438. modeline, and if necessary its side, to the edge of the frame.
  439.  
  440. Did you follow all that?  Let's try it to be sure.  First, you need at least
  441. two windows, so create a new one with the drag techniques you just learned.
  442. Now drag with either Smart Key from the shared window edge to a new location.
  443. See how both windows change size?
  444.  
  445. Try to drag the bottom modeline.  You see that you can't.
  446.  
  447. ** Swapping Buffers
  448.  
  449. Swapping buffer locations is quick and easy with Hyperbole.  Simply drag
  450. from one window to another with the Assist Key.
  451.  
  452. Split the current window into two, one above the other.  Drag the upper
  453. modeline so that one window is clearly bigger than the other.  Now try
  454. dragging from inside one window to another with the Assist Key.
  455.  
  456. ** Modeline Clicks
  457.  
  458. Window modelines are treated specially be Hyperbole.  They are broken up into
  459. three regions, each with their own Smart Key operations.  The regions are:
  460. the left edge, the right edge, and the middle portion (the non-edge part of
  461. the modeline).  The edge regions are the left or rightmost three characters
  462. of the modeline, by default.
  463.  
  464. *** Switching to Another Buffer
  465.  
  466. An Action Key click in the left edge of a modeline buries the current buffer,
  467. i.e. puts it on the bottom of the buffer list and removes it from view, if it
  468. is not the only available buffer.  An Assist Key click in the left edge of a
  469. modeline unburies the bottom buffer.  Repeated clicks of either key allow you
  470. to cycle through buffers to get to the one you want.  Try this out.
  471.  
  472. *** Displaying Documentation
  473.  
  474. An Action Key click in the right edge of a modeline displays the Info manual
  475. browsing system, see "(info)".  Once in Info, you can click with your Action
  476. Key to follow menu items, cross references, or to jump to Info nodes
  477. referenced within the top header line of a node.  Try browsing a bit and
  478. while in Info display context-sensitive help for both the Action and Assist
  479. Keys to see all that they can do.
  480.  
  481. If you click again with the Action Key on the right edge of the window
  482. displaying Info, it will hide the Info buffer.  Thus, it works as a toggle to
  483. display or to hide the Info buffer.  Try it.
  484.  
  485. A click of the Assist Key at the right edge of a modeline toggles between
  486. display and removal of a Smart Key operation summary.  To remove the summary,
  487. you must click on the modeline of the window displaying the summary.
  488.  
  489.  
  490. *** Buffer Menu Display
  491.  
  492. An Action Key click in the center portion of a modeline displays a buffer
  493. menu, a summary of available buffers.  An Action Key click on any buffer menu
  494. line then displays that buffer.
  495.  
  496. This behavior is subject to change in the future if a more useful Action Key
  497. operation is found for the middle of modelines.
  498.  
  499.  
  500. ** Saving and Restoring Window Configurations
  501.  
  502. A window configuration consists of the set of windows within a single Emacs
  503. frame.  This includes their locations, buffers, and scrolled positions of
  504. their buffers.
  505.  
  506. Hyperbole allows you to save and restore window configurations with simple
  507. diagonal mouse drags within a single window.  A diagonal drag in any
  508. direction of the Action Key saves the current window configuration to a ring
  509. of window configurations, just like the Emacs text kill ring.  (See
  510. "(Emacs)Kill Ring".)  Each diagonal drag in any direction of the Assist Key
  511. restores a prior saved window configuration from the ring.  Window
  512. configurations are restored in reverse order of the way they were saved.
  513. Since a ring is circular, after the oldest element is restored, the newest
  514. element will again be restored and so on.
  515.  
  516. If these operations are unclear to you, just forget about them and move on.
  517. They are not necessary to enjoy the rest of Hyperbole.  Otherwise, give them
  518. a try by creating various window configurations and then saving and restoring
  519. them.
  520.  
  521. * Outliner
  522.  
  523. The Hyperbole outliner only works under GNU Emacs version 19 or higher and
  524. XEmacs version 19.9 or higher.  You can tell whether you are running a
  525. version of Emacs which supports the outliner by hitting
  526. @{@kbd{C-h h}@} to display the Hyperbole menu.  If you see an
  527. @code{Otl/} entry in the menu, then the outliner is available.
  528. Otherwise, the outliner does not work with your version of Emacs, so
  529. this section of the DEMO will not be of interest to you.
  530.  
  531. The Hyperbole outliner produces structured, autonumbered documents
  532. composed of hierarchies of cells.  Each cell has two identifiers, a
  533. relative autonumber indicating its present position within the outline
  534. and a permanent identifier suitable for use within hyperlink references
  535. to the cell.
  536.  
  537. If the outliner works in your Emacs, see "kotl/EXAMPLE.kotl", an outline file
  538. that explains how to operate the outliner.    Use the @code{Otl/Example} menu
  539. entry to display this file.  Additional documentation can be found in
  540. "(hyperbole.info)Outliner".  "(hyperbole.info)Outliner Keys"
  541. summarizes in alphabetical order the outliner commands which are bound
  542. to keys.
  543.  
  544.  
  545. * References
  546.  
  547. [Stallman 87]  Stallman, Richard.  GNU Emacs Manual.  Free Software
  548. Foundation, Cambridge: MA, March 1987.
  549.  
  550. * THE END
  551.