Mercurial > hg > xemacs-beta
comparison lisp/hyperbole/DEMO @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 4103f0995bd7 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:376386a54a3c |
---|---|
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 By default, the variable smart-scroll-proportional is set to t (TRUE). This | |
39 makes a press of the Action Key at the end of a line scroll forward, so that | |
40 the current line is placed at the top of the window; the Assist Key does the | |
41 reverse when pressed at the end of line; it places the current line at the | |
42 bottom of the window. This is called proportional scrolling because the | |
43 amount of scrolling is relative to the point's position in the window. Try | |
44 it and then come back here. | |
45 | |
46 Alternatively, if this variable is set to nil (FALSE), the Smart Keys scroll | |
47 forward or backward a windowful when at the end of a line, regardless of | |
48 which line point is on, just as {C-v} and {M-v} do. | |
49 | |
50 Let's try windowful scrolling a bit. Click this button and then practice | |
51 scrolling: <(toggle-scroll-proportional)>. If you prefer the default | |
52 proportional scrolling, click on the previous button again to restore it. | |
53 | |
54 If you always want windowful 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 nil))))) | |
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 either displays the | |
171 referenced path within a buffer, passes it to an external viewer program, or | |
172 runs a function that operates upon the path. These are 'pathname' implicit | |
173 buttons. For example, activate "README". | |
174 | |
175 Most pathnames simply link to the files that they name and so are simply | |
176 displayed for editing. The variable 'hpath:suffixes' is a list of filename | |
177 suffix strings that are added to or removed from pathnames when searching for | |
178 a match. "So if "README.gz" existed, the pathname button "README" would | |
179 display it. If you use the Emacs "crypt.el" package, then compressed files | |
180 will be uncompressed before they are displayed. Activate "README.gz" and | |
181 you'll see that the README file is displayed as desired. | |
182 | |
183 The variable 'hpath:display-alist' contains pairs of pathname expressions and | |
184 edit functions. When a pathname matches an expression, the associated edit | |
185 function is invoked upon the pathname. | |
186 | |
187 The variable 'hpath:find-alist' determines the file suffixes which should be | |
188 viewed with external programs. It also specifies the associated viewer | |
189 program for each different window system under which Hyperbole may be run. | |
190 See its documentation for more details. Under the X window system, for | |
191 example, if you have the 'xv' program, all of the following file formats may | |
192 be displayed as images: gif, tiff, xbm, pm, pbm, and jpeg. | |
193 | |
194 Several prefix characters may be attached to pathnames to indicate that | |
195 a different action should be taken when the button is activated. | |
196 An exclamation point prefix indicates that the full pathname should be run | |
197 as a non-windowed shell program. For example, try "!/bin/date". | |
198 An ampersand prefix means run the full pathname as a windowed program, e.g. | |
199 "&/usr/bin/X11/xeyes". Finally, a hyphen indicates that the filename should | |
200 be evaluated as an Emacs Lisp program, e.g. "-hibtypes.elc", rather than | |
201 displayed. | |
202 | |
203 If you use the ange-ftp or efs add-on to GNU Emacs, such remote pathnames | |
204 will work as well. (The latest version of ange-ftp may always be obtained | |
205 via anonymous ftp to: | |
206 "/anonymous@alpha.gnu.ai.mit.edu:ange-ftp/ange-ftp.tar.gz"). | |
207 | |
208 Once you have *loaded* the ange-ftp or the efs package (or you use a | |
209 version of Emacs 19 which autoloads ange-ftp), if you are on the | |
210 Internet, you can click on any of the following to browse the contents | |
211 of the Hyperbole distribution at the XEmacs Archive (limit the amount | |
212 you do this so as not to deny others access to the archive): | |
213 | |
214 "/anonymous@ftp.xemacs.org:pub/infodock/" | |
215 /anonymous@128.174.252.16:/pub/infodock/ | |
216 /ftp.xemacs.org:pub/infodock/ | |
217 | |
218 You can see that for ange-ftp/efs pathnames, Hyperbole recognizes them with | |
219 or without the double quote delimiters. These same pathnames can be used | |
220 within explicit buttons which link to files or directories. The HTML | |
221 (HyperText Markup Language) ftp pathname format used by World-Wide-Web | |
222 browsers is also recognized: | |
223 | |
224 "ftp://ftp.xemacs.org/pub/infodock/ | |
225 | |
226 | |
227 GNU Info (filename)node references such as "(hyperbole.info)Glossary" or | |
228 "(emacs)Glossary", work similarly, thanks to the 'Info-node' button type. | |
229 Try one of the Glossary buttons above. | |
230 | |
231 If you want to quickly learn how to create explicit buttons, see | |
232 "(hyperbole.info)Drags" and "(hyperbole.info)Menus". | |
233 | |
234 So now when browsing the many documents that refer to filenames or Info | |
235 nodes in this way, you can just click on the name to see the contents. | |
236 (If a doubly quoted string references a local pathname that does not | |
237 exist within the file system, it will not be considered a pathname | |
238 button by Hyperbole.) Pathname implicit buttons provide one example of | |
239 how Hyperbole can improve your working environment without you having to | |
240 do any work at all. | |
241 | |
242 | |
243 Hyperbole provides a history command which returns you to previous button | |
244 locations in the reverse order of the way you traverse them. You access it | |
245 by selecting the Hist command from the top-level Hyperbole menu, {C-h h h}. | |
246 Remember this because you will want to use that command to return to this | |
247 DEMO later. | |
248 | |
249 Now suppose you want to browse through a number of files within the | |
250 Hyperbole distribution. You could use the Emacs dired subsystem, | |
251 "(emacs)Dired", but a faster way is to note that files named MANIFEST | |
252 and DIR are used to summarize the files in a directory, so we can use | |
253 each of their entries as an implicit button (of 'dir-summary' type) to | |
254 take us to the file. | |
255 | |
256 Let's look at "MANIFEST". Now click anywhere within a line in the MANIFEST | |
257 file and you see that it is displayed as expected. (Remember to use the | |
258 Hyperbole history command to return here.) You can get help on these buttons | |
259 just like any others. | |
260 | |
261 Table of contents entries in "README" files act similarly. Click on "README" | |
262 to view that file and then click on a table of contents entry to jump to the | |
263 associated section in the "README" file. | |
264 | |
265 ** World-Wide-Web URL Buttons | |
266 | |
267 If you use the w3 World-Wide-Web browser add-on to GNU Emacs, you can browse | |
268 URLs (universal resource locators) from within any buffer just as you would | |
269 any other implicit button, once you do some initial setup. | |
270 | |
271 First you must ensure that you load the Hyperbole library that supports URL | |
272 viewing. Either your "hsite.el" file should require hsys-w3 as part of | |
273 'hibtypes:begin-load-hook' or you should move point after the following line | |
274 and hit {C-x C-e} to evaluate it. | |
275 | |
276 (progn (require 'w3) (require 'hsys-w3)) | |
277 | |
278 Now try using the Action Key on: | |
279 | |
280 "http://www.ncsa.uiuc.edu" | |
281 | |
282 ** Grep, Occurrence, Debugger and Compiler Error Buttons, and Cscope Analyzer | |
283 Lines | |
284 | |
285 The output of 'grep -n', the UNIX line pattern matcher, can be | |
286 activated as buttons that jump to each matched line within its source | |
287 file; use {M-x grep RET}. | |
288 | |
289 Compiler error messages also serve as implicit buttons that jump to | |
290 associated source lines; use {M-x compile RET}. GDB, DBX or XDB stack frames | |
291 along with GDB breakpoint listing lines also link to source lines. | |
292 | |
293 {M-x occur RET} (find matches in a single buffer) and {M-x moccur RET} | |
294 (find matches across multiple buffers and files) also produce implicit | |
295 button output that displays associated source lines. | |
296 | |
297 If you have the Cscope C/C++ code analyzer from the AT&T Toolchest and have | |
298 loaded the cscope.el library add-on for GNU Emacs, then the output lines from | |
299 a cscope query serve as implicit buttons which jump to associated source | |
300 lines. Cscope goes beyond the basic Emacs tags facility to allow you to see | |
301 the callers of a function and the functions called by a specific routine. | |
302 | |
303 ** Annotated Bibliography Buttons | |
304 | |
305 Here's a use of an annotated bibliography reference implicit button | |
306 which allows you to see a bibliography entry such as [Stallman 87] when | |
307 you activate the button between brackets. | |
308 | |
309 ** Completion Buttons | |
310 | |
311 Often when Emacs or Hyperbole prompts for an argument in the | |
312 minibuffer, a list of possible argument completions is available by | |
313 pressing {?}. A single Action Key press on any of these completions | |
314 inserts it into the minibuffer for your inspection. A second press on | |
315 the same completion causes it to be used as the argument value and any | |
316 succeeding argument prompt is then displayed. Test this technique | |
317 with a {C-x C-f} (find-file) and then a {?}. | |
318 | |
319 ** Hyperbole Source Buttons | |
320 | |
321 If you ask for help on the [Stallman 87] button, the first line of the | |
322 help buffer will look like this: | |
323 | |
324 @loc> "DEMO" | |
325 | |
326 except it will contain the full pathname of the file. If the button | |
327 were embedded within a buffer without an attached file, the first line | |
328 of the help buffer might look like: | |
329 | |
330 @loc> #<buffer *scratch*> | |
331 | |
332 If you click on the buffer name, the buffer will be displayed just as a | |
333 file buffer would. This type of implicit button is called a | |
334 'hyp-source' button. | |
335 | |
336 You can also activate any explicit buttons shown in a help buffer. | |
337 | |
338 ** UNIX Man Apropos Buttons | |
339 | |
340 Below are some lines output by the UNIX 'apropos' command (with a little | |
341 touchup for display purposes). A button activation anywhere within such | |
342 a line recognizes the line as an apropos entry and tries to display the | |
343 man page for the entry. Try it. (If you happen to use the 'superman' | |
344 package which fetches man pages in the background, you'll have to wait | |
345 for the next version of superman which removes incompatibilities with | |
346 the standard man page fetch command before you can use these | |
347 'man-apropos' implicit buttons.) | |
348 | |
349 grep, egrep, fgrep (1V) - search a file for a string or regular expression | |
350 rm, rmdir (1) - remove (unlink) files or directories | |
351 touch (1V) - update the access and modification times of a file | |
352 cat (1V) - concatenate and display | |
353 | |
354 ** Internet Request For Comments (RFC) Document Browsing | |
355 | |
356 If you are on the Internet and you have the ange-ftp or efs remote file | |
357 handling package for GNU Emacs, you can retrieve and browse RFC documents | |
358 used in Internet standard-making. Simply use the Action Key on an RFC | |
359 document identifier, like RFC-822. Rfc822 and rfc 822 work as well. The | |
360 'rfc' implicit button type provides this service. The 'hpath:rfc' variable | |
361 specifies the location from which to retrieve RFCs. | |
362 | |
363 Once you have retrieved an RFC, an Action Key press most anywhere within a | |
364 line typically will produce a table of contents summary of the RFC (via the | |
365 'rfc-toc' implicit button type). An Action Key press on any of the table of | |
366 contents lines then displays that section, for easy random access browsing. | |
367 | |
368 ** Site-specific Online Library Document IDs | |
369 | |
370 Hyperbole offers a powerful, yet easy to use facility for building online | |
371 libraries through the use of the 'doc-id' implicit button type. A document id | |
372 is used just like a reference citation in traditional publications but | |
373 it actually links to the document that it references and the card catalog | |
374 (index) entry for the document. One can easily pass around doc ids to point | |
375 people to appropriate documents. For example, a mail message in response to | |
376 a question might say, "See [Emacs-001] for examples of what Emacs can do." | |
377 | |
378 Since the format and handling of document identifiers and their index entries | |
379 is site-specific, document id handling is not completely configured in a | |
380 default Hyperbole configuration. If you wish to setup this facility for | |
381 site or personal use, see the DESCRIPTION section in "hib-doc-id.el" for | |
382 installation and use information. | |
383 | |
384 | |
385 * Smart Mouse Keys | |
386 | |
387 If you use Emacs with mouse support under the X window system, NeXTstep, | |
388 OpenWindows, SunView, or Apollo's DM window system, Hyperbole automatically | |
389 configures your mouse keys for use as Smart Keys and provides additional | |
390 display-oriented operations as demonstrated here. | |
391 | |
392 See the Hyperbole menu item, Doc/SmartKy, for a summary of all Smart Key | |
393 operations. For extensive details on Smart Key operation, see the Hyperbole | |
394 manual section, "(hyperbole.info)Smart Key Reference". | |
395 | |
396 When Hyperbole is installed, a key may be bound which allows you to | |
397 switch between the Smart Key mouse bindings and your prior ones. `C-h w | |
398 hmouse-toggle-bindings RTN' should show you any key which performs this | |
399 command. If no key binding has been established or if you prefer one of | |
400 your own, simply select a key and bind it within your "~/.emacs" file. | |
401 For example, (global-set-key "\C-ct" 'hmouse-toggle-bindings). | |
402 | |
403 | |
404 ** Context-sensitive Help | |
405 | |
406 Since the Smart Keys perform different operations in different contexts, it | |
407 is important to have context-sensitive help available. The earlier section | |
408 on Help Buffers explained how to display such help from the keyboard. The | |
409 same help can be displayed using the mouse by depressing the Smart Key for | |
410 which you want help, performing any action necessary to register a context, | |
411 such as a drag motion, and then pressing the other Smart Key. | |
412 | |
413 Here is an example. Depress the Action Key somewhere within this paragraph | |
414 and while holding it down, depress the Assist Key. Then release the keys in | |
415 any order and the help display will pop up. It explains that there was no | |
416 particular matching Smart Key context, so a default operation is performed | |
417 (the value of the variable 'action-key-default-function' determines the | |
418 operation performed). | |
419 | |
420 ** Scrolling to the Beginning and End of Buffers | |
421 | |
422 A left to right horizontal drag of the Action Key of 5 or more characters | |
423 scrolls the current buffer to its end (what {M->} does by default). A right | |
424 to left drag of the Action Key does the opposite; it scrolls to the buffer's | |
425 beginning (what {M-<} does by default). Try out these operations and then | |
426 use the Smart Key end of line scrolling capability to return here. | |
427 | |
428 ** Creating and Deleting Windows | |
429 | |
430 Horizontal and vertical drags of the Assist Key within a single window can be | |
431 used to create and delete Emacs windows. | |
432 | |
433 A horizontal drag of five or more characters from left to right creates a new | |
434 window by splitting the current window into two windows, one on top of the | |
435 other. A horizontal drag from right to left deletes the current window. A | |
436 vertical drag in either direction splits the current window into two | |
437 side-by-side windows. | |
438 | |
439 Let's try these. Remember to use your Assist Key. You need only move your | |
440 mouse pointer a few characters to register a drag. First, split this window | |
441 with a left to right drag, then delete either one of the windows with a right | |
442 to left drag. | |
443 | |
444 Now try a side-by-side window split. Drag vertically in the up or down | |
445 direction three or more lines to split the window and then use a right to | |
446 left drag to delete either one of the side-by-side windows. | |
447 | |
448 ** Resizing Windows | |
449 | |
450 You can easily resize Emacs windows by dragging their window separators | |
451 (modelines or vertical side lines) within a frame. Simply depress either | |
452 Smart Key on a modeline or near a window side, hold it down while you drag to | |
453 a new location and then release. The window separator will then jump to the | |
454 location of release. Basically, just drag the window separator to where you | |
455 want it. If you want a single window to fill an entire frame, drag its | |
456 modeline, and if necessary its side, to the edge of the frame. | |
457 | |
458 Did you follow all that? Let's try it to be sure. First, you need at least | |
459 two windows, so create a new one with the drag techniques you just learned. | |
460 Now drag with either Smart Key from the shared window edge to a new location. | |
461 See how both windows change size? | |
462 | |
463 Try to drag the bottom modeline. You see that you can't. | |
464 | |
465 ** Swapping Buffers | |
466 | |
467 Swapping buffer locations is quick and easy with Hyperbole. Simply drag | |
468 from one window to another with the Assist Key. | |
469 | |
470 Split the current window into two, one above the other. Drag the upper | |
471 modeline so that one window is clearly bigger than the other. Now try | |
472 dragging from inside one window to another with the Assist Key. | |
473 | |
474 ** Modeline Clicks | |
475 | |
476 Window modelines are treated specially be Hyperbole. They are broken up into | |
477 three regions, each with their own Smart Key operations. The regions are: | |
478 the left edge, the right edge, and the middle portion (the non-edge part of | |
479 the modeline). The edge regions are the left or rightmost three characters | |
480 of the modeline, by default. | |
481 | |
482 *** Switching to Another Buffer | |
483 | |
484 An Action Key click in the left edge of a modeline buries the current buffer, | |
485 i.e. puts it on the bottom of the buffer list and removes it from view, if it | |
486 is not the only available buffer. An Assist Key click in the left edge of a | |
487 modeline unburies the bottom buffer. Repeated clicks of either key allow you | |
488 to cycle through buffers to get to the one you want. Try this out. | |
489 | |
490 *** Displaying Documentation | |
491 | |
492 An Action Key click in the right edge of a modeline displays the Info manual | |
493 browsing system, see "(info)". Once in Info, you can click with your Action | |
494 Key to follow menu items, cross references, or to jump to Info nodes | |
495 referenced within the top header line of a node. Try browsing a bit and | |
496 while in Info display context-sensitive help for both the Action and Assist | |
497 Keys to see all that they can do. | |
498 | |
499 If you click again with the Action Key on the right edge of the window | |
500 displaying Info, it will hide the Info buffer. Thus, it works as a toggle to | |
501 display or to hide the Info buffer. Try it. | |
502 | |
503 A click of the Assist Key at the right edge of a modeline toggles between | |
504 display and removal of a Smart Key operation summary. To remove the summary, | |
505 you must click on the modeline of the window displaying the summary. | |
506 | |
507 | |
508 *** Buffer Menu Display | |
509 | |
510 An Action Key click in the center portion of a modeline displays a buffer | |
511 menu, a summary of available buffers. An Action Key click on any buffer menu | |
512 line then displays that buffer. | |
513 | |
514 This behavior is subject to change in the future if a more useful Action Key | |
515 operation is found for the middle of modelines. | |
516 | |
517 | |
518 ** Saving and Restoring Window Configurations | |
519 | |
520 A window configuration consists of the set of windows within a single Emacs | |
521 frame. This includes their locations, buffers, and scrolled positions of | |
522 their buffers. | |
523 | |
524 Hyperbole allows you to save and restore window configurations with simple | |
525 diagonal mouse drags within a single window. A diagonal drag in any | |
526 direction of the Action Key saves the current window configuration to a ring | |
527 of window configurations, just like the Emacs text kill ring. (See | |
528 "(Emacs)Kill Ring".) Each diagonal drag in any direction of the Assist Key | |
529 restores a prior saved window configuration from the ring. Window | |
530 configurations are restored in reverse order of the way they were saved. | |
531 Since a ring is circular, after the oldest element is restored, the newest | |
532 element will again be restored and so on. | |
533 | |
534 If these operations are unclear to you, just forget about them and move on. | |
535 They are not necessary to enjoy the rest of Hyperbole. Otherwise, give them | |
536 a try by creating various window configurations and then saving and restoring | |
537 them. | |
538 | |
539 * Outliner | |
540 | |
541 The Hyperbole outliner only works under GNU Emacs version 19 or higher and | |
542 XEmacs version 19.9 or higher. You can tell whether you are running a | |
543 version of Emacs which supports the outliner by hitting | |
544 @{@kbd{C-h h}@} to display the Hyperbole menu. If you see an | |
545 @code{Otl/} entry in the menu, then the outliner is available. | |
546 Otherwise, the outliner does not work with your version of Emacs, so | |
547 this section of the DEMO will not be of interest to you. | |
548 | |
549 The Hyperbole outliner produces structured, autonumbered documents | |
550 composed of hierarchies of cells. Each cell has two identifiers, a | |
551 relative autonumber indicating its present position within the outline | |
552 and a permanent identifier suitable for use within hyperlink references | |
553 to the cell. | |
554 | |
555 If the outliner works in your Emacs, see "kotl/EXAMPLE.kotl", an outline file | |
556 that explains how to operate the outliner. Use the @code{Otl/Example} menu | |
557 entry to display this file. Additional documentation can be found in | |
558 "(hyperbole.info)Outliner". "(hyperbole.info)Outliner Keys" | |
559 summarizes in alphabetical order the outliner commands which are bound | |
560 to keys. | |
561 | |
562 | |
563 * References | |
564 | |
565 [Stallman 87] Stallman, Richard. GNU Emacs Manual. Free Software | |
566 Foundation, Cambridge: MA, March 1987. | |
567 | |
568 * THE END |