0
|
1 \input texinfo
|
|
2 @c
|
24
|
3 @c FILE: hyperbole.texi
|
|
4 @c SUMMARY: The Hyperbole User Manual for V4
|
|
5 @c USAGE: Hardcopy man from TeX; Info man from `texinfo-format-buffer'.
|
0
|
6 @c
|
|
7 @c AUTHOR: Bob Weiner
|
24
|
8 @c
|
|
9 @c ORG: InfoDock Associates. We sell corporate support and
|
|
10 @c development contracts for InfoDock, Emacs and XEmacs.
|
|
11 @c E-mail: <info@infodock.com> Web: http://www.infodock.com
|
|
12 @c Tel: +1 408-243-3300
|
0
|
13 @c
|
|
14 @c ORIG-DATE: 6-Nov-91 at 11:18:03
|
36
|
15 @c LAST-MOD: 17-Mar-97 at 21:36:15 by Bob Weiner
|
0
|
16
|
|
17 @c %**start of header (This is for running Texinfo on a region.)
|
|
18 @setfilename ../info/hyperbole.info
|
|
19 @settitle Hyperbole User Manual
|
|
20 @c %**end of header (This is for running Texinfo on a region.)
|
|
21 @synindex vr fn
|
|
22
|
|
23 @iftex
|
|
24 @finalout
|
|
25 @end iftex
|
|
26
|
|
27 @titlepage
|
|
28 @sp 4
|
|
29 @center @titlefont{Hyperbole Manual}
|
|
30 @sp 1
|
|
31 @center Everyday Information Management
|
|
32 @sp 5
|
|
33 @center Bob Weiner
|
24
|
34 @center InfoDock Associates
|
0
|
35 @sp 1
|
24
|
36 @center E-mail: <hyperbole@@infodock.com> (This is a mailing list.)
|
0
|
37 @sp 2
|
36
|
38 @center Edition 4.023
|
0
|
39 @sp 2
|
36
|
40 @center March 17, 1997
|
0
|
41
|
|
42 @page
|
|
43 @vskip 0pt plus 1filll
|
24
|
44 Copyright @copyright{} 1991, 1992, 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
|
0
|
45
|
|
46 All trademarks referenced herein are trademarks of their respective
|
|
47 holders.
|
24
|
48
|
|
49 InfoDock Associates, the developer of Hyperbole and InfoDock (an industrial
|
|
50 quality turn-key version of XEmacs), donates its work on Hyperbole to the
|
|
51 Free Software Foundation and makes it freely available for worldwide
|
|
52 distribution.
|
|
53
|
|
54 InfoDock Associates is a commercial firm dedicated to radical productivity
|
|
55 improvement in technical environments, whether in software development or
|
|
56 other knowledge intensive disciplines. Our initial offerings include high
|
|
57 quality commercial support, training, books and custom package development
|
|
58 for InfoDock, XEmacs or GNU Emacs on a variety of platforms.
|
|
59
|
|
60 @example
|
|
61 E-mail: <info@@infodock.com>
|
|
62 Web: http://www.infodock.com
|
|
63 Tel: +1 408-243-3300
|
|
64 @end example
|
|
65
|
0
|
66 @setchapternewpage odd
|
|
67 @end titlepage
|
|
68 @page
|
|
69
|
|
70 @node Top, Introduction, (dir), (dir)
|
|
71 @c node-name, next, previous, up
|
|
72 @unnumbered Preface
|
|
73
|
|
74 @ifinfo
|
|
75 @noindent
|
24
|
76 Copyright @copyright{} 1991, 1992, 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
|
0
|
77
|
|
78 All trademarks referenced herein are trademarks of their respective holders.
|
|
79
|
24
|
80 InfoDock Associates, the developer of Hyperbole and InfoDock (an industrial
|
|
81 quality turn-key version of XEmacs), donates its work on Hyperbole to the
|
|
82 Free Software Foundation and makes it freely available for worldwide
|
|
83 distribution.
|
|
84
|
|
85 InfoDock Associates is a commercial firm dedicated to radical productivity
|
|
86 improvement in technical environments, whether in software development or
|
|
87 other knowledge intensive disciplines. Our initial offerings include high
|
|
88 quality commercial support, training, books and custom package development
|
|
89 for InfoDock, XEmacs or GNU Emacs on a variety of platforms.
|
|
90
|
|
91 @example
|
|
92 E-mail: <info@@infodock.com>
|
|
93 Web: http://www.infodock.com
|
|
94 Tel: +1 408-243-3300
|
|
95 @end example
|
|
96
|
0
|
97 @end ifinfo
|
|
98 This edition of the Hyperbole User Manual is for use with any version
|
24
|
99 4.02 or greater of Hyperbole.
|
0
|
100
|
|
101 Hyperbole is free software; you can use it, redistribute it and/or modify it
|
|
102 without fee under the terms of the GNU General Public License as published by
|
|
103 the Free Software Foundation; either version 2, or (at your option) any later
|
|
104 version.
|
|
105
|
|
106 Hyperbole is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
107 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
108 A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
109
|
|
110 You should have received a copy of the GNU General Public License
|
|
111 along with GNU Emacs or XEmacs; see the file COPYING. If not, write to
|
|
112 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
113
|
|
114 @cindex credits
|
|
115 @cindex InfoDock, obtaining
|
|
116 @cindex Hyperbole, obtaining
|
|
117 @cindex anonymous ftp
|
24
|
118 Hyperbole was designed and written by Bob Weiner of InfoDock Associates.
|
|
119 Motorola, Inc@. helped fund early work. For information on how to
|
|
120 obtain Hyperbole, @ref{Obtaining}.
|
0
|
121
|
|
122 This manual explains user operation and summarizes basic developer
|
|
123 facilities of Hyperbole. This major release of Hyperbole concentrates
|
|
124 on providing convenient access to information and control over its
|
|
125 display. The Hyperbole outliner emphasizes flexible views and structure
|
|
126 manipulation within bodies of information.
|
|
127
|
|
128 @cindex Hyperbole
|
|
129 @cindex hypertext
|
|
130 @cindex Emacs Lisp
|
|
131 @cindex Emacs 19
|
|
132 @cindex Epoch
|
|
133 @cindex XEmacs
|
24
|
134 Hyperbole (pronounced Hi-per-bo-lee) is an open, efficient, programmable
|
|
135 information management and hypertext system. It is intended for
|
|
136 everyday work on any UNIX platform supported by GNU Emacs. It works
|
|
137 well with the versions of Emacs that support multiple X or NEXTSTEP
|
|
138 windows: Emacs 19, XEmacs and Epoch. Hyperbole allows hypertext buttons
|
|
139 to be embedded within unstructured and structured files, mail messages
|
|
140 and news articles. It offers intuitive mouse-based control of
|
|
141 information display within multiple windows. It also provides
|
|
142 point-and-click access to Info manuals, ftp archives, Wide-Area
|
|
143 Information Servers (WAIS), and the World-Wide Web (WWW) hypertext
|
|
144 system through encapsulations of software that support these protocols.
|
0
|
145
|
|
146 @noindent
|
|
147 Hyperbole consists of four parts:
|
|
148
|
|
149 @table @bullet
|
|
150 @item Info Management
|
|
151 an interactive information management interface, including a powerful
|
|
152 rolodex, which anyone can use. It is easy to pick up and use since it
|
|
153 introduces only a few new mechanisms and provides user-level facilities
|
|
154 through a menu interface, which you control from the keyboard or the
|
|
155 mouse;
|
|
156
|
|
157 @item Hypertext Outliner
|
|
158 an outliner with multi-level autonumbering and permanent ids attached to
|
|
159 each outline node for use as hypertext link anchors, plus flexible view
|
|
160 specifications that can be embedded within links or used interactively;
|
|
161
|
|
162 @item Button Types
|
|
163 a set of hyper-button types that provides core hypertext and other
|
|
164 behaviors. Users can make simple changes to button types and those
|
|
165 familiar with Emacs Lisp can quickly prototype and deliver new types;
|
|
166
|
|
167 @item Programming Library
|
|
168 a set of programming library classes for system developers who want to
|
|
169 integrate Hyperbole with another user interface or as a back-end to a
|
|
170 distinct system. (All of Hyperbole is written in Emacs Lisp for ease of
|
|
171 modification. Although Hyperbole was initially designed as a prototype,
|
|
172 it has been engineered for real-world usage and is well structured.)
|
|
173 @end table
|
|
174
|
|
175 @cindex GNU Emacs
|
|
176 @kindex C-h t
|
|
177 @vindex file, DEMO
|
|
178 @cindex demonstration
|
|
179 @cindex button demo
|
|
180 Hyperbole may be used simply for browsing through documents
|
|
181 pre-configured with Hyperbole buttons, in which case, one can safely
|
|
182 ignore most of the information in this manual. The @file{DEMO} file
|
|
183 included in the Hyperbole distribution demonstrates many of Hyperbole's
|
|
184 standard facilities. It offers a much less technical introduction for
|
|
185 Hyperbole users by providing good examples of how buttons may be
|
|
186 used and an introduction to the outliner.
|
|
187
|
|
188 So if this manual is too detailed for your taste, you can skip it
|
|
189 entirely and just jump right into the demonstration, normally by typing
|
|
190 @{@kbd{C-h h d d}@}, assuming Hyperbole has already been installed at
|
|
191 your site. Otherwise, @ref{Installation}, for Hyperbole installation
|
|
192 and configuration information.
|
|
193
|
|
194 Many users, however, will want to do more than browse with Hyperbole,
|
|
195 e.g@. create their own buttons. The standard Hyperbole button editing
|
|
196 user interface is GNU Emacs-based, so a basic familiarity with the Emacs
|
|
197 editing model is useful. The material covered in the GNU Emacs
|
|
198 tutorial, normally bound to @{@kbd{C-h t}@} within Emacs, is more than
|
|
199 sufficient as background. If some GNU Emacs terms are unfamiliar to
|
|
200 you, @ref{Glossary, Emacs Glossary,, emacs, the GNU Emacs Manual}.
|
|
201
|
|
202 Before we delve into Hyperbole, a number of acknowledgments are in
|
|
203 order. Peter Wegner has encouraged the growth in this work. Morris
|
|
204 Moore has helped me pursue my own research visions and kept me striving
|
|
205 for excellence. Doug Engelbart has shown me the bigger picture and
|
|
206 continues to be an inspiration. His work provides a model from which I
|
|
207 am beginning to draw. Kellie Clark and I jointly designed the Hyperbole
|
|
208 outliner while sharing a life together. Chris Nuzum, as a user of
|
|
209 Hyperbole, has helped demonstrate its power since its inception; he
|
|
210 knows how to work with Hyperbole far better than I.
|
|
211
|
|
212 @menu
|
|
213 * Introduction::
|
|
214 * Installation::
|
|
215 * Buttons::
|
|
216 * Smart Keys::
|
|
217 * Menus::
|
|
218 * Entering Arguments::
|
|
219 * Outliner::
|
|
220 * Rolodex::
|
|
221 * Window Configurations::
|
|
222 * Developing with Hyperbole::
|
|
223 * Glossary::
|
|
224 * Smart Key Reference::
|
|
225 * Outliner Keys::
|
|
226 * Suggestion or Bug Reporting::
|
|
227 * Questions and Answers::
|
|
228 * Future Work::
|
|
229 * References::
|
|
230 * Key Binding Index::
|
|
231 * Code and File Index::
|
|
232 * Concept Index::
|
|
233
|
|
234 --- The Detailed Node Listing ---
|
|
235
|
|
236 Introduction
|
|
237
|
|
238 * Hyperbole Overview::
|
|
239 * Mail Lists::
|
|
240 * Manual Overview::
|
|
241
|
|
242 Installation
|
|
243
|
|
244 * Obtaining::
|
|
245 * Building::
|
|
246 * Installing::
|
|
247 * Configuring::
|
|
248
|
|
249 Configuring
|
|
250
|
|
251 * Internal Viewers::
|
|
252 * External Viewers::
|
|
253 * Link Variable Substitution::
|
|
254 * Button Colors::
|
|
255
|
|
256 Buttons
|
|
257
|
|
258 * Explicit Buttons::
|
|
259 * Global Buttons::
|
|
260 * Implicit Buttons::
|
|
261 * Action Types::
|
|
262 * Button Type Precedence::
|
|
263 * Button Files::
|
|
264 * Utilizing Explicit Buttons::
|
|
265
|
|
266 Utilizing Explicit Buttons
|
|
267
|
|
268 * Creation::
|
|
269 * Renaming::
|
|
270 * Deletion::
|
|
271 * Modification::
|
|
272 * Location::
|
|
273 * Buttons in Mail::
|
|
274 * Buttons in News::
|
|
275
|
|
276 Creation
|
|
277
|
|
278 * By Dragging:: Creation Via Action Key Drags
|
|
279 * By Menu:: Creation Via Menus
|
|
280
|
|
281 Outliner
|
|
282
|
|
283 * Menu Commands::
|
|
284 * Creating Outlines::
|
|
285 * Autonumbering::
|
|
286 * Idstamps::
|
|
287 * Editing::
|
|
288 * Viewing::
|
|
289 * Links::
|
|
290 * Cell Attributes::
|
|
291 * Outliner History::
|
|
292
|
|
293 Editing
|
|
294
|
|
295 * Adding and Killing::
|
|
296 * Moving Around::
|
|
297 * Relocating and Copying::
|
|
298 * Filling::
|
|
299 * Transposing::
|
|
300 * Splitting and Appending::
|
|
301 * Inserting and Importing::
|
|
302
|
|
303 Viewing
|
|
304
|
|
305 * Hiding and Showing::
|
|
306 * View Specs::
|
|
307
|
|
308 Rolodex
|
|
309
|
|
310 * Rolo Concepts::
|
|
311 * Rolo Menu::
|
|
312 * Rolo Keys::
|
|
313 * Rolo Settings::
|
|
314
|
|
315 Developing with Hyperbole
|
|
316
|
|
317 * Hook Variables::
|
|
318 * Creating Types::
|
|
319 * Explicit Button Technicalities::
|
|
320 * Encapsulating Systems::
|
|
321 * Embedding Hyperbole::
|
|
322
|
|
323 Creating Types
|
|
324
|
|
325 * Action Type Creation::
|
|
326 * Implicit Button Types::
|
|
327
|
|
328 Explicit Button Technicalities
|
|
329
|
|
330 * Button Label Normalization::
|
|
331 * Operational and Storage Formats::
|
|
332 * Programmatic Button Creation::
|
|
333
|
|
334 Smart Key Reference
|
|
335
|
|
336 * Smart Mouse Keys::
|
|
337 * Smart Keyboard Keys::
|
|
338 @end menu
|
|
339
|
|
340 @node Introduction, Installation, Top, Top
|
|
341 @chapter Introduction
|
|
342
|
|
343 This chapter describes what Hyperbole is, lists some of its potential
|
|
344 applications, explains how to subscribe to its mail lists, and then
|
|
345 summarizes the structure of the rest of the manual.
|
|
346
|
|
347 @menu
|
|
348 * Hyperbole Overview::
|
|
349 * Mail Lists::
|
|
350 * Manual Overview::
|
|
351 @end menu
|
|
352
|
|
353 @node Hyperbole Overview, Mail Lists, Introduction, Introduction
|
|
354 @section Hyperbole Overview
|
|
355 @cindex button
|
|
356 A Hyperbole user works with @emph{buttons} embedded within textual
|
|
357 documents; he may create, modify, move or delete buttons. Each button
|
|
358 performs a specific action, such as linking to a file or executing a
|
|
359 shell command.
|
|
360
|
|
361 @cindex button, explicit
|
|
362 @cindex button, global
|
|
363 @cindex button, implicit
|
|
364 @cindex button category
|
|
365 @cindex explicit button
|
|
366 @cindex global button
|
|
367 @cindex implicit button
|
|
368 There are three categories of Hyperbole buttons:
|
|
369 @table @dfn
|
|
370 @item explicit buttons
|
|
371 created by Hyperbole, accessible from within a single document;
|
|
372
|
|
373 @item global buttons
|
|
374 created by Hyperbole, accessible anywhere within a user's network of
|
|
375 documents;
|
|
376
|
|
377 @item implicit buttons
|
|
378 created and managed by other programs or embedded within the structure
|
|
379 of a document, accessible from within a single document. Hyperbole
|
|
380 recognizes implicit buttons by contextual patterns given in their type
|
|
381 specifications (explained later).
|
|
382 @end table
|
|
383
|
|
384 Explicit Hyperbole buttons may be embedded within any type of text file.
|
|
385 Implicit buttons may be recognized anywhere within a text file,
|
|
386 depending on the implicit button types that are available. All global
|
|
387 buttons are stored in a single location and activated by entering their
|
|
388 names, rather than by direct selection, the means used to activate
|
|
389 explicit and implicit buttons.
|
|
390
|
|
391 @noindent
|
|
392 To summarize:
|
|
393
|
|
394 @example
|
|
395 Button Category Active Within Activation Means Managed By
|
|
396 ========================================================================
|
|
397 Explicit a single document direct selection Hyperbole
|
|
398 Global any document specifying its name Hyperbole
|
|
399 Implicit a matching context direct selection other tools
|
|
400 ========================================================================
|
|
401 @end example
|
|
402
|
|
403 @cindex terminal use
|
|
404 Hyperbole buttons may be clicked upon with a mouse to activate them or
|
|
405 to describe their actions. Thus, a user can always check how a button
|
|
406 will act before activating it. Buttons may also be activated from a
|
|
407 keyboard. (In fact, virtually all Hyperbole operations, including menu
|
|
408 usage, may be performed from any standard character terminal interface,
|
|
409 so one need not be anchored to a workstation all day). @xref{Smart
|
|
410 Keys}.
|
|
411
|
|
412 @cindex Hyperbole features
|
|
413 Hyperbole does not enforce any particular hypertext or information
|
|
414 management model, but instead allows you to organize your information in
|
|
415 large or small chunks as you see fit. The Hyperbole outliner organizes
|
|
416 information hierarchies which may also contain links to external
|
|
417 information sources.
|
|
418
|
|
419 @noindent
|
|
420 Some of Hyperbole's most important features include:
|
|
421
|
|
422 @itemize @bullet
|
|
423 @item
|
|
424 Buttons may link to information or may execute procedures, such as
|
|
425 starting or communicating with external programs;
|
|
426
|
|
427 @item
|
|
428 One simply drags between a button source location and a link destination
|
|
429 to create or to modify a link button. The same result can be achieved
|
|
430 from the keyboard.
|
|
431
|
|
432 @item
|
|
433 Buttons may be embedded within electronic mail messages;
|
|
434
|
|
435 @item
|
|
436 Outlines allow rapid browsing, editing and movement of chunks of
|
|
437 information organized into trees (hierarchies);
|
|
438
|
|
439 @item
|
|
440 Other hypertext and information retrieval systems may be encapsulated
|
|
441 under a Hyperbole user interface (a number of samples are provided).
|
|
442 @end itemize
|
|
443
|
|
444 @cindex Hyperbole applications
|
|
445 @noindent
|
|
446 Typical Hyperbole applications include:
|
|
447
|
|
448 @table @strong
|
|
449 @item personal information management
|
|
450 Overlapping link paths provide a variety of views into an information space.
|
|
451 A search facility locates buttons in context and permits quick selection.
|
|
452
|
|
453 @item documentation and code browsing
|
|
454 Cross-references may be embedded within documentation. One can add a
|
|
455 point-and-click interface to existing documentation, link code with
|
|
456 associated design documents, or jump to the definition of an identifier
|
|
457 by selecting its name within code or documentation.
|
|
458
|
|
459 @item brainstorming
|
|
460 The Hyperbole outliner, @xref{Outliner}, is an
|
|
461 effective tool for capturing ideas and then quickly reorganizing them in
|
|
462 a meaningful way. Links to related ideas are easy to create,
|
|
463 eliminating the need to copy and paste information into a single place.
|
|
464
|
|
465 @item help/training systems
|
|
466 Tutorials containing buttons can show students how things work while
|
|
467 explaining the concepts, e.g@. an introduction to local commands. This
|
|
468 technique can be much more effective than written documentation alone.
|
|
469
|
|
470 @item archive managers
|
|
471 Programs that manage archives from incoming information streams may be
|
|
472 supplemented by having them add topic-based buttons that link to the
|
|
473 archive holdings. Users can then search and create their own links to
|
|
474 archive entries.
|
|
475 @end table
|
|
476
|
|
477 @node Mail Lists, Manual Overview, Hyperbole Overview, Introduction
|
|
478 @section Mail Lists
|
|
479
|
|
480 If you maintain or use Hyperbole, you should consider joining one of the
|
24
|
481 two Hyperbole mailing lists. @xref{Menus}, and the description
|
|
482 of the the Msg/ menu item, for a convenient means of joining and mailing
|
0
|
483 to these lists.
|
|
484
|
|
485 @cindex mail lists
|
|
486 @cindex e-mail
|
|
487 There are several Hyperbole-related mail addresses. Learn what each is
|
|
488 for before you mail to any of them.
|
|
489
|
|
490 @cindex mail list requests
|
|
491 @cindex joining a mail list
|
|
492 @cindex subscribing to a mail list
|
|
493 @cindex unsubscribing from a mail list
|
|
494 @format
|
24
|
495 <hyperbole-request@@infodock.com>
|
|
496 <hyperbole-announce-request@@infodock.com>
|
0
|
497 @end format
|
|
498
|
|
499 @display
|
|
500 @strong{All} mail concerning administration of the Hyperbole mailing
|
|
501 lists should be sent to the appropriate one of these addresses. That
|
|
502 includes addition, change, or deletion requests. Don't consider sending
|
|
503 such a request to a Hyperbole mail list or people will wonder why you
|
|
504 don't know that all Internet mail lists have a -request address for
|
|
505 administrative requests.@refill
|
|
506
|
24
|
507 Use the following formats in the @emph{body} of your message to execute requests,
|
|
508 where you substitute your own values for the <> delimited items and items
|
|
509 enclosed in [] are optional.
|
|
510
|
|
511 subscribe <mail-list-name> [<your-email-address>]
|
|
512 or
|
|
513 unsubscribe <mail-list-name> [<your-email-address>]
|
0
|
514
|
|
515 For example:
|
|
516
|
24
|
517 To: hyperbole-request@@infodock.com
|
|
518 Subject: Used if a human happens to read your mail.
|
|
519
|
|
520 subscribe hyperbole joe@@nowhere.gov
|
|
521
|
|
522 To change your address, you must unsubscribe your old address with
|
|
523 once command and subscribe your new address with another command, though
|
|
524 you can embed multiple commands on separate lines within a single message.
|
0
|
525 @end display
|
|
526
|
|
527 @noindent
|
|
528 There are two Hyperbole-related mail lists. Subscribe to one or the other,
|
|
529 not to both.
|
|
530
|
|
531 @cindex hyperbole mail list
|
|
532 @format
|
24
|
533 <hyperbole@@infodock.com>
|
0
|
534 @end format
|
|
535
|
|
536 @display
|
|
537 Mail list for discussion of all Hyperbole issues. Bug reports and
|
|
538 suggestions may also be sent here.@refill
|
|
539
|
|
540 @cindex e-mail, effective communication
|
|
541 @cindex effective communication
|
|
542 Always use your Subject and/or Summary: lines to state the position that
|
|
543 your message takes on the topic that it addresses.
|
|
544
|
|
545 For example, send:
|
|
546
|
|
547 Subject: Basic bug in top-level minibuffer menu.
|
|
548
|
|
549 rather than:
|
|
550
|
|
551 Subject: Hyperbole bug.
|
|
552
|
|
553 Statements end with periods, questions with question marks (typically),
|
|
554 and high energy, high impact declarations with exclamation points. This
|
|
555 simple rule makes all e-mail communication much easier for recipients to
|
|
556 handle appropriately.@refill
|
|
557
|
|
558 @cindex Hyperbole version
|
|
559 @cindex Emacs version
|
|
560 @vindex emacs-version
|
|
561 If you ask a question, your subject line should end with a ?,
|
|
562 e.g@. "Subject: How can man page SEE ALSOs be made implicit buttons?" A
|
|
563 "Subject: Re: How can ..." then indicates an answer to the question.
|
|
564 Question messages should normally include your Hyperbole and Emacs
|
|
565 version numbers and clearly explain your problem and surrounding issues.
|
|
566 Otherwise, you will simply waste the time of those who may want to help
|
|
567 you. (Your top-level Hyperbole menu shows its version number and @{@kbd{M-x
|
|
568 emacs-version @key{RET}}@} gives the other.)@refill
|
|
569
|
|
570 If you ask questions, you should consider adding to the discussion by
|
|
571 telling people the kinds of work you are doing or contemplating doing
|
|
572 with Hyperbole. In this way, the list will not be overwhelmed by
|
|
573 messages that ask for, but provide no information.@refill
|
|
574 @end display
|
|
575
|
|
576 @cindex hyperbole-announce mail list
|
|
577 @format
|
24
|
578 <hyperbole-announce@@infodock.com>
|
0
|
579 @end format
|
|
580
|
|
581 @display
|
|
582 Those who don't want to participate in the discussion but want to hear
|
|
583 about bug fixes and new releases of Hyperbole should subscribe to this
|
|
584 list. Anyone on the `hyperbole' list is automatically on this one too,
|
|
585 so there is no need to subscribe to this one in that case. This list is
|
|
586 for official fixes and announcements so don't send your own fixes here.
|
|
587 Send them to `hyperbole' instead.
|
|
588 @end display
|
|
589
|
|
590
|
|
591 @node Manual Overview, , Mail Lists, Introduction
|
|
592 @section Manual Overview
|
|
593
|
|
594 Remember that the @file{DEMO} file included in the Hyperbole
|
|
595 distribution demonstrates many of Hyperbole's standard facilities,
|
|
596 (@pxref{Top, Preface}) for more details.
|
|
597
|
|
598 @xref{Glossary}, for definitions of Hyperbole terms for quick
|
|
599 reference, so in some cases terms are not precisely defined within the
|
|
600 text. Be sure to reference the glossary if a term is unclear to you.
|
|
601 Although you need not have a keen understanding of all of these terms, a
|
|
602 quick scan of the Glossary should help throughout Hyperbole use.
|
|
603
|
|
604 If you have a question, feature suggestion or bug report on Hyperbole,
|
|
605 follow the instructions given in @ref{Suggestion or Bug Reporting}. A few
|
|
606 commonly asked questions are answered in the manual, @ref{Questions and
|
|
607 Answers}. If you are interested in classic articles on hypertext,
|
|
608 @ref{References}.
|
|
609
|
|
610 @xref{Installation}, for explanations of how to obtain, install, configure
|
|
611 and load Hyperbole for use.
|
|
612
|
|
613 @xref{Buttons}, for an overview of Hyperbole buttons and how to use them.
|
|
614
|
|
615 @xref{Smart Keys}, for an explanation of the innovative,
|
|
616 context-sensitive mouse and keyboard Action and Assist Keys offered by
|
|
617 Hyperbole. @xref{Smart Key Reference}, for a complete reference on what
|
|
618 the Action and Assist Keys do in each particular context that they
|
|
619 recognize.
|
|
620
|
|
621 (Keep in mind as you read about how to use Hyperbole that in many cases,
|
|
622 it provides a number of overlapping interaction methods are provided to
|
|
623 support different work styles and hardware limitations. You need learn
|
|
624 only one with which you can become comfortable, in such instances.)
|
|
625
|
|
626 @xref{Menus}, for summaries of Hyperbole menu commands and how to use
|
|
627 the minibuffer-based menus that work on dumb terminals.
|
|
628
|
|
629 @xref{Entering Arguments}, for special support that Hyperbole provides for
|
|
630 entering arguments when prompted for them.
|
|
631
|
|
632 @xref{Outliner}, for concept and usage information on the
|
|
633 autonumbered, hypertextual outliner. A full summary of the outliner
|
|
634 commands that are bound to keys may be found in @ref{Outliner Keys}.
|
|
635
|
|
636 @xref{Rolodex}, for concept and usage information on the
|
|
637 rapid lookup, hierarchical, free text record management system included
|
|
638 with Hyperbole.
|
|
639
|
|
640 @xref{Window Configurations}, for instructions on how to save and restore
|
|
641 the set of buffers and windows that appear with a frame. This feature
|
|
642 lets you switch among working contexts easily, even on a dumb terminal.
|
|
643 Such configurations only last throughout your current editor session.
|
|
644
|
|
645 Developers comfortable with Emacs Lisp will want to continue on through
|
|
646 to, @ref{Developing with Hyperbole}.
|
|
647
|
|
648 @xref{Future Work}, for future directions in Hyperbole's evolution.
|
|
649
|
|
650
|
|
651 @node Installation, Buttons, Introduction, Top
|
|
652 @chapter Installation
|
|
653
|
|
654 @cindex installation
|
|
655 Hyperbole must be installed at your site before you can use it. The
|
|
656 following sections explain how to obtain, install and configure
|
|
657 Hyperbole for use.
|
|
658
|
|
659 @vindex file, hsite.el
|
|
660 @cindex customization, init
|
|
661 If you want to customize the basic Hyperbole initialization sequence for
|
|
662 yourself rather than the users at your site, you should make a personal
|
|
663 copy of the @file{hsite.el} file, modify it the way you want, and then
|
|
664 load it. (If you are familiar with Emacs Lisp, @ref{Hook Variables}.)
|
|
665
|
|
666 @menu
|
|
667 * Obtaining::
|
|
668 * Building::
|
|
669 * Installing::
|
|
670 * Configuring::
|
|
671 @end menu
|
|
672
|
|
673 @node Obtaining, Building, Installation, Installation
|
|
674 @section Obtaining
|
|
675
|
|
676 @cindex ftp
|
|
677 @cindex anonymous ftp
|
24
|
678 Hyperbole can be obtained via anonymous ftp on the Internet from:
|
0
|
679
|
|
680 @file{ftp://ftp.xemacs.org/pub/infodock}.
|
|
681
|
|
682 @cindex downloading Hyperbole
|
|
683 @cindex obtaining Hyperbole
|
|
684 @cindex Hyperbole, obtaining
|
|
685 @noindent
|
|
686 Here are detailed instructions for downloading and unpacking Hyperbole.
|
|
687
|
|
688 Move to a directory below which you want the @file{hyperbole} directory to
|
|
689 be created. Unpacking the Hyperbole archive will create the
|
|
690 @file{hyperbole} directory and will place all of the files below it.
|
|
691
|
|
692 @example
|
|
693 cd <LOCAL-EMACS-LISP-DIR>
|
|
694 @end example
|
|
695
|
|
696 @noindent
|
|
697 Ftp to ftp.xemacs.org (Internet Host ID = 128.174.252.16):
|
|
698
|
|
699 @example
|
24
|
700 prompt> ftp ftp.xemacs.org (If this doesn't work, try `ftp xemacs.org'.)
|
0
|
701 @end example
|
|
702
|
|
703 @noindent
|
|
704 Login as @emph{anonymous} with your own @emph{<user-id>@@<site-name>} as
|
|
705 a password.
|
|
706
|
|
707 @example
|
|
708 Name (ftp.xemacs.org): anonymous
|
|
709 331 Guest login ok, send EMAIL address (e.g@. user@@host.domain)
|
|
710 as password.
|
|
711 Password:
|
|
712 230 Guest login ok, access restrictions apply.
|
|
713 @end example
|
|
714
|
|
715 @noindent
|
|
716 Move to the Hyperbole directory:
|
|
717
|
|
718 @example
|
24
|
719 ftp> cd pub/xemacs/infodock
|
0
|
720 @end example
|
|
721
|
|
722 @noindent
|
|
723 Set your transfer mode to binary:
|
|
724
|
|
725 @example
|
|
726 ftp> bin
|
|
727 200 Type set to I.
|
|
728 @end example
|
|
729
|
|
730 @noindent
|
|
731 Turn off prompting:
|
|
732
|
|
733 @example
|
|
734 ftp> prompt
|
|
735 Interactive mode off.
|
|
736 @end example
|
|
737
|
|
738 @noindent
|
|
739 Retrieve just the Hyperbole archive and any diff-based patches (there may not
|
|
740 be any patches):
|
|
741
|
|
742 @example
|
|
743 ftp> mget hyperbole*
|
|
744 ftp> mget hdiff*
|
|
745 @end example
|
|
746
|
|
747 @noindent
|
|
748 Close the ftp connection:
|
|
749
|
|
750 @example
|
|
751 ftp> quit
|
|
752 221 Goodbye.
|
|
753 @end example
|
|
754
|
|
755 @cindex gzcat
|
|
756 @cindex zcat
|
|
757 @cindex gunzip
|
|
758 @cindex tar archive
|
|
759 @cindex uncompressing archives
|
|
760 @cindex unpacking archives
|
|
761 @noindent
|
|
762 Unpack the tar archive using the GNU version of the @code{zcat} program,
|
|
763 sometimes called @code{gzcat} or the @code{gunzip} program:
|
|
764
|
|
765 @example
|
|
766 zcat hyperbole*tar.gz | tar xvf -
|
|
767 or
|
|
768 gunzip hyperbole*tar.gz; tar xvf hyperbole*tar
|
|
769 @end example
|
|
770
|
|
771 @noindent
|
|
772 Apply any patches you retrieved:
|
|
773
|
|
774 @example
|
|
775 cd hyperbole; patch < <patch-file>
|
|
776 @end example
|
|
777
|
|
778
|
|
779 @node Building, Installing, Obtaining, Installation
|
|
780 @section Building
|
|
781
|
|
782 @vindex file, Makefile
|
|
783 @vindex file, hsite.el
|
|
784 @cindex Hyperbole, building
|
|
785 @cindex building Hyperbole
|
|
786 The following explains how to Use the Hyperbole @file{Makefile} to
|
|
787 compile any needed code, to generate the @file{hsite.el} file used for
|
|
788 site-specific Hyperbole customization, and to produce printable
|
|
789 documentation.
|
|
790
|
|
791 @vindex EMACS, environment variable
|
|
792 @cindex compiling Lisp
|
|
793 @cindex Lisp compilation
|
|
794 Edit the line near the top of @file{Makefile} that represents the emacs
|
|
795 version that you use, so that it corresponds to the emacs executable
|
|
796 name used on your system. Then immediatly below there, set the
|
|
797 @var{EMACS} variable to the variable name for the emacs that you will
|
|
798 use to compile the Hyperbole Lisp files.
|
|
799
|
|
800 @vindex SITE-PRELOADS, environment variable
|
|
801 You may also have to set the @var{SITE-PRELOADS} variable defined further down
|
|
802 in the file; follow the instructions that precede the @var{SITE-PRELOADS =}
|
|
803 line. Make these changes now and save the @file{Makefile}.
|
|
804
|
|
805 @cindex HYPERBOLE-DIR
|
|
806 The following instructions use the term @file{<HYPERBOLE-DIR>/} to refer
|
|
807 to your @file{hyperbole/} directory, so substitute your own value.
|
|
808
|
|
809 @noindent
|
|
810 To install Hyperbole for use with InfoDock, XEmacs, GNU Emacs or Epoch, from
|
|
811 a shell:
|
|
812
|
|
813 @example
|
|
814 cd <HYPERBOLE-DIR>; make
|
|
815 @end example
|
|
816
|
|
817 @noindent
|
|
818 All of the .elc compiled Lisp files are already built for XEmacs and V19, so
|
|
819 this build will finish very quickly. If you really want to rebuild all of
|
|
820 the .elc files, use:
|
|
821
|
|
822 @example
|
|
823 cd <HYPERBOLE-DIR>; make all-elc
|
|
824 @end example
|
|
825
|
|
826 @cindex Postscript
|
|
827 @cindex manual, generating Postscript
|
|
828 @vindex file, man/hyperbole.ps
|
|
829 @noindent
|
|
830 To produce the Postscript version of the Hyperbole manual, you must have
|
|
831 the TeX formatter on your system:
|
|
832
|
|
833 @example
|
|
834 cd <HYPERBOLE-DIR>; make ps
|
|
835 @end example
|
|
836
|
|
837 @noindent
|
|
838 To install Hyperbole for use with GNU Emacs V18 or Epoch:
|
|
839
|
|
840 @example
|
|
841 cd <HYPERBOLE-DIR>; make all-elc-v18
|
|
842 @end example
|
|
843
|
|
844 @noindent
|
|
845 This will produce a complete set of Emacs V18 .elc files.
|
|
846
|
|
847
|
|
848 @node Installing, Configuring, Building, Installation
|
|
849 @section Installing
|
|
850
|
|
851 @cindex configuration
|
|
852 You may want to explore the Hyperbole configuration options before
|
|
853 installing it. @xref{Configuring}. If you just want to get up and
|
|
854 running quickly, however, there is no need to configure anything, just
|
|
855 follow these instructions to install Hyperbole.
|
|
856
|
|
857 @cindex Hyperbole, initializing
|
|
858 @cindex initializing Hyperbole
|
|
859 @cindex installation
|
|
860 @cindex site initialization
|
|
861 @vindex file, hsite.el
|
|
862 @vindex file, ~/.emacs
|
|
863 Add the following lines to a site initialization file such as
|
|
864 @file{site-start.el} to set up so that all users have Hyperbole
|
|
865 loaded for them when they run Emacs. Otherwise, each user will have to
|
|
866 add these lines to his own @file{~/.emacs} initialization file.
|
|
867
|
|
868 @cindex autoloading Hyperbole
|
|
869 @cindex Hyperbole, autoloading
|
|
870 @noindent
|
|
871 To autoload Hyperbole so that it loads only when needed:
|
|
872
|
|
873 @vindex hyperb:dir
|
|
874 @vindex file, hversion.el
|
|
875 @vindex file, hyperbole.el
|
|
876 @lisp
|
|
877 (defvar hyperb:dir "<HYPERBOLE-DIR>/")
|
|
878 "Directory where the Hyperbole executable code is kept.
|
|
879 It must end with a directory separator character.")
|
|
880
|
|
881 (load (expand-file-name "hversion" hyperb:dir))
|
|
882 (load (expand-file-name "hyperbole" hyperb:dir))
|
|
883 @end lisp
|
|
884
|
|
885 @cindex loading Hyperbole
|
|
886 @cindex Hyperbole, loading
|
|
887 This establishes a few key bindings and sets up Hyperbole to
|
|
888 automatically load whenever you activate its menu. If you would rather
|
|
889 have the whole Hyperbole system loaded when you start up so that you can
|
|
890 always use the Smart Keys and other facilities, add the additional line:
|
|
891
|
|
892 @lisp
|
|
893 (require 'hsite)
|
|
894 @end lisp
|
|
895
|
|
896 If you use mouse keys, be sure to add the above lines after any setup of
|
|
897 mouse key bindings, to ensure that Hyperbole's mouse keys are properly
|
|
898 initialized. @xref{Smart Keys}, for further details. If you use any
|
|
899 Hyperbole mail or news support, @ref{Buttons in Mail}, be certain to
|
|
900 perform all of your personal mail/news initializations before the point
|
|
901 at which you load Hyperbole. Otherwise, the mail/news support may not
|
|
902 be configured properly. For example, if you use the Emacs add-on
|
|
903 Supercite package, its setup should come before Hyperbole initialization.
|
|
904
|
|
905 @cindex Hyperbole manual
|
|
906 @noindent
|
|
907 The Hyperbole Manual is included in the distribution in two forms:
|
|
908
|
|
909 @cindex Info manual
|
|
910 @cindex Texinfo manual
|
|
911 @vindex file, man/hyperbole.info
|
|
912 @vindex file, man/hyperbole.texi
|
|
913 @example
|
|
914 @file{man/hyperbole.info} - online version
|
|
915 @file{man/hyperbole.texi} - source form
|
|
916 @end example
|
|
917
|
|
918 @vindex Info-directory-list
|
|
919 @noindent
|
|
920 To add pointers to the Info version of the Hyperbole manual within your
|
|
921 Info directory, follow these instructions. If @var{Info-directory-list}
|
|
922 is bound as a variable within your Emacs (all versions except V18 and
|
|
923 Epoch), then you can simply set it so that <HYPERBOLE-DIR> is an element
|
|
924 in the list:
|
|
925
|
|
926 @lisp
|
|
927 (setq Info-directory-list (cons "<HYPERBOLE-DIR>" Info-directory-list))
|
|
928 @end lisp
|
|
929
|
|
930 @noindent
|
|
931 Otherwise, from a shell:
|
|
932
|
|
933 @vindex Info-directory
|
|
934 @example
|
|
935 cd to the directory given by your @var{Info-directory} variable
|
|
936 rm hyperbole.info*; cp <HYPERBOLE-DIR>/man/hyperbole.info* .
|
|
937 @end example
|
|
938
|
|
939 @noindent
|
|
940 For all versions of Emacs, add an Info menu entry for the Hyperbole
|
|
941 manual in your Info @file{dir} file (the `*' should be placed in the
|
|
942 first column of the file):
|
|
943
|
|
944 @example
|
|
945 * Hyperbole:: GNU Emacs-based everyday information management system.
|
|
946 Use @{C-h h d d@} for a demonstration. Includes context-sensitive
|
|
947 mouse and keyboard support, a powerful rolodex, an autonumbered
|
|
948 outliner with hyperlink anchors for each outline cell, and extensible
|
|
949 hypertext facilities including hyper-links in mail and news messages.
|
|
950 @end example
|
|
951
|
|
952 @cindex invoking Hyperbole
|
|
953 @cindex starting Hyperbole
|
|
954 @cindex Hyperbole, starting
|
|
955 @cindex Hyperbole main menu
|
|
956 @kindex C-h h
|
|
957 @findex hyperbole
|
|
958 That's all there is to the installation. Once Hyperbole has been
|
|
959 installed for use at your site, you can invoke it with @{@kbd{C-h h}@}
|
|
960 or @{@kbd{M-x hyperbole @key{RET}}@} to bring up the Hyperbole main menu
|
|
961 in the minibuffer window.
|
|
962
|
|
963
|
|
964 @node Configuring, , Installing, Installation
|
|
965 @section Configuring
|
|
966
|
24
|
967 @cindex menu, Cust
|
|
968 @cindex customization
|
|
969 Major Hyperbole user options can be set from the window-system-based
|
|
970 Customization submenu below the Hyperbole menu. Alternatively, the
|
|
971 minibuffer-based menu, Cust/ may be used.
|
|
972
|
0
|
973 @cindex configuration
|
|
974 @vindex file, hyperbole.el
|
|
975 @vindex file, hsite.el
|
24
|
976 There are many additional Hyperbole configuration options that may be
|
|
977 changed by editing the @file{hyperbole.el} and @file{hsite.el} files in
|
|
978 the @file{hyperbole/} directory. The following sections discuss the
|
0
|
979 configuration options most likely to be of interest to users.
|
|
980
|
|
981 @menu
|
|
982 * Internal Viewers::
|
|
983 * External Viewers::
|
|
984 * Link Variable Substitution::
|
|
985 * Button Colors::
|
|
986 @end menu
|
|
987
|
|
988
|
|
989 @node Internal Viewers, External Viewers, Configuring, Configuring
|
|
990 @subsection Internal Viewers
|
|
991 @vindex hpath:display-alist
|
|
992 @vindex file, hsite.el
|
|
993 @cindex file display function
|
|
994 @cindex display function
|
|
995 @cindex internal viewer
|
|
996 @cindex link, display function
|
|
997 When given a file name, Hyperbole will by default display the file for
|
|
998 editing within an Emacs buffer. The @var{hpath:display-alist} variable
|
|
999 can be used to specify file name patterns, such as matching suffixes,
|
|
1000 which will invoke a special Emacs Lisp function to display any matching
|
|
1001 files within Emacs. This can be used to format raw data files for
|
|
1002 convenient display.
|
|
1003
|
|
1004 Configure the @var{hpath:display-alist} variable in @file{hsite.el}.
|
|
1005 Its value is an association list whose elements are
|
|
1006 (<file-name-regular-expression> . <function-of-one-arg>) pairs. Any
|
|
1007 path whose name matches a <file-name-regular-expression> will be
|
|
1008 displayed by calling the associated <function-of-one-arg> with the file
|
|
1009 name as the argument.@refill
|
|
1010
|
|
1011 @xref{External Viewers}, for instructions on associating file names with
|
|
1012 external, window-system specific viewers.
|
|
1013
|
|
1014 @node External Viewers, Link Variable Substitution, Internal Viewers, Configuring
|
|
1015 @subsection External Viewers
|
|
1016 @vindex hpath:find-alist
|
|
1017 @vindex file, hsite.el
|
|
1018 @cindex window system
|
|
1019 @cindex external program
|
|
1020 @cindex external viewer
|
|
1021 @cindex link, viewer program
|
|
1022 If you will be using Hyperbole under a window system, you may want to
|
|
1023 configure the @var{hpath:find-alist} variable in @file{hsite.el} to
|
|
1024 support hyperlinks which open files using non-Emacs tools, e.g@. a
|
|
1025 fax reader or a bitmap viewer.
|
|
1026
|
|
1027 The value of @var{hpath:find-alist} is determined when Hyperbole is
|
|
1028 initialized based upon the current window system and the version of
|
|
1029 Emacs in use. The value is an association list whose elements are
|
|
1030 (<file-name-regular-expression> . <viewer-program>) pairs. Any path
|
|
1031 whose name matches a <file-name-regular-expression> will be
|
|
1032 displayed using the corresponding viewer-program. If a <viewer-program>
|
|
1033 entry contains a @code{%s} string, the filename to display will be
|
|
1034 substituted at that point within the string. Otherwise, the filename
|
|
1035 will be appended to the <viewer-program> entry. See the "x-suffixes"
|
|
1036 and "nextstep-suffixes" settings within the definition of
|
|
1037 @var{hpath:find-alist} as examples.@refill
|
|
1038
|
|
1039 @node Link Variable Substitution, Button Colors, External Viewers, Configuring
|
|
1040 @subsection Link Variable Substitution
|
|
1041 @vindex hpath:variables
|
|
1042 @cindex environment variables
|
|
1043 @cindex Emacs Lisp variables
|
|
1044 @cindex Lisp variables
|
|
1045 Another variable to consider modifying in the @file{hsite.el} file is
|
|
1046 @var{hpath:variables}. This variable consists of a list of Emacs Lisp
|
|
1047 variable names, each of which may have a pathname or a list of pathnames
|
|
1048 as a value. Whenever a Hyperbole file or directory link button is
|
|
1049 created, its pathname is compared against the values in
|
|
1050 @var{hpath:variables}. The first match found, if any, is selected and
|
|
1051 its associated variable name is substituted into the link pathname, in
|
|
1052 place of its literal value. When the link is resolved (the button is
|
|
1053 activated), Hyperbole replaces each variable with the first matching
|
|
1054 value from this list. (Environment variables are also replaced whenever
|
|
1055 link paths are resolved.
|
|
1056
|
|
1057 This permits sharing of links over wide areas, where the variable values
|
|
1058 may differ between link creator and link activator. The entire process
|
|
1059 is wholly transparent to the user; it is explained here simply to help
|
|
1060 you in deciding whether or not to modify the value of
|
|
1061 @var{hpath:variables}.
|
|
1062
|
|
1063 @node Button Colors, , Link Variable Substitution, Configuring
|
|
1064 @subsection Configuring Button Colors
|
|
1065 @cindex XEmacs support
|
|
1066 @cindex Emacs 19 support
|
|
1067 @cindex Epoch support
|
|
1068 @cindex button highlighting
|
|
1069 @cindex button flashing
|
|
1070 @vindex file, hui-ep*.el
|
|
1071 @findex hproperty:cycle-but-color
|
|
1072 When Hyperbole is run under a window system together with Emacs 19,
|
|
1073 XEmacs or Epoch, it automatically highlights any explicit buttons in
|
|
1074 a buffer and makes them flash when selected. The main setting
|
|
1075 you may want change is the selection of a color (or style) for button
|
|
1076 highlighting and button flashing. See the @file{hui-*-b*.el} files for
|
|
1077 lists of potential colors and the code which supports this behavior. A
|
|
1078 call to @code{(hproperty:cycle-but-color)} within a Hyperbole
|
|
1079 initialization sequence in the @file{hsite.el} file changes the color
|
|
1080 used to highlight and flash explicit buttons.
|
|
1081
|
|
1082 @cindex button emphasis
|
|
1083 @vindex hproperty:but-emphasize-p
|
|
1084 @vindex file, hsite.el
|
|
1085 Additionally, under XEmacs and Emacs 19, if @var{hproperty:but-emphasize-p}
|
|
1086 is set to @code{t} in @file{hsite.el}, then whenever the mouse pointer
|
|
1087 moves over an explicit button, it will be emphasized in a different
|
|
1088 color or style. This emphasis is in addition to any non-mouse-sensitive
|
|
1089 button highlighting.
|
|
1090
|
|
1091 @cindex button highlighting, forcing
|
|
1092 @findex hproperty:but-create
|
|
1093 If you read in a file with explicit buttons before you load Hyperbole,
|
|
1094 these buttons won't be highlighted. Load Hyperbole and then use
|
|
1095 @code{M-x hproperty:but-create @key{RET}} to highlight the buttons in
|
|
1096 the current buffer.
|
|
1097
|
|
1098
|
|
1099 @node Buttons, Smart Keys, Installation, Top
|
|
1100 @chapter Buttons
|
|
1101
|
|
1102 This chapter explains the user-level notion of Hyperbole buttons.
|
|
1103 Hyperbole buttons that are stored in files persist across Emacs
|
|
1104 sessions, so they provide a convenient means of linking from one
|
|
1105 information source to another.
|
|
1106
|
|
1107 @menu
|
|
1108 * Explicit Buttons::
|
|
1109 * Global Buttons::
|
|
1110 * Implicit Buttons::
|
|
1111 * Action Types::
|
|
1112 * Button Type Precedence::
|
|
1113 * Button Files::
|
|
1114 * Utilizing Explicit Buttons::
|
|
1115 @end menu
|
|
1116
|
|
1117 @node Explicit Buttons, Global Buttons, Buttons, Buttons
|
|
1118 @section Explicit Buttons
|
|
1119
|
|
1120 @cindex explicit button
|
|
1121 @cindex button, explicit
|
|
1122 @cindex button label
|
|
1123 Hyperbole creates and manages @emph{explicit buttons} which look like
|
|
1124 this @code{<(fake button)>} to a Hyperbole user. They are quickly
|
|
1125 recognizable, yet relatively non-distracting as one scans the text in
|
|
1126 which they are embedded. The text between the @code{<(} and
|
|
1127 @code{)>} delimiters is called the @dfn{button label}. Spacing between
|
|
1128 words within a button label is irrelevant to Hyperbole, so button labels
|
|
1129 may wrap across several lines without causing a problem.
|
|
1130
|
|
1131 @cindex button data
|
|
1132 @cindex button attribute
|
|
1133 @vindex file, .hypb
|
|
1134 Hyperbole stores the @dfn{button data} that gives an explicit button its
|
|
1135 behavior, separately from the button label, in a file named @file{.hypb}
|
|
1136 within the same directory as the file in which the button is created.
|
|
1137 Thus, all files in the same directory share a common button data file.
|
|
1138 Button data is comprised of individual @dfn{button attribute} values. A
|
|
1139 user never sees this data in its raw form but may see a formatted
|
|
1140 version by asking for help on a button.
|
|
1141
|
|
1142 @cindex button, moving
|
|
1143 @cindex moving buttons
|
|
1144 Explicit buttons may be freely moved about within the buffer in which
|
|
1145 they are created. (No present support exists for moving buttons between
|
|
1146 buffers). A single button may also appear multiple times within the
|
|
1147 same buffer; one simply copies the button label with its delimiters
|
|
1148 to a new location in such cases.
|
|
1149
|
|
1150 Each explicit button is assigned an action type which determines the
|
|
1151 actions that it performs. @dfn{Link action types} connect buttons to
|
|
1152 particular types of referents. @dfn{Activation} of such buttons then
|
|
1153 displays the referents.
|
|
1154
|
|
1155 @cindex linking, in-place
|
|
1156 @cindex Hyperbole data model
|
|
1157 Hyperbole does not manage referent data; this is left to the
|
|
1158 applications that generate the data. This means that Hyperbole
|
|
1159 provides in-place linking and does not require reformatting of data to
|
|
1160 integrate it with a Hyperbole framework.
|
|
1161
|
|
1162 @node Global Buttons, Implicit Buttons, Explicit Buttons, Buttons
|
|
1163 @section Global Buttons
|
|
1164
|
|
1165 @cindex global button
|
|
1166 @cindex button, global
|
|
1167 @cindex button label
|
|
1168 Access to explicit buttons depends upon the information on your screen
|
|
1169 since they are embedded within particular buffers. Sometimes it is
|
|
1170 useful to activate buttons without regard to the information with which
|
|
1171 you are presently working. In such instances, you use @dfn{global
|
|
1172 buttons}, which are simply explicit buttons which may be activated or
|
|
1173 otherwise operated upon by entering their labels when they are prompted
|
|
1174 for, rather than selecting the buttons within a buffer.
|
|
1175
|
|
1176 If you want a permanent link to a file section that you can follow at
|
|
1177 any time, you can use a global button. Or what about an Emacs keyboard
|
|
1178 macro that you use frequently? Create an @code{exec-kbd-macro} button
|
|
1179 with an easy to type name and then you can easily activate it whenever
|
|
1180 the need arises.
|
|
1181
|
|
1182 @node Implicit Buttons, Action Types, Global Buttons, Buttons
|
|
1183 @section Implicit Buttons
|
|
1184
|
|
1185 @cindex button, implicit
|
|
1186 @cindex implicit button
|
|
1187 Implicit buttons are those defined by the natural structure of a
|
|
1188 document. They are identified by contextual patterns which limit the
|
|
1189 locations or states in which they can appear. Their behavior is
|
|
1190 determined by one or more actions which they trigger when activated. An
|
|
1191 action is derived from either a Hyperbole action type specification,
|
|
1192 @ref{Action Types}, or an Emacs Lisp function. Implicit
|
|
1193 button types may use the same action types that explicit buttons do.
|
|
1194
|
|
1195 @vindex file, hibtypes.el
|
|
1196 @cindex context
|
|
1197 Implicit buttons never have any button data associated with them. They
|
|
1198 are recognized in context based on predicate matches defined within
|
|
1199 implicit button types. For example, Hyperbole recognizes file names
|
|
1200 enclosed in double quotes and can quickly display their associated files
|
|
1201 in response to simple mouse clicks.
|
|
1202
|
|
1203 @cindex ibtypes, list of
|
|
1204 @noindent
|
|
1205 See @file{hibtypes.el} for complete examples. Standard implicit button
|
24
|
1206 types are listed below in the order in which Hyperbole tries to match
|
|
1207 to the types when looking for an implicit button.
|
0
|
1208
|
|
1209 @table @code
|
|
1210
|
|
1211 @item doc-id
|
|
1212 @findex ibtypes::doc-id
|
|
1213 @cindex online library
|
|
1214 @cindex document identifier
|
|
1215 Displays an index entry for a site-specific document given its id. Ids
|
24
|
1216 must be delimited by `doc-id-start' and `doc-id-end' and must match the
|
|
1217 function given by `doc-id-p'. This permits creation of catalogued
|
0
|
1218 online libraries. See @file{$@{hyperb:dir@}/hib-doc-id.el} for more
|
|
1219 information.@refill
|
|
1220
|
24
|
1221 @item completion
|
|
1222 @findex ibtypes::completion
|
|
1223 @cindex completion
|
|
1224 Inserts completion at point into minibuffer or other window.
|
|
1225
|
|
1226 @item Info-node
|
|
1227 @findex ibtypes::Info-node
|
|
1228 @cindex Info node
|
|
1229 Makes "(file)node" buttons display the associated Info node.
|
|
1230
|
|
1231 @item mail-address
|
|
1232 @findex ibtypes::mail-address
|
|
1233 @cindex e-mail address
|
|
1234 @cindex rolodex address
|
|
1235 @cindex address
|
|
1236 If on an e-mail address in a specific buffer type, mail to that address
|
|
1237 in another window. Applies to the rolodex match buffer, any buffer
|
|
1238 attached to a file in @var{rolo-file-list}, or any buffer with @file{mail}
|
|
1239 or @file{rolo} (case-insensitive) within its name.
|
|
1240
|
|
1241 @item patch-msg
|
|
1242 @findex ibtypes::patch-msg
|
|
1243 @cindex patch output
|
|
1244 Jumps to source code associated with output from the @code{patch}
|
|
1245 program. Patch applies diffs to source code.
|
|
1246
|
0
|
1247 @item elisp-compiler-msg
|
|
1248 @findex ibtypes::elisp-compiler-msg
|
|
1249 @cindex byte compiler error
|
|
1250 @cindex Emacs Lisp compiler error
|
|
1251 @cindex compiler error
|
|
1252 Jumps to source code for definition associated with byte-compiler error
|
|
1253 message. Works when activated anywhere within an error line.
|
|
1254
|
24
|
1255 @item grep-msg
|
|
1256 @findex ibtypes::grep-msg
|
|
1257 @cindex grep
|
|
1258 @cindex compiler error
|
|
1259 Jumps to line associated with grep or compilation error msgs.
|
|
1260 Messages are recognized in any buffer.
|
|
1261
|
0
|
1262 @item debugger-source
|
|
1263 @findex ibtypes::debugger-source
|
|
1264 @cindex gdb
|
|
1265 @cindex dbx
|
|
1266 @cindex xdb
|
|
1267 @cindex stack frame
|
|
1268 @cindex breakpoint
|
|
1269 @cindex source line
|
|
1270 Jumps to source line associated with debugger stack frame or breakpoint lines.
|
|
1271 This works with gdb, dbx, and xdb. Such lines are recognized in any buffer.
|
|
1272
|
|
1273 @item pathname
|
|
1274 @findex ibtypes::pathname
|
|
1275 @findex hpath:at-p
|
|
1276 @findex hpath:find
|
|
1277 @vindex hpath:suffixes
|
|
1278 @cindex ange-ftp
|
|
1279 @cindex efs
|
|
1280 @cindex pathname
|
|
1281 @cindex remote path
|
|
1282 @cindex filename
|
|
1283 @cindex link, pathname
|
|
1284 Makes a delimited, valid pathname display the path entry.
|
|
1285 Also works for delimited and non-delimited ange-ftp and efs pathnames.
|
24
|
1286 Also works for delimited and non-delimited ange-ftp and efs pathnames.
|
|
1287 Emacs Lisp library files (filenames that end in .el and .elc) are looked up
|
|
1288 using the load-path directory list.
|
|
1289
|
|
1290 @noindent
|
0
|
1291 See @code{hpath:at-p} function documentation for possible delimiters.
|
|
1292 See @var{hpath:suffixes} variable documentation for suffixes that are
|
|
1293 added to or removed from pathname when searching for a valid match.
|
24
|
1294 See @code{hpath:find} function documentation for special file
|
|
1295 display options.
|
|
1296
|
|
1297 @item klink
|
|
1298 @findex ibtypes::klink
|
|
1299 @cindex klink
|
|
1300 @cindex koutline link
|
|
1301 @cindex kcell link
|
|
1302 Follows a link delimited by <> to a koutline cell.
|
|
1303 See documentation for @code{actypes::link-to-kotl} for valid link
|
|
1304 specifiers.
|
|
1305
|
|
1306 @item man-apropos
|
|
1307 @findex ibtypes::man-apropos
|
|
1308 @item UNIX manual
|
|
1309 @item man pages
|
|
1310 @item man apropos
|
|
1311 Makes man apropos entries display associated man pages when selected.
|
|
1312
|
|
1313 @item hyp-source
|
|
1314 @findex ibtypes::hyp-source
|
|
1315 @cindex Hyperbole report
|
|
1316 Turns source location entries in Hyperbole reports into buttons that jump to the associated location.
|
|
1317
|
|
1318 @item hyp-address
|
|
1319 @findex ibtypes::hyp-address
|
|
1320 @cindex Hyperbole mail list
|
|
1321 Turns a Hyperbole e-mail list address into an implicit button which
|
|
1322 inserts Hyperbole environment information.
|
|
1323 Useful when sending mail to a Hyperbole mail list. See also the
|
|
1324 documentation for @code{actypes::hyp-config}.
|
0
|
1325
|
|
1326 @item rfc
|
|
1327 @findex ibtypes::rfc
|
|
1328 @cindex Internet RFC
|
|
1329 @cindex Request For Comment
|
|
1330 @cindex RFC
|
|
1331 @cindex ange-ftp
|
|
1332 @cindex efs
|
|
1333 Retrieves and displays an Internet rfc referenced at point.
|
|
1334 Requires ange-ftp or efs when needed for remote retrievals. The
|
|
1335 following formats are recognized: RFC822, rfc-822, and RFC 822. The
|
|
1336 @var{hpath:rfc} variable specifies the location from which to retrieve
|
|
1337 RFCs."
|
|
1338
|
24
|
1339 @item kbd-key
|
|
1340 @findex ibtypes::kbd-key
|
|
1341 @cindex key sequence
|
|
1342 Executes a key sequence delimited by curly braces.
|
|
1343 Key sequences should be in human readable form, e.g@. @{@kbd{C-b}@}.
|
|
1344 Forms such as @{@}, @{@}, and @{^b@} will not be recognized.
|
|
1345
|
|
1346 @item dir-summary
|
|
1347 @findex ibtypes::dir-summary
|
|
1348 @vindex file, MANIFEST
|
|
1349 @vindex file, DIR
|
|
1350 Detects filename buttons in files named "MANIFEST" or "DIR".
|
|
1351 Displays selected files.
|
|
1352 Each file name must be at the beginning of the line and must be followed
|
|
1353 by one or more spaces and then another non-space, non-parenthesis, non-brace
|
|
1354 character.
|
0
|
1355
|
|
1356 @item text-toc
|
|
1357 @findex ibtypes::text-toc
|
|
1358 @cindex table of contents
|
|
1359 @cindex toc implicit button type
|
|
1360 Jumps to the text file section referenced by a table of contents entry
|
|
1361 at point. File name must contain @file{README} and there must be a
|
|
1362 `Table of Contents' or `Contents' label on a line by itself (it may
|
|
1363 begin with an asterisk), preceding the table of contents. Each toc
|
|
1364 entry must begin with some whitespace followed by one or more asterisk
|
|
1365 characters. Each file section name line must start with one or more
|
|
1366 asterisk characters at the very beginning of the line.
|
|
1367
|
24
|
1368 @item cscope
|
|
1369 @findex ibtypes::cscope
|
|
1370 @cindex C/C++ call trees
|
|
1371 @cindex C/C++ cross-reference
|
|
1372 @cindex Cscope
|
|
1373 Jumps to C/C++ source line associated with Cscope C analyzer output line.
|
|
1374 Requires pre-loading of the cscope.el Lisp library available from the Emacs
|
|
1375 Lisp archives and the commercial cscope program available from UNIX System
|
|
1376 Laboratories. Otherwise, does nothing.
|
|
1377
|
|
1378 @item rfc-toc
|
|
1379 @findex ibtypes::rfc-toc
|
|
1380 @cindex Internet RFC
|
|
1381 @cindex Request For Comment
|
|
1382 @cindex RFC
|
|
1383 @cindex table of contents
|
|
1384 Summarizes contents of an Internet rfc from anywhere within rfc buffer.
|
|
1385 Each line in summary may be selected to jump to section.
|
|
1386
|
|
1387 @item annot-bib
|
|
1388 @findex ibtypes::annot-bib
|
|
1389 @cindex bibliography
|
|
1390 @cindex reference
|
|
1391 Displays annotated bibliography entries referenced internally, delimeters = [].
|
|
1392 References must be delimited by square brackets, must begin with a
|
|
1393 word constituent character, and must not be in buffers whose
|
|
1394 names begin with a ` ' or `*' character.
|
|
1395
|
0
|
1396 @item www-url
|
|
1397 @findex ibtypes::www-url
|
|
1398 @cindex URL
|
|
1399 @cindex World-wide Web
|
|
1400 @cindex WWW
|
|
1401 @cindex Action Key, web browsing
|
|
1402 @kindex Action Key, web browsing
|
|
1403 @vindex action-key-url-function
|
|
1404 When not in a w3 browser buffer, follow any non-ftp url (link) at point.
|
|
1405 The variable, @var{action-key-url-function}, can be used to customize
|
|
1406 the url browser that is used.
|
24
|
1407
|
|
1408 @item function-in-buffer
|
|
1409 @findex ibtypes::function-in-buffer
|
|
1410 @cindex functions
|
|
1411 @cindex func-menu
|
|
1412 Return function name defined within this buffer that point is within or
|
|
1413 after, else nil. This triggers only when the func-menu.el package has
|
|
1414 been loaded and the current major mode is one handled by func-menu.
|
|
1415
|
0
|
1416 @end table
|
|
1417
|
|
1418 The Hyperbole Smart Keys offer extensive additional context-sensitive
|
|
1419 point-and-click type behavior beyond these standard implicit button
|
|
1420 types. @xref{Smart Keys}.
|
|
1421
|
|
1422
|
|
1423 @node Action Types, Button Type Precedence, Implicit Buttons, Buttons
|
|
1424 @section Action Types
|
|
1425
|
|
1426 @cindex action type
|
|
1427 @cindex argument, use
|
|
1428 @cindex action
|
|
1429 @dfn{Action types} provide action procedures that specify button behavior.
|
|
1430 The arguments needed by an action type are prompted for at button creation
|
|
1431 time. When a button is activated, the stored arguments are fed to the
|
|
1432 action type's @dfn{action} body to achieve the desired result. Hyperbole
|
|
1433 handles all of this transparently.
|
|
1434
|
|
1435 @cindex actypes, list of
|
|
1436 @noindent
|
|
1437 Standard action types in alphabetical order include:
|
|
1438
|
|
1439 @table @code
|
|
1440 @item annot-bib
|
|
1441 @findex actypes::annot-bib
|
|
1442 Follows internal ref KEY within an annotated bibliography, delimiters=[].
|
|
1443
|
|
1444 @item completion
|
|
1445 @findex actypes::completion
|
|
1446 Inserts completion at point into minibuffer or other window.
|
|
1447 Unless at end of buffer or if completion has already been inserted, then
|
|
1448 deletes completions window.
|
|
1449
|
|
1450 @item eval-elisp
|
|
1451 @findex actypes::eval-elisp
|
|
1452 Evaluates a Lisp expression LISP-EXPR.
|
|
1453
|
|
1454 @item exec-kbd-macro
|
|
1455 @findex actypes::exec-kbd-macro
|
|
1456 Executes KBD-MACRO REPEAT-COUNT times.
|
|
1457 KBD-MACRO may be a string of editor command characters or a function symbol.
|
|
1458 Optional REPEAT-COUNT nil means execute once, zero means repeat until
|
|
1459 error.
|
|
1460
|
|
1461 @item exec-shell-cmd
|
|
1462 @findex actypes::exec-shell-cmd
|
|
1463 Executes a SHELL-CMD string asynchronously.
|
|
1464 Optional non-nil second argument INTERNAL-CMD means do not display the shell
|
|
1465 command line executed. Optional non-nil third argument KILL-PREV means
|
|
1466 kill last output to shell buffer before executing SHELL-CMD.
|
|
1467
|
|
1468 @item exec-window-cmd
|
|
1469 @findex actypes::exec-window-cmd
|
|
1470 Executes an external window-based SHELL-CMD string asynchronously.
|
|
1471
|
|
1472 @item hyp-config
|
|
1473 @findex actypes::hyp-config
|
24
|
1474 Inserts Hyperbole configuration info at end of current buffer or optional OUT-BUF.
|
0
|
1475
|
|
1476 @item hyp-request
|
|
1477 @findex actypes::hyp-request
|
24
|
1478 Inserts Hyperbole mail list request help into current buffer or optional OUT-BUF.
|
0
|
1479
|
|
1480 @item hyp-source
|
|
1481 @findex actypes::hyp-source
|
24
|
1482 Displays a buffer or file from a line beginning with `hbut:source-prefix'.
|
0
|
1483
|
|
1484 @item kbd-key
|
|
1485 @findex actypes::kbd-key
|
|
1486 Executes the function binding for KEY-SEQUENCE, delimited by @{@}.
|
|
1487 Returns t if a KEY-SEQUENCE has a binding, else nil.
|
|
1488
|
|
1489 @item link-to-buffer-tmp
|
|
1490 @findex actypes::link-to-buffer-tmp
|
|
1491 Displays a BUFFER in another window.
|
|
1492 Link is generally only good for current Emacs session.
|
24
|
1493 Use `link-to-file' instead for a permanent link.
|
0
|
1494
|
|
1495 @item link-to-directory
|
|
1496 @findex actypes::link-to-directory
|
|
1497 Displays a DIRECTORY in Dired mode in another window.
|
|
1498
|
|
1499 @item link-to-doc
|
|
1500 @findex actypes::link-to-doc
|
|
1501 Displays online version of a document given by DOC-ID, in other window.
|
|
1502 If the online version of a document is not found in
|
|
1503 @var{doc-id-indices}, an error is signalled.
|
|
1504
|
|
1505 @item link-to-ebut
|
|
1506 @findex actypes::link-to-ebut
|
|
1507 Performs action given by another button, specified by KEY and KEY-FILE.
|
|
1508
|
|
1509 @item link-to-elisp-doc
|
|
1510 @findex actypes::link-to-elisp-doc
|
|
1511 Displays documentation for FUNC-SYMBOL.
|
|
1512
|
|
1513 @item link-to-file
|
|
1514 @findex actypes::link-to-file
|
|
1515 Displays a PATH in another window scrolled to optional POINT.
|
|
1516 With POINT, buffer is displayed with POINT at the top of the window.
|
|
1517
|
|
1518 @item link-to-file-line
|
|
1519 @findex actypes::link-to-file-line
|
24
|
1520 Displays a file given by PATH scrolled to LINE-NUM.
|
0
|
1521
|
|
1522 @item link-to-kcell
|
|
1523 @findex actypes::link-to-kcell
|
24
|
1524 Displays FILE with kcell given by CELL-REF at window top.
|
|
1525 See documentation for `kcell:ref-to-id' for valid cell-ref formats.
|
|
1526
|
|
1527 @noindent
|
0
|
1528 If FILE is nil, the current buffer is used.
|
|
1529 If CELL-REF is nil, the first cell in the view is shown.
|
|
1530
|
|
1531 @item link-to-kotl
|
|
1532 @findex actypes::link-to-kotl
|
|
1533 Displays at the top of another window the referent pointed to by LINK.
|
|
1534 LINK may be of any of the following forms, with or without delimiters:
|
|
1535 @example
|
|
1536 < pathname [, cell-ref] >
|
|
1537 < [-!&] pathname >
|
|
1538 < @@ cell-ref >
|
|
1539 @end example
|
|
1540
|
|
1541 @noindent
|
|
1542 See documentation for @code{kcell:ref-to-id} for valid cell-ref formats.
|
|
1543
|
|
1544 @item link-to-Info-node
|
|
1545 @findex actypes::link-to-Info-node
|
|
1546 Displays an Info NODE in another window.
|
24
|
1547 NODE must be a string of the form `(file)nodename'.
|
0
|
1548
|
|
1549 @item link-to-mail
|
|
1550 @findex actypes::link-to-mail
|
|
1551 Displays mail msg with MAIL-MSG-ID from MAIL-FILE in other window.
|
|
1552 See documentation for the variable @var{hmail:init-function} for
|
|
1553 information on how to specify a mail reader to use.
|
|
1554
|
|
1555 @item link-to-regexp-match
|
|
1556 @findex actypes::link-to-regexp-match
|
|
1557 Finds REGEXP's Nth occurrence in FILE and displays location at window top.
|
|
1558 Returns t if found, signals an error if not.
|
|
1559
|
|
1560 @item link-to-rfc
|
|
1561 @findex actypes::link-to-rfc
|
|
1562 Retrieves and displays an Internet rfc given by RFC-NUM.
|
|
1563 RFC-NUM may be a string or an integer. Requires ange-ftp or efs for
|
|
1564 remote retrievals.
|
|
1565
|
|
1566 @item link-to-string-match
|
|
1567 @findex actypes::link-to-string-match
|
|
1568 Finds STRING's Nth occurrence in FILE and displays location at window top.
|
|
1569 Returns t if found, nil if not.
|
|
1570
|
|
1571 @item man-show
|
|
1572 @findex actypes::man-show
|
|
1573 Displays man page on TOPIC, which may be of the form @code{<command>(<section>}).
|
|
1574
|
|
1575 @item rfc-toc
|
|
1576 @findex actypes::rfc-toc
|
|
1577 Computes and displays summary of an Internet rfc in BUF-NAME.
|
|
1578 Assumes point has already been moved to start of region to summarize.
|
|
1579 Optional OPOINT is point to return to in BUF-NAME after displaying summary.
|
|
1580
|
|
1581 @item text-toc
|
|
1582 @findex actypes::text-toc
|
|
1583 @cindex table of contents
|
|
1584 @cindex toc action type
|
|
1585 Jumps to the text file SECTION referenced by a table of contents entry
|
|
1586 at point.
|
|
1587
|
|
1588 @item www-url
|
|
1589 @findex actypes::www-url
|
|
1590 @cindex URL
|
|
1591 @cindex World-wide Web
|
|
1592 @cindex WWW
|
|
1593 @vindex action-key-url-function
|
|
1594 Follows a link given by URL.
|
|
1595 The variable, @var{action-key-url-function}, can be used to customize
|
|
1596 the url browser that is used.
|
|
1597 @end table
|
|
1598
|
|
1599 @cindex action
|
|
1600 @vindex hui:ebut-prompt-for-action
|
|
1601 The use of action types provides a convenient way of specifying button
|
|
1602 behavior without the need to know how to program. Expert users who are
|
|
1603 familiar with Emacs Lisp, however, may find that they often want to
|
|
1604 tailor button actions in a variety of ways not easily captured within a
|
|
1605 type system. In such cases, @var{hui:ebut-prompt-for-action} should be
|
|
1606 set non-nil. This will cause Hyperbole to prompt for an action to
|
|
1607 override the button's action type at each explicit button creation. For
|
|
1608 those cases where the action type is sufficient, a nil value should be
|
|
1609 entered for the action. An action may be any Lisp form that may be
|
|
1610 evaluated.
|
|
1611
|
|
1612 @node Button Type Precedence, Button Files, Action Types, Buttons
|
|
1613 @section Button Type Precedence
|
|
1614
|
|
1615 @cindex button precedence
|
|
1616 @cindex button label overlap
|
|
1617 Explicit buttons always take precedence over implicit buttons. Thus, if
|
|
1618 a button selection is made which falls within both an explicit and
|
|
1619 implicit button, only the explicit button will be selected. Explicit
|
|
1620 button labels are not allowed to overlap; Hyperbole's behavior in such
|
|
1621 cases is undefined.
|
|
1622
|
|
1623 @cindex ibtype, evaluation order
|
|
1624 If there is no explicit button at point during a selection request, then
|
|
1625 each implicit button type predicate is tested in turn until one returns
|
|
1626 non-nil or all are exhausted. Since two implicit button types may have
|
|
1627 overlapping domains (those contexts in which their predicates are true),
|
|
1628 only the first matching type is used. The type predicates are tested
|
|
1629 in @strong{reverse} order of definition, i.e@. most recently entered
|
|
1630 types are tested first, so that personal types defined after standard
|
|
1631 system types take precedence. It is important to keep this order in
|
|
1632 mind when defining new implicit button types. By making their match
|
|
1633 predicates as specific as possible, one can minimize any overlapping of
|
|
1634 implicit button type domains.
|
|
1635
|
|
1636 @cindex type redefinition
|
|
1637 Once a type name is defined, its precedence relative to other types
|
|
1638 remains the same even if you redefine the body of the type, as long as
|
|
1639 you don't change its name. This allows incremental modifications to
|
|
1640 types without having to worry about shifts in type precedence.
|
|
1641 @xref{Creating Types}, for information on how to develop
|
|
1642 or modify types.
|
|
1643
|
|
1644 @node Button Files, Utilizing Explicit Buttons, Button Type Precedence, Buttons
|
|
1645 @section Button Files
|
|
1646
|
|
1647 @cindex button files
|
|
1648 It is often convenient to create lists of buttons that can be used as
|
|
1649 menus to provide centralized access to distributed information pools or
|
|
1650 for other purposes. These files can serve as useful roadmaps to help
|
|
1651 efficiently guide a user through both unfamiliar and highly familiar
|
|
1652 information spaces. Files that are created specifically for this
|
|
1653 purpose, we call @dfn{button files}.
|
|
1654
|
|
1655 @vindex hbmap:filename
|
|
1656 @cindex button file, personal
|
|
1657 @cindex button file, directory
|
|
1658 The Hyperbole menu system provides quick access to two types of these
|
|
1659 button files: personal and directory-specific, through the ButFile menu.
|
|
1660 (The variable, @var{hbmap:filename}, contains the base name of these
|
|
1661 standard button files. Its standard value is @file{HYPB}.)
|
|
1662
|
|
1663 @vindex dir, ~/.hyperb
|
|
1664 @vindex hbmap:dir-user
|
|
1665 @cindex global button
|
|
1666 A personal button file may serve as a user's own roadmap to frequently
|
|
1667 used resources. Selection of the ButFile/PersonalFile menu item
|
|
1668 displays this file for editing. The default personal button file is
|
|
1669 stored within the directory given by the @var{hbmap:dir-user} variable
|
|
1670 whose standard value is @file{~/.hyperb}. The standard Hyperbole
|
|
1671 configuration also appends all global buttons to the end of this file,
|
|
1672 one per line, as they are created. So you can edit or annotate them
|
|
1673 within the file.
|
|
1674
|
|
1675 A directory-specific button file may exist for each file system
|
|
1676 directory. Such files are useful for explaining the contents of
|
|
1677 directories and pointing readers to particular highlights within the
|
|
1678 directories. Selection of the ButFile/DirFile menu item displays the
|
|
1679 button file for the current directory; this provides an easy means of
|
|
1680 updating this file when working on a file within the same directory.
|
|
1681 If you want to view some other directory-specific button file, simply
|
|
1682 use the normal Emacs file finding commands.
|
|
1683
|
|
1684 One might suggest that menu quick access be provided for group-specific
|
|
1685 and site-specific button files. Instead, link buttons to such things
|
|
1686 should be placed at the top of your personal button file. This provides
|
|
1687 a more flexible means of quick access.
|
|
1688
|
|
1689 @node Utilizing Explicit Buttons, , Button Files, Buttons
|
|
1690 @section Utilizing Explicit Buttons
|
|
1691
|
|
1692 Explicit buttons are a fundamental building block for creating personal
|
|
1693 or organizational hypertext networks with Hyperbole. This section
|
|
1694 summarizes the user-level operations available for managing these
|
|
1695 buttons.
|
|
1696
|
|
1697 @menu
|
|
1698 * Creation::
|
|
1699 * Renaming::
|
|
1700 * Deletion::
|
|
1701 * Modification::
|
|
1702 * Location::
|
|
1703 * Buttons in Mail::
|
|
1704 * Buttons in News::
|
|
1705 @end menu
|
|
1706
|
|
1707 @node Creation, Renaming, Utilizing Explicit Buttons, Utilizing Explicit Buttons
|
|
1708 @subsection Creation
|
|
1709
|
|
1710 @menu
|
|
1711 * By Dragging:: Creation Via Action Key Drags
|
|
1712 * By Menu:: Creation Via Menus
|
|
1713 @end menu
|
|
1714
|
|
1715 @node By Dragging, By Menu, Creation, Creation
|
|
1716 @subsubsection Creation Via Action Key Drags
|
|
1717
|
|
1718 @cindex explicit button, creation
|
|
1719 @cindex button, creation
|
|
1720 @cindex link, creation
|
|
1721 @cindex drag
|
|
1722 @cindex Action Key drag
|
|
1723 The most efficient way to create an explicit button interactively is to
|
|
1724 use the mouse Action Key to drag from a button source window to a window
|
|
1725 showing its link referent. More specifically, you should split your
|
|
1726 current Emacs frame into two windows: one which contains the point at
|
|
1727 which you want a button to be inserted and another which shows the point
|
|
1728 to which you want to link. Depress the mouse Action Key at the point at
|
|
1729 which the button should be inserted, drag to the other window and
|
|
1730 release it at the point of the link referent. The process becomes quite
|
|
1731 simple with a little practice. (@xref{By Menu, Creation Via Menus}, for a
|
|
1732 more detailed explanation of the explicit button creation process.)
|
|
1733
|
|
1734 Hyperbole uses the link referent context to determine the type of link
|
|
1735 to make. If there are a few different types of links which are
|
|
1736 applicable from the context, you will be prompted with a list of the
|
|
1737 types. Simply use the Action Key or the first letter of the link
|
|
1738 type to select one of the type names and to finish the link creation.
|
|
1739 Hyperbole will then insert explicit button delimiters around the button
|
|
1740 label and will display a message in the minibuffer indicating both the
|
|
1741 button name and its action/link type.
|
|
1742
|
|
1743 @kindex M-o
|
|
1744 @kindex C-u M-o
|
|
1745 @kindex C-x o
|
|
1746 @findex hkey-operate
|
|
1747 If you run Emacs under a window system, you can emulate an Action Key
|
|
1748 drag from the keyboard by: hitting @{@kbd{M-o}@}, the
|
|
1749 @code{hkey-operate} command, at the button source location, moving
|
|
1750 to the link destination, e.g@. with @{@kbd{C-x o}@}, and then hitting
|
|
1751 @{@kbd{M-o}@} again. This simulates a depress and then release of the
|
|
1752 Action Key. @{@kbd{C-u M-o}@} emulates drags of the Assist Key.
|
|
1753 This will not work when Hyperbole is run from a dumb terminal Emacs
|
|
1754 session since drag actions are not supported without a window system.
|
|
1755
|
|
1756 @page
|
|
1757 @node By Menu, , By Dragging, Creation
|
|
1758 @subsubsection Creation Via Menus
|
|
1759
|
|
1760 You can alternatively use the Hyperbole menus to create explicit
|
|
1761 buttons. First, mark a short region of text in any fashion allowed by
|
|
1762 GNU Emacs and then select the Hyperbole menu item sequence, Ebut/Create.
|
|
1763 You will be prompted for the button's label with the marked region as
|
|
1764 the default. If you accept the default and enter the rest of the
|
|
1765 information you are prompted for, the button will be created within the
|
|
1766 current buffer and Hyperbole will surround the marked region with
|
|
1767 explicit button delimiters to indicate success.
|
|
1768
|
|
1769 If you do not mark a region before invoking the button create command,
|
|
1770 you will be prompted for both a label and a target buffer for the button
|
|
1771 and the delimited label text will be inserted into the target buffer
|
|
1772 after a successful button creation.
|
|
1773
|
|
1774 After Hyperbole has the button label and its target buffer, it will
|
|
1775 prompt you for an action type for the button. Use the @{@kbd{?}@}
|
|
1776 completion help key to see the available types. The type selected
|
|
1777 determines any following values for which you will be prompted.
|
|
1778
|
|
1779 @cindex button instance
|
|
1780 @cindex instance number
|
|
1781 If a previous button with the same label exists in the same buffer,
|
|
1782 Hyperbole will add an @dfn{instance number} to the label when it adds
|
|
1783 the delimiters so that the name is unique. Thus, you don't have to
|
|
1784 worry about accidental button name conflicts. If you want the same
|
|
1785 button to appear in multiple places within the buffer, just enter the
|
|
1786 label again and delimit it yourself. Hyperbole will interpret all
|
|
1787 occurrences of the same delimited label within a buffer as the same
|
|
1788 button.
|
|
1789
|
|
1790 @cindex link, creation
|
|
1791 If you create link buttons using the Hyperbole menus, the best technique
|
|
1792 is to place on screen both the source buffer for the button and the
|
|
1793 buffer to which it will link. Mark the region of text to use for your
|
|
1794 button label, invoke the button create command from the menu, choose an
|
|
1795 action type which begins with @code{link-to-} and then use the direct
|
|
1796 selection techniques mentioned in @ref{Entering Arguments}, to select
|
|
1797 the link referent.
|
|
1798
|
|
1799
|
|
1800 @node Renaming, Deletion, Creation, Utilizing Explicit Buttons
|
|
1801 @subsection Renaming
|
|
1802
|
|
1803 @cindex explicit button, renaming
|
|
1804 @cindex button, renaming
|
|
1805 Once an explicit button has been created, its label text must be
|
|
1806 treated specially. Any inter-word spacing within the label may be
|
|
1807 freely changed, as may happen when a paragraph is refilled. But a
|
|
1808 special command must be invoked to rename it.
|
|
1809
|
|
1810 The rename command operates in two different ways. If point is within a
|
|
1811 button label when it is invoked, it will tell you to edit the button
|
|
1812 label and then invoke the rename command again. The second invocation
|
|
1813 will actually rename the button. If instead the command is originally
|
|
1814 invoked outside of any explicit button, it will prompt for the button
|
|
1815 label to replace and the label to replace it with and then will perform
|
|
1816 the rename. All occurrences of the same button in the buffer will be
|
|
1817 renamed, so you need locate only one occurrence of the button.
|
|
1818
|
|
1819 @vindex file, .~/.emacs
|
|
1820 @vindex file, hsite.el
|
|
1821 @kindex C-c C-r
|
|
1822 The rename command may be invoked from the Hyperbole menu via
|
|
1823 Ebut/Rename. A faster method is to use a key bound to the
|
|
1824 @code{hui:ebut-rename} command. Your site installation may include such
|
|
1825 a key. @{@kbd{C-h w hui:ebut-rename @key{RET}}@} should show you any
|
|
1826 key it is on. If no key binding has been established or if you prefer
|
|
1827 one of your own, simply bind it within your @file{~/.emacs} file. We
|
|
1828 recommend the @{@kbd{C-c C-r}@} key, as in: @code{(global-set-key
|
|
1829 "\C-c\C-r" 'hui:ebut-rename)}.
|
|
1830
|
|
1831
|
|
1832 @node Deletion, Modification, Renaming, Utilizing Explicit Buttons
|
|
1833 @subsection Deletion
|
|
1834
|
|
1835 @cindex explicit button, deleting
|
|
1836 @cindex button, deleting
|
|
1837 Ebut/Delete works similarly to the Rename command but deletes the
|
|
1838 selected button. The button's delimiters are removed to confirm the
|
|
1839 delete. If the delete command is invoked with a prefix argument, then
|
|
1840 both the button label and the delimiters are removed as confirmation.
|
|
1841
|
|
1842 @vindex hui:ebut-delete-confirm-p
|
|
1843 Presently there is no way to recover a deleted button; it must
|
|
1844 be recreated. Therefore, the @var{hui:ebut-delete-confirm-p} variable
|
|
1845 is true by default, causing Hyperbole to require confirmation before
|
|
1846 interactively deleting explicit buttons. Set it to nil if you prefer no
|
|
1847 confirmation.
|
|
1848
|
|
1849 @node Modification, Location, Deletion, Utilizing Explicit Buttons
|
|
1850 @subsection Modification
|
|
1851
|
|
1852 @cindex explicit button, modifying
|
|
1853 @cindex button, modifying
|
|
1854 @cindex Smart Mouse Key drag
|
|
1855 Ebut/Modify prompts you with each of the elements from the button's
|
|
1856 data list and allows you to modify each in turn.
|
|
1857
|
|
1858 There is a quicker way to modify explicit link buttons. Simply drag with the
|
|
1859 mouse Action Key from within the button label to a link destination in a
|
|
1860 different window, just as you would when creating a new button with a mouse
|
|
1861 drag. Remember that drags may also be emulated from the keyboard.
|
|
1862 @xref{Creation}.
|
|
1863
|
|
1864 @node Location, Buttons in Mail, Modification, Utilizing Explicit Buttons
|
|
1865 @subsection Location
|
|
1866
|
|
1867 @cindex explicit button, summarizing
|
|
1868 @cindex button, summarizing
|
|
1869 @cindex button, help
|
|
1870 The Ebut/Help menu can be used to summarize a single explicit button or
|
|
1871 all such buttons within a single buffer. The buttons summarized may
|
|
1872 then be activated directly from the summary.
|
|
1873
|
|
1874 Ebut/Help/BufferButs summarizes the explicit buttons in the order in
|
|
1875 which they appear in the buffer. Ebut/Help/CurrentBut summarizes only
|
|
1876 the button at point. Ebut/Help/OrderedButs summarizes the buttons in
|
|
1877 alphabetical order. All of these summary commands eliminate duplicate
|
|
1878 instances of buttons from their help displays.
|
|
1879
|
|
1880 @cindex explicit button, searching
|
|
1881 @cindex button, searching
|
|
1882 Ebut/Search prompts for a search pattern and searches across all the
|
|
1883 locations in which you have previously created explicit buttons. It
|
|
1884 asks you whether to match to any part of a button label or only complete
|
|
1885 labels. It then displays a list of button matches with a single line of
|
|
1886 surrounding context from their sources. Any button in the match list
|
|
1887 may be activated as usual. An Action Key press on the surrounding context
|
|
1888 jumps to the associated source line or a press on the filename preceding
|
|
1889 the matches jumps to the file without selecting a particular line.
|
|
1890
|
|
1891 There are presently no user-level facilities for globally locating buttons
|
|
1892 created by others or for searching on particular button attributes.
|
|
1893
|
|
1894 @node Buttons in Mail, Buttons in News, Location, Utilizing Explicit Buttons
|
|
1895 @subsection Buttons in Mail
|
|
1896
|
|
1897 @kindex C-x m
|
|
1898 @findex mail
|
|
1899 Hyperbole allows the embedding of buttons within electronic mail
|
|
1900 messages that are composed in Emacs with the standard @code{(mail)}
|
|
1901 command, normally bound to @{@kbd{C-x m}@} or with other Emacs-based
|
|
1902 mail composing functions. An enhanced mail reader can then be used
|
|
1903 to activate the buttons within messages just like any other buttons.
|
|
1904
|
|
1905 @cindex button, mailing
|
|
1906 @cindex button, posting
|
|
1907 @cindex mailing buttons
|
|
1908 @cindex posting buttons
|
|
1909 @cindex mail reader
|
|
1910 @cindex mailer initialization
|
|
1911 @cindex RMAIL
|
|
1912 @cindex VM
|
|
1913 @cindex PIEmail
|
|
1914 @cindex MH-e
|
|
1915 @cindex GNUS
|
|
1916 @cindex USENET
|
|
1917 @cindex news
|
|
1918 @vindex file, hmail.el
|
|
1919 Hyperbole automatically supports the following mail readers: Rmail,
|
|
1920 @ref{Rmail,,,emacs, the GNU Emacs Manual}, VM, @ref{Introduction,,,vm,
|
|
1921 the VM Manual}, and PIEmail, and MH-e. Button inclusion and activation
|
|
1922 within USENET news articles is also supported in the same fashion via
|
|
1923 the GNUS news reader, @ref{Introduction,,,gnus, the GNUS Manual}, if
|
|
1924 available at your site. (The @file{hmail.el} file provides a
|
|
1925 generalized interface that can be used to hook in other mail or news
|
|
1926 readers if the necessary interface functions are written.)
|
|
1927
|
|
1928 @vindex mail-yank-original
|
|
1929 @kindex C-c C-y
|
|
1930 @cindex mail inclusion
|
|
1931 All explicit buttons to be mailed must be created within the outgoing
|
|
1932 message buffer. There is no present support for including text from
|
|
1933 other buffers or files which contain explicit buttons, except for the
|
|
1934 ability to yank the contents of a message being replied to, together
|
|
1935 with all of its buttons, via the @code{(mail-yank-original)} command
|
|
1936 bound to @{@kbd{C-c C-y}@}. From a user's perspective, buttons are
|
|
1937 created in precisely the same way as in any other buffer. They also
|
|
1938 appear just like any other buttons to both the message sender and the
|
|
1939 reader who uses the Hyperbole enhanced readers. Button operation may be
|
|
1940 tested any time before a message is sent. A person who does not use
|
|
1941 Hyperbole enhanced mail readers can still send messages with embedded
|
|
1942 buttons since mail composing is independent of any mail reader
|
|
1943 choice.
|
|
1944
|
|
1945 Hyperbole buttons embedded within received mail messages act just like
|
|
1946 any other buttons. The mail does not contain any of the action type
|
|
1947 definitions used by the buttons, so the receiver must have these or she
|
|
1948 will receive an error when she activates the buttons. Buttons which
|
|
1949 appear in message @emph{Subject} lines are copied to summary buffers
|
|
1950 whenever such summaries are generated. Thus, they may be activated from
|
|
1951 either the message or summary buffers.
|
|
1952
|
|
1953 Nothing bad will happen if a mail message with explicit buttons is sent
|
|
1954 to a non-Hyperbole user. The user will simply see the text
|
|
1955 of the message followed by a series of lines of button data at its end.
|
|
1956 Hyperbole mail users never see this data in its raw form.
|
|
1957
|
|
1958 @vindex smail:comment
|
|
1959 @cindex mail comment
|
|
1960 In order to alert readers of your mail messages that you can utilize
|
|
1961 Hyperbole mail buttons, the system automatically inserts a comment into
|
|
1962 each mail message that you compose to announce this fact. The variable,
|
|
1963 @var{smail:comment} controls this behavior. See its documentation for
|
|
1964 technical details. By default, it produces a message of the form:
|
|
1965
|
|
1966 @example
|
|
1967 Comments: Hyperbole mail buttons accepted, vX.XX.
|
|
1968 @end example
|
|
1969
|
|
1970 @vindex file, ~/.emacs
|
|
1971 @noindent
|
|
1972 where the X's indicate your Hyperbole version number. You can cut this
|
|
1973 out of particular messages before you send them. If you don't want any
|
|
1974 message at all, add the following to your @file{~/.emacs} file before
|
|
1975 the point at which you load Hyperbole.
|
|
1976
|
|
1977 @lisp
|
|
1978 (setq smail:comment nil)
|
|
1979 @end lisp
|
|
1980
|
|
1981 @cindex actype, link-to-mail
|
|
1982 A final mail-related facility provided by Hyperbole is the ability to
|
|
1983 save a pointer to a received mail message by creating an explicit button
|
|
1984 with a @code{link-to-mail} action type. When prompted for the mail
|
|
1985 message to link to, if you press the Action Key on an Rmail message, the
|
|
1986 appropriate parameter will be copied to the argument prompt, as
|
|
1987 described in @ref{Entering Arguments}.
|
|
1988
|
|
1989
|
|
1990 @node Buttons in News, , Buttons in Mail, Utilizing Explicit Buttons
|
|
1991 @subsection Buttons in News
|
|
1992
|
|
1993 @cindex button, posting
|
|
1994 @cindex news reader/poster
|
|
1995 @cindex posting news
|
|
1996 @cindex GNUS
|
|
1997 @cindex USENET
|
|
1998 @vindex file, hgnus.el
|
|
1999 @vindex file, hsite.el
|
|
2000 Explicit buttons may be embedded within outgoing USENET news articles
|
|
2001 and may be activated from news articles that are being read. This
|
|
2002 support is available for the GNUS news reader. It is enabled by default
|
|
2003 within @file{hsite.el} by autoloading the @file{hgnus.el} file.
|
|
2004
|
|
2005 All Hyperbole support should work just as it does when reading or
|
|
2006 sending mail. @xref{Buttons in Mail}. When reading news, buttons which
|
|
2007 appear in message @emph{Subject} lines may be activated within the GNUS
|
|
2008 subject buffer as well as the article buffer. When posting news, the
|
|
2009 *post-news* buffer is used for outgoing news articles rather than the
|
|
2010 *mail* buffer.
|
|
2011
|
|
2012 Remember that the articles you post do not contain the action type
|
|
2013 definitions used by the buttons, so the receiver must have these or she
|
|
2014 will receive an error when he activates the buttons. You should also
|
|
2015 keep in mind that most USENET readers will not be using Hyperbole, so if
|
|
2016 they receive a news article containing explicit buttons, they will
|
|
2017 wonder what the button data at the end of the message is. You should
|
|
2018 therefore limit distribution of such messages. For example, if most
|
|
2019 people at your site read news with GNUS and use Hyperbole, it would be
|
|
2020 reasonable to embed buttons in postings to local newsgroups.
|
|
2021
|
|
2022 @cindex news comment
|
|
2023 In order to alert readers of your postings that you can utilize
|
|
2024 Hyperbole mail buttons embedded within personal replies,
|
|
2025 the system automatically inserts the same comment that is included
|
|
2026 within mail messages to announce this fact. @xref{Buttons in Mail}, for
|
|
2027 details and an explanation of how to turn this feature off.
|
|
2028
|
|
2029 @node Smart Keys, Menus, Buttons, Top
|
|
2030 @chapter Smart Keys
|
|
2031
|
|
2032 @cindex Smart Key
|
|
2033 @cindex mouse support
|
|
2034 @cindex Action Key
|
|
2035 @cindex Assist Key
|
|
2036 @kindex Action Key
|
|
2037 @kindex Assist Key
|
|
2038 Hyperbole provides two special @dfn{Smart Keys} that perform
|
|
2039 context-sensitive operations, the Action Key and the Assist Key. By
|
|
2040 default, the @dfn{Action Key} is bound to your shift-middle mouse button (or
|
|
2041 shift-left on a 2-button mouse) and the @dfn{Assist Key} is bound to your
|
|
2042 shift-right mouse button, assuming Hyperbole is run under an external window
|
|
2043 system. (InfoDock users should use the middle mouse button as the
|
|
2044 Action Key, instead.)
|
|
2045
|
|
2046 @findex hmouse-shift-buttons
|
|
2047 Mouse configuration is automatic for InfoDock, XEmacs, and Epoch under
|
|
2048 the X window system and for GNU Emacs versions 18 and 19 under X,
|
|
2049 OpenWindows, NEXTSTEP, SunView and Apollo's Display Manager, assuming
|
|
2050 your Emacs program has been built with support for any of these window
|
|
2051 systems. The command, @code{hmouse-shift-buttons}, can be used to
|
|
2052 select between shifted and unshifted Smart Mouse Keys.
|
|
2053
|
|
2054 @vindex hkey-init
|
|
2055 @kindex C-u M-RET
|
|
2056 @kindex M-RET
|
|
2057 By default (if @var{hkey-init} is set to @code{t} in @file{hsite.el}),
|
|
2058 then @{@kbd{M-@key{RET}}@} may also be used as the Action Key and
|
|
2059 @{@kbd{C-u M-@key{RET}}@} may be used as the Assist Key. In many
|
|
2060 read-only modes like Dired and Rmail,
|
|
2061 @{@key{RET}@} also functions as the Action Key. These key bindings allow
|
|
2062 context sensitive operation from any keyboard.
|
|
2063
|
|
2064 @cindex key binding, smart keys
|
|
2065 @cindex smart key commands
|
|
2066 @findex action-key
|
|
2067 @findex assist-key
|
|
2068 @findex action-mouse-key
|
|
2069 @findex assist-mouse-key
|
|
2070 If you prefer other key bindings, simply bind the commands
|
|
2071 @code{action-key} and @code{assist-key} to keyboard keys.
|
|
2072 @code{hkey-either} may be used instead if you prefer a single
|
|
2073 key binding for both commands; a prefix argument then invokes
|
|
2074 @code{assist-key}.
|
|
2075
|
|
2076 You may also bind @code{action-mouse-key} and @code{assist-mouse-key}
|
|
2077 to mouse keys, as you like.
|
|
2078
|
|
2079 @cindex button activation
|
|
2080 @cindex activation
|
|
2081 @cindex button help
|
|
2082 The Action Key generally selects entities, creates links and
|
|
2083 activates buttons. The Assist Key generally provides help,
|
|
2084 such as reporting on a button's attributes, or serves a complementary
|
|
2085 function to whatever the Action Key does within a context.
|
|
2086
|
|
2087 @cindex Smart Key operation
|
|
2088 You can get a summary of what the Smart Keys do in all of their
|
|
2089 different contexts by pressing the Assist Key in the right
|
|
2090 corner (within the rightmost 3 characters) of a window modeline or by
|
|
2091 using the Hyperbole Doc/SmartKy menu entry.
|
|
2092
|
|
2093 The following table is an example of this summary. Much of the browsing
|
|
2094 power of Hyperbole comes from use of the Smart Keys, so you should spend
|
|
2095 some time practicing how to use them. This table may appear daunting at
|
|
2096 first, but as you practice and notice that the Smart Keys do just a few
|
|
2097 context-sensitive things per editor mode, you will find it easy to just
|
|
2098 point and click and let Hyperbole do the rest.
|
|
2099
|
|
2100 For extensive reference documentation on the Smart Keys, @ref{Smart
|
|
2101 Key Reference}.
|
|
2102
|
|
2103 @page
|
|
2104 @iftex
|
|
2105 @example
|
|
2106 @include ../etc/hypb-mouse.txt
|
|
2107 @end example
|
|
2108 @end iftex
|
|
2109 @ifinfo
|
|
2110 @format
|
|
2111 @include ../etc/hypb-mouse.txt
|
|
2112 @end format
|
|
2113 @end ifinfo
|
|
2114
|
|
2115 @vindex action-key-default-function
|
|
2116 @vindex assist-key-default-function
|
|
2117 Note how the last line in the table explains the default behavior of the
|
|
2118 Smart Keys. That is what they do when they cannot find a context match
|
|
2119 at your current location. See the documentation for the variables
|
|
2120 @var{action-key-default-function} and @var{assist-key-default-function}
|
|
2121 for information on how to customize the behavior of the Smart Keys
|
|
2122 within default contexts.
|
|
2123
|
|
2124 @cindex Hyperbole help
|
|
2125 A prime design criterion of Hyperbole's user interface is that one
|
|
2126 should be able to see what an operation will do before using it.
|
|
2127 The Assist Key shows you what a button or minibuffer menu item will do
|
|
2128 before you activate it. Hyperbole also shows the result of directly
|
|
2129 selecting an argument value with the mouse, to provide feedback as to
|
|
2130 whether the right item has been selected. A second click is necessary
|
|
2131 before an argument is accepted and processed.
|
|
2132
|
|
2133 @cindex Smart Key help
|
|
2134 @cindex help, Smart Key
|
|
2135 @cindex context sensitive help
|
|
2136 When you use a mouse and you want to find out what either of the Smart
|
|
2137 Keys does within a context, depress the one you want to check on and
|
|
2138 hold it down, then press the other and release as you please. A help
|
|
2139 buffer will pop up explaining the actions that will be performed in that
|
|
2140 context, if any. A press of either Smart Key at the end of that
|
|
2141 help buffer will restore your display to its configuration prior to
|
|
2142 invoking help.
|
|
2143
|
|
2144 @kindex C-h A
|
|
2145 @vindex hkey-init
|
|
2146 By default (if @var{hkey-init} is left set equal to @code{t} in
|
|
2147 @file{hsite.el}), then @{@kbd{C-h A}@} will display this same
|
|
2148 context-sensitive help for the Action Key while @{@kbd{C-u C-h
|
|
2149 A}@} will display the help for the Assist Key. Note that
|
|
2150 @{@kbd{C-h a}@} will perform a function unrelated to Hyperbole, so you
|
|
2151 must press the shift key when you hit the @kbd{A} character.
|
|
2152
|
|
2153 @cindex Smart Key toggle
|
|
2154 @cindex mouse key toggle
|
|
2155 @vindex file, ~/.emacs
|
|
2156 @vindex file, hsite.el
|
|
2157 @kindex C-c t
|
|
2158 When Hyperbole is installed, a key may be bound which allows you
|
|
2159 to switch between the Smart Key mouse bindings and your prior ones.
|
|
2160 @kbd{C-h w hmouse-toggle-bindings @key{RET}} should show you any key
|
|
2161 which performs this command. If no key binding has been established or
|
|
2162 if you prefer one of your own, simply select a key and bind it
|
|
2163 within your @file{~/.emacs} file. For example, @code{(global-set-key
|
|
2164 "\C-ct" 'hmouse-toggle-bindings)}.
|
|
2165
|
|
2166
|
|
2167 @node Menus, Entering Arguments, Smart Keys, Top
|
|
2168 @chapter Menus
|
|
2169
|
|
2170 @cindex InfoDock
|
|
2171 @cindex XEmacs
|
|
2172 @cindex Emacs 19
|
|
2173 @cindex menu use
|
|
2174 @cindex menubar, Hyperbole menu
|
|
2175 Under InfoDock, XEmacs, and Emacs 19, pulldown and popup menus are
|
|
2176 available to invoke Hyperbole commands, including those from the rolodex
|
24
|
2177 and the outliner. These menus operate like any other application menus
|
|
2178 and are fairly self-explanatory. Use the Quit command on the Hyperbole
|
|
2179 menubar menu to get rid of the menu if you do not need it. Invoking
|
|
2180 Hyperbole again will add the menu back to the menubar.
|
0
|
2181
|
|
2182 @cindex minibuffer menus
|
|
2183 This section discusses only the specialized @dfn{minibuffer menus} that
|
24
|
2184 appear in the minibuffer window and that work with all Emacs versions on
|
|
2185 all display devices. Minibuffer menu items may be selected from either
|
|
2186 the keyboard or via mouse clicks. When used with the keyboard, they
|
|
2187 provide rapid command access similar to key bindings.
|
0
|
2188
|
|
2189 @kindex C-h h
|
|
2190 @vindex action-key-default-function
|
|
2191 @cindex menu, top level
|
|
2192 The top level menu is invoked from a key given in your @file{hsite.el}
|
|
2193 file (by default, @{@kbd{C-h h}@}) or via an Action Key press in a
|
|
2194 location with no other action defined. The menu will appear in the
|
|
2195 minibuffer and should look mostly like so:
|
|
2196
|
|
2197 @noindent
|
|
2198 @example
|
24
|
2199 Hy4> Act Butfile/ Cust/ Doc/ Ebut/ Gbut/ Hist Ibut/ Msg/ Otl/ Rolo/ Win/
|
0
|
2200 @end example
|
|
2201
|
|
2202 @noindent
|
|
2203 The above menu items can be summarized as follows:
|
|
2204
|
|
2205 @table @strong
|
|
2206 @cindex menu, Act
|
|
2207 @item Act
|
|
2208 Perform the action associated with any button at point or prompt for the
|
|
2209 name of an explicit button to activate if point is not on one.
|
|
2210
|
|
2211 @cindex menu, ButFile
|
|
2212 @cindex button file, HYPB
|
|
2213 @vindex file, HYPB
|
|
2214 @item Butfile/
|
|
2215 Display a local or global file of buttons, providing easy access.
|
|
2216 @file{HYPB} for a local button file and @file{~/.hyperb/HYPB} for your
|
|
2217 global file. These are good places to start your button creation testing.
|
|
2218
|
24
|
2219 @cindex menu, Cust
|
|
2220 @cindex customization
|
|
2221 @cindex option settings
|
|
2222 @item Cust/
|
|
2223 Customizes Hyperbole by setting major options.
|
|
2224 This includes where Hyperbole link referents are displayed, where URLs
|
36
|
2225 are displayed, whether the date stamps are added to rolodex entries, and
|
|
2226 whether to use proportional or windowful scrolling when a Smart Key is
|
|
2227 pressed at the end of a line. @xref{Configuring}.
|
24
|
2228
|
0
|
2229 @cindex menu, EBut
|
|
2230 @item Ebut/
|
24
|
2231 All explicit button commands. The window-system-based Hyperbole
|
|
2232 menu includes a menu item that activates each explicit button found
|
|
2233 in the current buffer.
|
0
|
2234
|
|
2235 @cindex menu, Doc
|
|
2236 @cindex menu, Types
|
|
2237 @item Doc/
|
24
|
2238 Hyperbole documentation quick access. Contains About item describing
|
|
2239 Hyperbole and a Demo item which demonstrates a number of Hyperbole
|
|
2240 features. It also contains the Types/ submenu for documentation on
|
|
2241 Hyperbole implicit button and action types.
|
0
|
2242
|
|
2243 @cindex menu, Global Buttons
|
|
2244 @item Gbut/
|
|
2245 All global button commands. Global buttons are accessed by name
|
24
|
2246 rather than by direct selection. The window-system-based Hyperbole
|
|
2247 menu also includes a menu item that activates each global button.
|
0
|
2248
|
|
2249 @cindex menu, History
|
|
2250 @cindex history
|
|
2251 @item Hist
|
|
2252 Jumps back to last position in button traversal history.
|
|
2253
|
|
2254 @cindex menu, Implicit Buttons
|
|
2255 @item Ibut/
|
|
2256 All implicit button commands.
|
|
2257
|
|
2258 @cindex menu, Message
|
|
2259 @item Msg/
|
24
|
2260 Hyperbole-specific mail and news messaging support commands. Use this
|
|
2261 to send mail to a Hyperbole mail list or to add/modify/delete your entry
|
|
2262 on a list.
|
0
|
2263
|
|
2264 @cindex menu, Outliner
|
|
2265 @item Otl/
|
|
2266 Autonumbered, structured outliner and hyper-node manager commands.
|
|
2267 @xref{Outliner}.
|
|
2268
|
|
2269 @cindex menu, Rolodex
|
|
2270 @item Rolo/
|
|
2271 Hierarchical, multi-file rolodex lookup and edit commands.
|
|
2272 @xref{Rolodex}.
|
|
2273
|
|
2274 @cindex menu, Window Configurations
|
|
2275 @cindex menu, Windows
|
|
2276 @item Win/
|
|
2277 Window configuration management such as adding and restoring window
|
|
2278 configurations by name. @xref{Window Configurations}.
|
|
2279
|
|
2280 @end table
|
|
2281
|
|
2282 @cindex submenus
|
|
2283 @cindex menu help
|
|
2284 @cindex help, menu items
|
|
2285 All menu items are selected via the first character of their names
|
|
2286 (letter case does not matter) or via a press of the Action Key. "/" at
|
|
2287 the end of an item name indicates that it brings up a sub-menu. A press
|
|
2288 of the Assist Key on an item displays help for the item, including the
|
|
2289 action that it performs.
|
|
2290
|
|
2291 @kindex C-t
|
|
2292 @kindex q
|
|
2293 @kindex C-g
|
|
2294 While a menu is active, to re-activate the top-level Hyperbole menu, you
|
|
2295 must use @{@kbd{C-t}@}. This allows you to browse the submenus and then
|
|
2296 return to the top. You can quit without selecting an item by using
|
|
2297 @{@kbd{q}@}. @{@kbd{C-g}@} aborts whether you are at a menu prompt or
|
|
2298 any other Hyperbole prompt.
|
|
2299
|
|
2300
|
|
2301
|
|
2302 @node Entering Arguments, Outliner, Menus, Top
|
|
2303 @chapter Entering Arguments
|
|
2304
|
|
2305 @cindex argument entry
|
|
2306 @cindex direct selection
|
|
2307 @cindex double click
|
|
2308 Many Hyperbole commands prompt you for arguments. The standard
|
|
2309 Hyperbole user interface has an extensive core of argument types that it
|
|
2310 recognizes. Whenever Hyperbole is prompting you for an argument, it
|
|
2311 knows the type that it needs and provides some error checking to help
|
|
2312 you get it right. More importantly, it allows you to press the Action
|
|
2313 Key within an entity that you want to use as an argument and it will grab the
|
|
2314 appropriate thing and show it to you at the input prompt within the
|
|
2315 minibuffer. If you press the Action Key again at the same point (click
|
|
2316 with a mouse) on the same thing again, it accepts the entity as the
|
|
2317 argument and moves on. Thus, a double click registers a desired
|
|
2318 argument. Double-quoted strings, pathnames, mail messages, Info nodes,
|
|
2319 dired listings, buffers, numbers, completion items and so forth are all
|
|
2320 recognized at appropriate times. All of the argument types mentioned in
|
|
2321 the documentation for the Emacs Lisp @code{(interactive)} function are
|
|
2322 recognized. Experiment a little and you will quickly get used to this
|
|
2323 direct selection technique.
|
|
2324
|
|
2325 @cindex completion
|
|
2326 Wherever possible, standard Emacs completion is offered, see
|
|
2327 @ref{Completion,,,emacs, the Gnu Emacs Manual}. Remember to use @{@kbd{?}@}
|
|
2328 to see what your possibilities for an argument are. Once you have a
|
|
2329 list of possible completions on screen, you can double click the Action
|
|
2330 Key on any one to enter it as the argument.
|
|
2331
|
|
2332
|
|
2333 @node Outliner, Rolodex, Entering Arguments, Top
|
|
2334 @chapter Outliner
|
|
2335
|
|
2336 @cindex outliner
|
|
2337 @cindex autonumber
|
|
2338 @cindex relative autonumber
|
|
2339 @cindex permanent identifier
|
|
2340 @cindex idstamp
|
|
2341 @cindex hyperlink anchor
|
|
2342 The Hyperbole outliner, also known as the Koutliner (pronounced
|
|
2343 Kay-outliner), produces structured, autonumbered documents composed of
|
|
2344 hierarchies of cells. Each @dfn{cell} has two identifiers, a
|
|
2345 @dfn{relative identifier} indicating its present position within the
|
|
2346 outline and a @dfn{permanent identifier} called an @dfn{idstamp},
|
|
2347 suitable for use within hyperlink references to the cell. The idstamp
|
|
2348 is typically not displayed but is available when needed.
|
|
2349 @xref{Autonumbering}.
|
|
2350
|
|
2351 Cells also store their time of creation and the user who created the
|
|
2352 cell. User-defined attributes may also be added to cells. @xref{Cell
|
|
2353 Attributes}.
|
|
2354
|
|
2355 @cindex menu, Outline
|
|
2356 The outliner works only under GNU Emacs version 19 or higher, XEmacs
|
|
2357 version 19.9 or higher or under InfoDock. You can tell whether you are
|
|
2358 running a version of Emacs which supports the outliner by hitting
|
|
2359 @{@kbd{C-h h}@} to display the Hyperbole menu. If you see an
|
|
2360 @code{Otl/} entry in the menu, then the outliner is available.
|
|
2361 Otherwise, the outliner does not work with your version of Emacs, so
|
|
2362 this section of the manual will not be of interest to you. (The same is
|
|
2363 true of the Hyperbole/Outline pulldown menu; if it appears, the outliner
|
|
2364 is available for use.)
|
|
2365
|
|
2366 @vindex file, EXAMPLE.kotl
|
|
2367 @cindex menu, Outline/Example
|
|
2368 This chapter expands on the information given in @file{EXAMPLE.kotl}
|
|
2369 file included with Hyperbole. Use @{@kbd{C-h h o e}@} to display that
|
|
2370 file. It is an actual outline file that explains major outliner
|
|
2371 operations. You can test out the viewing and motion commands with this
|
|
2372 file. If you want to experiment with editing operations, use @{@kbd{C-x
|
|
2373 C-w}@} to write the outline to a temporary file such as,
|
|
2374 @file{/tmp/e.kotl}, and then use @{@kbd{C-x C-q}@} to make the outline
|
|
2375 editable.
|
|
2376
|
|
2377 @xref{Outliner Keys}, for a full summary of the key bindings and
|
|
2378 commands available in the outliner.
|
|
2379
|
|
2380 @menu
|
|
2381 * Menu Commands::
|
|
2382 * Creating Outlines::
|
|
2383 * Autonumbering::
|
|
2384 * Idstamps::
|
|
2385 * Editing::
|
|
2386 * Viewing::
|
|
2387 * Links::
|
|
2388 * Cell Attributes::
|
|
2389 * Outliner History::
|
|
2390 @end menu
|
|
2391
|
|
2392
|
|
2393 @node Menu Commands, Creating Outlines, Outliner, Outliner
|
|
2394 @section Menu Commands
|
|
2395
|
|
2396 The Otl/ menu entry on the Hyperbole top-level menu provides access to
|
|
2397 a number of major outliner commands:
|
|
2398
|
|
2399 @cindex outliner commands
|
|
2400 @cindex Koutliner commands
|
|
2401 @findex kotl-mode:show-all
|
|
2402 @findex kvspec:toggle-blank-lines
|
|
2403 @findex kfile:find
|
|
2404 @findex kotl-mode:hide-sublevels
|
|
2405 @findex kotl-mode:hide-tree
|
|
2406 @findex kotl-mode:kill-tree
|
|
2407 @findex klink:create
|
|
2408 @findex kotl-mode:overview
|
|
2409 @findex kotl-mode:show-tree
|
|
2410 @findex kotl-mode:top-cells
|
|
2411 @findex kvspec:activate
|
|
2412 @cindex menu, Outline
|
10
|
2413 @example
|
|
2414 @group
|
0
|
2415 Menu Item Command Description
|
|
2416 ====================================================================
|
|
2417 All kotl-mode:show-all Expand all cells
|
|
2418 Blanks kvspec:toggle-blank-lines Toggle blank lines on or off
|
|
2419 Create kfile:find Edit or create an outline
|
|
2420 Downto kotl-mode:hide-sublevels Hide cells deeper than a level
|
|
2421 Examp <sample outliner file> Show self-descriptive example
|
|
2422 Hide kotl-mode:hide-tree Hide tree with root at point
|
|
2423 Info <outliner documentation> Show outliner manual section
|
|
2424 Kill kotl-mode:kill-tree Kill the current tree
|
|
2425 Link klink:create Create a link to another cell
|
|
2426 Overvw kotl-mode:overview Show first line of each cell
|
|
2427 Show kotl-mode:show-tree Show tree with root at point
|
|
2428 Top kotl-mode:top-cells Collapse to top-level cells
|
|
2429 Vspec kvspec:activate Set a view specification
|
|
2430 ====================================================================
|
|
2431 @end group
|
|
2432 @end example
|
|
2433
|
|
2434
|
|
2435 @node Creating Outlines, Autonumbering, Menu Commands, Outliner
|
|
2436 @section Creating Outlines
|
|
2437
|
|
2438 @cindex outline file suffix
|
|
2439 @cindex outline, creating
|
|
2440 @vindex file, .kotl suffix
|
|
2441 In addition to the Otl/Create menu item, you can create and experiment
|
|
2442 with outline files simply by finding a file, @{@kbd{C-x C-f}@} with a
|
|
2443 @file{.kotl} suffix. @file{.kot} will also work for DOS or
|
|
2444 Windows-impaired users.
|
|
2445
|
|
2446 @cindex root cell
|
|
2447 @cindex top-level cell
|
|
2448 @cindex cell, top-level
|
|
2449 @cindex cell, idstamp 0
|
|
2450 When a new koutline is created, an invisible root cell is created. Its
|
|
2451 permanent and relative ids are both 0, and it is considered to be at
|
|
2452 level 0 in the outline. All visible cells in the outline are at level 1
|
|
2453 or deeper, and thus are descendants of this root cell. Some koutliner
|
|
2454 commands prompt for cell numbers as arguments. An argument of 0 makes
|
|
2455 commands operate upon the entire outline.
|
|
2456
|
|
2457 An initial level 1 cell is also created to make it easy to start
|
|
2458 entering text in the outline. A koutline always has at least one
|
|
2459 visible cell in it.
|
|
2460
|
|
2461 @xref{Autonumbering}, which explains how cells are labeled according to their
|
|
2462 respective levels in the outline and how these labels are updated as the
|
|
2463 structure of the outline changes.
|
|
2464
|
|
2465
|
|
2466 @node Autonumbering, Idstamps, Creating Outlines, Outliner
|
|
2467 @section Autonumbering
|
|
2468
|
|
2469 @cindex autonumber
|
|
2470 @cindex relative identifier
|
|
2471 @xref{Adding and Killing}, which explains how to add new cells to or remove
|
|
2472 cells from a koutline. As you do this, or as you promote or demote
|
|
2473 cells within the outline, the labels preceding the contents of each cell
|
|
2474 automatically update to reflect the new structure. These labels are
|
|
2475 also known as @dfn{autonumbers} and as @dfn{relative ids} because they
|
|
2476 change as the structure changes.
|
|
2477
|
|
2478 @cindex outline structure
|
|
2479 The outline structure is shown by these labels and by the indentation of
|
|
2480 each outline level. Normally, each deeper level is indented another
|
|
2481 three characters, to reflect the nesting.
|
|
2482
|
|
2483 @cindex label type, alpha
|
|
2484 @cindex label type, legal
|
|
2485 @cindex alpha labels
|
|
2486 @cindex legal labels
|
|
2487 @cindex outline, label type
|
|
2488 The default autonumbers are called @dfn{alphanumeric labels} because
|
|
2489 they alternate between using numbers and letters to distinguish each
|
|
2490 successive level. Each alphanumeric label uniquely identifies a cell's
|
|
2491 position in an outline, so that there is no need to scan back to prior
|
|
2492 cells to see what the current section number of an outline is. This is
|
|
2493 similar to a legal numbering scheme but without all the period
|
|
2494 characters between level numbers. As an example, 1b3 is equivalent to a
|
|
2495 legal label of 1.2.3. Both refer to the 3rd cell at level 3,
|
|
2496 below the 2nd child of the first cell at level 1. Said another way,
|
|
2497 this is the 3rd child of the 1st cell's 2nd child. In other words, it
|
|
2498 is easier to visualize hierarchies than to talk about them.
|
|
2499
|
|
2500 Alphanumeric labels are the default because they are shorter and easier
|
|
2501 to read aloud than equivalent legal ones. They also simplify
|
|
2502 distinguishing between even and odd level labels because of the
|
|
2503 alternating character set.
|
|
2504
|
|
2505 @kindex C-c C-l
|
|
2506 @cindex label type, changing
|
|
2507 You can change the labeling scheme used in a particular outline with the
|
|
2508 command @{@kbd{C-c C-l}@}. A @{@kbd{?}@} then will show all of your
|
|
2509 options. Legal labels, partial alpha labels (single level autonumbering
|
|
2510 where only the last part of the level number is shown, as commonly seen
|
|
2511 in other outliner products), idstamps (permanent cell ids), and star
|
|
2512 outline level labels (Emacs asterisk-based outline labeling) are all
|
|
2513 available. Or you may choose to turn autonumbering off. Cells are
|
|
2514 still indented to reflect the outline structure whether or not labels
|
|
2515 are displayed.
|
|
2516
|
|
2517 @cindex label separator, changing
|
|
2518 @cindex cell, label separator
|
|
2519 @cindex outline, label separator
|
|
2520 @kindex C-c M-l
|
|
2521 @kindex C-u C-c M-l
|
|
2522 A cell label is normally followed by two spaces, called the @dfn{label
|
|
2523 separator}, prior to the start of the cell contents. You can change the
|
|
2524 separator with for the current outline with @{@kbd{C-c M-l}@}.
|
|
2525 @{@kbd{C-u C-c M-l}@} will additionally change the default separator
|
|
2526 value used when new outlines are created (for the current session only).
|
|
2527 For example, use the value ". " to get a trailing period after each cell
|
|
2528 label. The separator must be at least two characters long but may be
|
|
2529 longer.
|
|
2530
|
|
2531 @vindex file, ~/.emacs
|
|
2532 @cindex initialization file
|
|
2533 If you find a separator that you prefer for all outlines, change the
|
|
2534 separator setting permanently by adding the following line to your Emacs
|
|
2535 initialization file, @file{~/.emacs}, substituting for `your-separator':
|
|
2536
|
|
2537 @cindex label separator, default
|
|
2538 @vindex kview:default-label-separator
|
|
2539 @lisp
|
|
2540 (setq kview:default-label-separator "your-separator")
|
|
2541 @end lisp
|
|
2542
|
|
2543
|
|
2544 @node Idstamps, Editing, Autonumbering, Outliner
|
|
2545 @section Idstamps
|
|
2546
|
|
2547 @cindex permanent identifier
|
|
2548 @cindex idstamp
|
|
2549 Idstamps (permanent ids) are associated with each cell and can be
|
|
2550 used in hyperlinks that are maintained as cells are reordered in a file.
|
|
2551 @xref{Links}. Idstamps may also be displayed in place of the outline
|
|
2552 level relative ids. Use @{@kbd{C-c C-l id RET}@}.
|
|
2553
|
|
2554 @cindex idstamp counter
|
|
2555 An idstamp counter for each outline starts at 0 and is incremented by
|
|
2556 one each time a cell is added to the outline. This idstamp stays with
|
|
2557 the cell no matter where it is moved within the outline. If the cell is
|
|
2558 deleted, its idstamp is not reused.
|
|
2559
|
|
2560 @cindex root cell
|
|
2561 @cindex top-level cell
|
|
2562 @cindex cell, top-level
|
|
2563 @cindex cell, idstamp 0
|
|
2564 @cindex idstamp 0
|
|
2565 The 0 idstamp is always assigned to the root node of the entire outline.
|
|
2566 This node is never visible within the outline, but is used so that the
|
|
2567 outline may be treated as a single tree when needed. Idstamps always
|
|
2568 begin with a 0, as in 012, to distinguish them from relative ids.
|
|
2569
|
|
2570
|
|
2571 @node Editing, Viewing, Idstamps, Outliner
|
|
2572 @section Editing
|
|
2573
|
|
2574 You edit text and move around in the Koutliner just as you would in any
|
|
2575 other Emacs buffer, except when you want to deal with the structural
|
|
2576 components of an outline. Within the contents of a cell, all of your
|
|
2577 standard editing keys should work properly. You can just type in text
|
|
2578 and the left and right margins of the lines will be maintained for you.
|
|
2579 @xref{Filling}, for the times when you need to refill a paragraph or to
|
|
2580 control when filling occurs.@refill
|
|
2581
|
|
2582 Don't invoke editing commands with @{@kbd{M-x command-name @key{RET}}@}
|
|
2583 since the Koutliner uses special differently named commands made to act
|
|
2584 like the regular editing commands but which account for the structure
|
|
2585 and indentation in koutlines.
|
|
2586
|
|
2587 @cindex cell, selection
|
|
2588 You can use the mouse to select parts of the contents of a single cell
|
|
2589 for editing. But don't drag across cell boundaries and then edit the
|
|
2590 selected region, since that can destroy the outline structure.
|
|
2591
|
|
2592 @menu
|
|
2593 * Adding and Killing::
|
|
2594 * Moving Around::
|
|
2595 * Relocating and Copying::
|
|
2596 * Filling::
|
|
2597 * Transposing::
|
|
2598 * Splitting and Appending::
|
|
2599 * Inserting and Importing::
|
|
2600 @end menu
|
|
2601
|
|
2602 @node Adding and Killing, Relocating and Copying, Editing, Editing
|
|
2603 @subsection Adding and Killing
|
|
2604
|
|
2605 @kindex C-j
|
|
2606 @kindex C-u c-j
|
|
2607 @kindex C-c a
|
|
2608 @kindex C-c p
|
|
2609 @cindex cell, adding
|
|
2610 @cindex cell, creating
|
|
2611 @{@kbd{C-j}@} adds a new cell as a successor sibling of the
|
|
2612 current cell, that is, the next cell at the same level as the current
|
|
2613 cell. If you enter a positive number as a prefix argument, that number
|
|
2614 of cells will be inserted, all at the same level. @{@kbd{C-u C-j}@} is
|
|
2615 handled specially. It adds a single cell as a child of the current cell.
|
|
2616 @{@kbd{C-c a}@} does the same thing. @{@kbd{C-c p}@} adds the cell as
|
|
2617 the successor of the current cell's parent.
|
|
2618
|
|
2619 @kindex C-c C-k
|
|
2620 @kindex C-c k
|
|
2621 @kindex C-u C-c k
|
|
2622 @kindex C-y
|
|
2623 @cindex cell, killing
|
|
2624 @cindex cell, yanking contents
|
|
2625 @cindex tree, killing
|
|
2626 @{@kbd{C-c C-k}@} kills the current cell and its entire subtree.
|
|
2627 @{@kbd{C-c k}@} kills the contents of a cell from point through the end
|
|
2628 of the cell; it does not remove the cell itself. @{@kbd{C-u C-c k}@}
|
|
2629 kills the entire contents of the cell regardless of the location of
|
|
2630 point. You may then yank the contents into another cell or another
|
|
2631 buffer with @{@kbd{C-y}@}.
|
|
2632
|
|
2633
|
|
2634 @node Relocating and Copying, Moving Around, Adding and Killing, Editing
|
|
2635 @subsection Relocating and Copying
|
|
2636
|
|
2637 @cindex promotion
|
|
2638 @cindex demotion
|
|
2639 @cindex tree, promoting
|
|
2640 @cindex tree, demoting
|
|
2641 @dfn{Demotion} is the act of moving a tree down one or more levels in the
|
|
2642 outline. The new tree will become either the successor or the first
|
|
2643 child of the cell which precedes it in the outline. @dfn{Promotion} is
|
|
2644 the inverse operation. Note that trees (cells and their entire
|
|
2645 substructure) are promoted and demoted, not individual cells.
|
|
2646
|
|
2647 @kindex @key{TAB}
|
|
2648 @kindex M-@key{TAB}
|
|
2649 Trees may be demoted or promoted by pressing @{@key{TAB}@} or
|
|
2650 @{@kbd{M-@key{TAB}}@} respectively, as in most outliners today.
|
|
2651 @{@kbd{M-0 @key{TAB}}@} and @{@kbd{M-0 M-@key{TAB}}@} demote and
|
|
2652 promote trees and additionally refill each cell that is not specially
|
|
2653 marked to prevent refilling. @xref{Filling}. A positive or negative
|
|
2654 prefix argument to these commands promotes or demotes the tree up to a
|
|
2655 maximum of the number of levels given by the argument. The outline may
|
|
2656 not support movement of the tree by the number of levels requested.
|
|
2657
|
|
2658 @cindex tree, copying
|
|
2659 @cindex tree, moving
|
|
2660 @cindex Action Key, cell argument
|
|
2661 @kindex Action Key, cell argument
|
|
2662 For maximum flexibility in rearranging outlines, there are commands that
|
|
2663 move or copy entire trees. Each of these commands prompts for the label
|
|
2664 of the root cell to move or copy and for second cell at the new location
|
|
2665 for the moved or copied tree. You can either accept the default
|
|
2666 provided, type in the cell label or when a mouse is available, simple
|
|
2667 double click with the Action Key on the contents of a cell. The
|
|
2668 Koutliner knows to use the cell's label in such cases.
|
|
2669
|
|
2670 In these following commands, words delimited with <> represent the
|
|
2671 arguments for which each command prompts. Note how the use of prefix
|
|
2672 arguments changes each command's behavior from insertion at the sibling
|
|
2673 level to insertion at the child level.
|
|
2674
|
|
2675 @table @kbd
|
|
2676 @kindex C-c c
|
|
2677 @item C-c c
|
|
2678 Copy <tree> to be the successor of <cell>.
|
|
2679 @kindex C-u C-c c
|
|
2680 @itemx C-u C-c c
|
|
2681 Copy <tree> to follow as the first child of <cell>.
|
|
2682
|
|
2683 @kindex C-c C-c
|
|
2684 @item C-c C-c
|
|
2685 Copy <tree> to be the predecessor of <cell>.
|
|
2686 @kindex C-u C-c C-c
|
|
2687 @itemx C-u C-c C-c
|
|
2688 Copy <tree> to be the first child of the parent of <cell>.
|
|
2689
|
|
2690 @kindex C-c m
|
|
2691 @item C-c m
|
|
2692 Move <tree> to be the successor of <cell>.
|
|
2693 @kindex C-u C-c m
|
|
2694 @itemx C-u C-c m
|
|
2695 Move <tree> to follow as the first child of <cell>.
|
|
2696
|
|
2697 @kindex C-c C-m
|
|
2698 @item C-c C-m
|
|
2699 Move <tree> to precede <cell>.
|
|
2700 @kindex C-u C-c C-m
|
|
2701 @itemx C-u C-c C-m
|
|
2702 Move <tree> to be the first child of the parent of <cell>.
|
|
2703 @end table
|
|
2704
|
|
2705 @cindex mouse, moving trees
|
|
2706 If you have mouse support under Hyperbole, you can move entire trees
|
|
2707 with mouse clicks. Simply click the Assist Key within the indentation
|
|
2708 to the left of a cell and you will be prompted for a tree to move.
|
|
2709 Double click the Action Key within the contents the root cell of the tree
|
|
2710 to move and then double click within the contents of the root cell of the
|
|
2711 tree you want it to follow as a sucessor.
|
|
2712
|
|
2713 Copying and moving only work within a single outline right now, so don't
|
|
2714 try to use them to move trees across different outline files. You can,
|
|
2715 however, copy an outline tree to a non-outline buffer with:
|
|
2716
|
|
2717 @cindex tree, exporting
|
|
2718 @cindex outline, exporting
|
|
2719 @cindex tree, mailing
|
|
2720 @cindex outline, mailing
|
|
2721 @cindex exporting an outline
|
|
2722 @cindex mailing an outline
|
|
2723 @table @kbd
|
|
2724 @kindex C-c M-c
|
|
2725 @item C-c M-c
|
|
2726 Copy <tree> to a non-koutline buffer.
|
|
2727 @kindex C-c @@
|
|
2728 @itemx C-c @@
|
|
2729 Copy a <tree> to an outgoing mail message.
|
|
2730 @end table
|
|
2731
|
|
2732 @node Moving Around, Filling, Relocating and Copying, Editing
|
|
2733 @subsection Moving Around
|
|
2734
|
|
2735 @cindex outline, motion
|
|
2736 In addition to normal Emacs movement commands, you can move within a
|
|
2737 cell or from one cell or tree to another.
|
|
2738
|
|
2739 @table @kbd
|
|
2740 @kindex C-c ,
|
|
2741 @item C-c ,
|
|
2742 Move to the beginning of the current cell.
|
|
2743 @kindex C-c .
|
|
2744 @itemx C-c .
|
|
2745 Move to the end of the current cell.
|
|
2746
|
|
2747 @kindex C-c C-n
|
|
2748 @item C-c C-n
|
|
2749 Move to the next visible cell, regardless of level.
|
|
2750 @kindex C-c C-p
|
|
2751 @itemx C-c C-p
|
|
2752 Move to the previous visible cell, regardless of level.
|
|
2753
|
|
2754 @kindex C-c C-f
|
|
2755 @item C-c C-f
|
|
2756 Move forward to this cell's successor, if any.
|
|
2757 @kindex C-c C-b
|
|
2758 @itemx C-c C-b
|
|
2759 Move backward to this cell's predecessor, if any.
|
|
2760
|
|
2761 @kindex C-c C-d
|
|
2762 @item C-c C-d
|
|
2763 Move to the first child of the current cell, if any.
|
|
2764 @kindex C-c C-u
|
|
2765 @itemx C-c C-u
|
|
2766 Move to the parent cell of the current cell, if any.
|
|
2767
|
|
2768 @kindex C-c <
|
|
2769 @item C-c <
|
|
2770 Move to the first sibling at the current level within this tree.
|
|
2771 @kindex C-c >
|
|
2772 @itemx C-c >
|
|
2773 Move to the last sibling at the current level within this tree.
|
|
2774
|
|
2775 @kindex C-c ^
|
|
2776 @item C-c ^
|
|
2777 Move to the level 1 root cell of the current tree.
|
|
2778 @kindex C-c $
|
|
2779 @itemx C-c $
|
|
2780 Move to the last cell in the tree rooted at point, regardless of level.
|
|
2781 @end table
|
|
2782
|
|
2783
|
|
2784 @node Filling, Transposing, Moving Around, Editing
|
|
2785 @subsection Filling
|
|
2786
|
|
2787 @cindex outline, filling
|
|
2788 Filling is the process of extending lines that are shorter than the
|
|
2789 right margin and reducing lines which extend past the margin by moving
|
|
2790 words among the lines. Commands are provided to fill a paragraph within
|
|
2791 a cell or a whole cell, which may have multiple paragraphs.
|
|
2792
|
|
2793 @cindex filling
|
|
2794 @cindex cell, filling
|
|
2795 @cindex paragraph, filling
|
|
2796 @cindex tree, filling
|
|
2797 @cindex margin
|
|
2798 @kindex M-q
|
|
2799 @kindex M-j
|
|
2800 @kindex C-c M-q
|
|
2801 @kindex C-c M-j
|
|
2802 @kindex C-M-q
|
|
2803 @kindex C-M-j
|
|
2804 @{@kbd{M-q}@} or @{@kbd{M-j}@} refills a paragraph within a
|
|
2805 cell so that its lines wrap within the current margin settings.
|
|
2806 @{@kbd{C-c M-q}@} or @{@kbd{C-c M-j}@} refills all paragraphs within a
|
|
2807 cell. @{@kbd{C-M-q}@} or @{@kbd{C-M-j}@} refills all cells within a
|
|
2808 tree. See your Emacs or InfoDock manual for information on how to set
|
|
2809 the left and right margins.
|
|
2810
|
|
2811 @vindex kotl-mode:refill-flag
|
|
2812 @cindex refilling
|
|
2813 @cindex attribute, no-fill
|
|
2814 @cindex cell, no-fill attribute
|
|
2815 Set the variable, @var{kotl-mode:refill-flag}, to t if you want
|
|
2816 moving, promoting, demoting, exchanging, splitting and appending cells
|
|
2817 to also automatically refill each cell. Generally, this is not
|
|
2818 recommended since if you happen to move a cell that you have carefully
|
|
2819 formatted and forgot to give it a `no-fill' property, your formatting
|
|
2820 will be lost.
|
|
2821
|
|
2822
|
|
2823 @node Transposing, Splitting and Appending, Filling, Editing
|
|
2824 @subsection Transposing
|
|
2825
|
|
2826 The Koutliner move and copy commands rearrange entire trees. The
|
|
2827 following two commands, in contrast, exchange the locations of two
|
|
2828 individual cells.
|
|
2829
|
|
2830 @kindex C-c e
|
|
2831 @cindex cell, transposing
|
|
2832 @cindex cell, exchanging
|
|
2833 @cindex exchanging cells
|
|
2834 @cindex transposing cells
|
|
2835 @{@kbd{C-c e}@} prompts for two cell addresses and exchanges the cell
|
|
2836 locations.
|
|
2837
|
|
2838 @kindex C-c t
|
|
2839 @{@kbd{C-c t}@} does not prompt. It exchanges the current
|
|
2840 and immediatly prior cell, regardless of their levels. If there is no
|
|
2841 prior cell it exchanges the current and next cell.
|
|
2842
|
|
2843 @cindex cell, mark and point
|
|
2844 @kindex M-0 C-c t
|
|
2845 @{@kbd{M-0 C-c t}@} exchanges the cells in which point and mark fall.
|
|
2846 @{@kbd{C-c t}@} with a non-zero numeric prefix argument, N, moves
|
|
2847 the current tree past maximally the next N visible cells. If there are
|
|
2848 fewer visible, it makes the current cell the last cell in the outline.
|
|
2849
|
|
2850
|
|
2851 @node Splitting and Appending, Inserting and Importing, Transposing, Editing
|
|
2852 @subsection Splitting and Appending
|
|
2853
|
|
2854 @cindex splitting a cell
|
|
2855 @cindex cell, splitting
|
|
2856 @kindex C-c s
|
|
2857 @kindex C-u C-c s
|
|
2858 You can split one cell into two adjacent sibling cells with @{@kbd{C-c
|
|
2859 s}@}. This leaves the cell contents preceding point in the current
|
|
2860 cell, minus any trailing whitespace, and moves the contents following
|
|
2861 point to a new sibling cell which is inserted into the outline.
|
|
2862 @{@kbd{C-u C-c s}@} instead adds the new cell as the first child of the
|
|
2863 original cell, rather than as its successor.
|
|
2864
|
|
2865 All cell attributes in the original cell are propagated to the new one,
|
|
2866 aside from the creation attributes and idstamp.
|
|
2867
|
|
2868 @kindex C-c +
|
|
2869 @cindex cell, appending
|
|
2870 @cindex appending to a cell
|
|
2871 @cindex attribute, no-fill
|
|
2872 @cindex cell, no-fill attribute
|
|
2873 @{@kbd{C-c +}@} appends the contents of a specified cell to the end of
|
|
2874 another cell. It has no effect on cell attributes, except that if one
|
|
2875 cell has a `no-fill' attribute that prevents all but user requested
|
|
2876 filling of a cell, then the cell appended to inherits this property.
|
|
2877 This helps maintain any special formatting the appended text may have.
|
|
2878
|
|
2879
|
|
2880 @node Inserting and Importing, , Splitting and Appending, Editing
|
|
2881 @subsection Inserting and Importing
|
|
2882
|
|
2883 @cindex outline, inserting into
|
|
2884 @cindex outline, importing into
|
|
2885 @cindex importation
|
|
2886 @cindex insertion
|
|
2887 @kindex C-x i
|
|
2888 @cindex outline, foreign file
|
|
2889 The elements of another buffer or file may be inserted into a koutline
|
|
2890 as a set of cells by using the @{@kbd{C-x i}@} command. When prompted,
|
|
2891 you may use a buffer name or file name from which to insert, though
|
|
2892 completion is provided only for file names.
|
|
2893
|
|
2894 @kindex C-u C-x i
|
|
2895 The elements from the original buffer are converted into kcells and
|
|
2896 inserted as the successors of the current cell. If @{@kbd{C-u C-x i}@}
|
|
2897 is used, they are instead inserted as the inital children of the current
|
|
2898 cell.
|
|
2899
|
|
2900 @vindex kimport:mode-alist
|
|
2901 @vindex kimport:suffix-alist
|
|
2902 @cindex outline, conversion
|
|
2903 @findex kotl-mode
|
|
2904 @cindex outline mode
|
|
2905 @cindex koutline mode
|
|
2906 @cindex file, importing
|
|
2907 @cindex importing a file
|
|
2908 See the documentation for the variables, kimport:mode-alist and
|
|
2909 kimport:suffix-alist, for information on mode and suffix-specific
|
|
2910 conversions performed on file elements before they are inserted. This
|
|
2911 same conversion process applies if you invoke @{@kbd{M-x kotl-mode
|
|
2912 RET}@} in a non-koutline buffer or if you perform a generic file import
|
|
2913 as described later in this section.
|
|
2914
|
|
2915 @findex kotl-mode:insert-file-contents
|
|
2916 Use @{@kbd{M-x kotl-mode:insert-file-contents RET}@} to insert the
|
|
2917 entire contents of a file into the current cell at the location of
|
|
2918 point.
|
|
2919
|
|
2920 @findex kimport:file
|
|
2921 The outliner presently supports conversion of three types of files into
|
|
2922 koutline files. You can choose to import a file into an existing
|
|
2923 koutline, following the tree at point, or to create a new koutline of
|
|
2924 the imported file contents. @{@kbd{M-x kimport:file RET}@} will select
|
|
2925 the importation type based on the buffer or file name suffix of the file
|
|
2926 to import.
|
|
2927
|
|
2928 @findex kotl-mode
|
|
2929 If you want to convert a buffer from some other mode into a koutline and
|
|
2930 then want to save the converted buffer back to its original file,
|
|
2931 thereby replacing the original format, then use @{@kbd{M-x kotl-mode
|
|
2932 RET}@} to convert the buffer into a koutline. Remember that you will
|
|
2933 lose the old format of the buffer when you do this.
|
|
2934
|
|
2935 Use one of the following commands if you really need explicit control over the
|
|
2936 type of importation used on some text. With these commands, your
|
|
2937 original file remains intact.
|
|
2938
|
|
2939 @findex kimport:text
|
|
2940 @cindex text file
|
|
2941 Use @{@kbd{M-x kimport:text RET}@} and you will be prompted for a text
|
|
2942 buffer or file to import and the new koutline buffer or file to create
|
|
2943 from its text. It will also import the contents, attributes and level
|
|
2944 structure of cells from a koutline.
|
|
2945
|
|
2946 @findex kimport:star-outline
|
|
2947 @cindex emacs outline
|
|
2948 @cindex star outline
|
|
2949 Star outlines are standard Emacs outlines where each entry begins with
|
|
2950 one or more asterisk characters. Use @{@kbd{M-x kimport:star-outline
|
|
2951 RET}@} and you will be prompted for the star outline buffer or file to
|
|
2952 import and the new koutline buffer or file to create.
|
|
2953
|
|
2954 @cindex Augment outline
|
|
2955 @findex kimport:aug-post-outline
|
|
2956 (Skip this if you are unfamiliar with the Augment system.) Files
|
|
2957 exported from the Augment system as text often have alphanumeric
|
|
2958 statement identifiers on the right side. You can import such files
|
|
2959 while maintaining there outline structure. Use @{@kbd{M-x
|
|
2960 kimport:aug-post-outline RET}@} and you will be prompted for the Augment
|
|
2961 buffer or file to import and the koutline to create.
|
|
2962
|
|
2963
|
|
2964 @node Viewing, Links, Editing, Outliner
|
|
2965 @section Viewing
|
|
2966
|
|
2967 @cindex outline, viewing
|
|
2968 @cindex view
|
|
2969 The Koutliner has very flexible viewing facilities to allow you to
|
|
2970 effectively browse and study large amounts of material.
|
|
2971
|
|
2972 @menu
|
|
2973 * Hiding and Showing::
|
|
2974 * View Specs::
|
|
2975 @end menu
|
|
2976
|
|
2977 @node Hiding and Showing, View Specs, Viewing, Viewing
|
|
2978 @subsection Hiding and Showing
|
|
2979
|
|
2980 @cindex outline, hiding
|
|
2981 @cindex outline, showing
|
|
2982 @cindex collapsing
|
|
2983 @cindex expanding
|
|
2984 @cindex hiding
|
|
2985 @cindex showing
|
|
2986 Individual cells, branches, or particular levels in the outline may be
|
|
2987 hidden or shown. These commands work even when an outline buffer is
|
|
2988 read-only, e.g. when its file is not checked out of a version control
|
|
2989 system yet, so that you can get effective views of an outline without
|
|
2990 editing it. Some of these commands affect the current view spec,
|
|
2991 @ref{View Specs}.
|
|
2992
|
|
2993 @table @kbd
|
|
2994 @cindex hide tree
|
|
2995 @cindex tree, show
|
|
2996 @kindex C-c C-h
|
|
2997 @item C-c C-h
|
|
2998 Hide (collapse) the tree rooted at point.
|
|
2999 @cindex show tree
|
|
3000 @cindex tree, show
|
|
3001 @kindex C-c C-s
|
|
3002 @itemx C-c C-s
|
|
3003 Show (expand) the tree rooted at point.
|
|
3004
|
|
3005 @cindex outline, all cells
|
|
3006 @cindex cell, show all
|
|
3007 @kindex C-c C-a
|
|
3008 @item C-c C-a
|
|
3009 Show (expand) all of the cells in the outline.
|
|
3010 @cindex level
|
|
3011 @cindex cell, show levels
|
|
3012 @cindex outline, show levels
|
|
3013 @kindex C-x $
|
|
3014 @itemx C-x $
|
|
3015 Show all of the cells down to a particular <level>. You are prompted
|
|
3016 for the level or a prefix argument may be given.
|
|
3017
|
|
3018 @cindex subtree, hide
|
|
3019 @cindex tree, hide subtree
|
|
3020 @cindex cell, hide subtree
|
|
3021 @cindex hide subtree
|
|
3022 @kindex C-M-h
|
|
3023 @item C-M-h
|
|
3024 Hide the subtree at point, excluding the root cell.
|
|
3025 @cindex subtree, show
|
|
3026 @cindex tree, show subtree
|
|
3027 @cindex cell, show subtree
|
|
3028 @cindex show subtree
|
|
3029 @itemx M-x kotl-mode:show-subtree
|
|
3030 Show the subtree at point. Use @{@kbd{C-c C-s}@} to achieve a similar
|
|
3031 effect. The only difference is that it will expand the root cell too.
|
|
3032
|
|
3033 @cindex overview
|
|
3034 @cindex outline, overview
|
|
3035 @kindex C-c C-o
|
|
3036 @item C-c C-o
|
|
3037 Show an overview of the outline by showing only the first line of
|
|
3038 every cell. This also turns off blank lines between cells to maximize
|
|
3039 your view of the outline.
|
|
3040 @cindex top-level view
|
|
3041 @cindex outline, top-level
|
|
3042 @kindex C-c C-t
|
|
3043 @itemx C-c C-t
|
|
3044 Show a top-level view of the outline by showing only the first line of
|
|
3045 each level one cell. This does not turn off blank lines.
|
|
3046 @end table
|
|
3047
|
|
3048 @kindex Action Key, hide or show cell
|
|
3049 @cindex Action Key, hide or show cell
|
|
3050 @cindex cell, collapse
|
|
3051 @cindex cell, expand
|
|
3052 @kindex M-@key{RET}
|
|
3053 A click or a press of the Action Key within a cell's body, but not on a
|
|
3054 Hyperbole button, toggles between hiding and showing the tree rooted at
|
|
3055 point. Try it with either your mouse or with @{@kbd{M-@key{RET}}@}.
|
|
3056
|
|
3057
|
|
3058 @node View Specs, , Hiding and Showing, Viewing
|
|
3059 @subsection View Specs
|
|
3060
|
|
3061 @cindex view spec
|
|
3062 @cindex modeline, view spec
|
|
3063 @vindex kvspec:string
|
|
3064 @cindex pipe character
|
|
3065 @cindex |
|
|
3066 @cindex <|viewspec>
|
|
3067 @dfn{View specifications} (view specs, for short) are short codes used
|
|
3068 to control the view of a koutline. The view specs in effect for an
|
|
3069 outline are always displayed in the modeline of the outline's window,
|
|
3070 following the outline buffer name, unless the variable,
|
|
3071 @var{kvspec:string}, has been set to @code{nil} to disable view spec
|
|
3072 modeline display. The modeline display appears as <|viewspec> so that
|
|
3073 you can easily pick them out. The | (pipe character) is also used in
|
|
3074 links that specify view specs to indicate the start of a view spec
|
|
3075 sequence. @xref{Links}.
|
|
3076
|
|
3077 @cindex outline, view specs
|
|
3078 The current view spec is saved whenever the outline is saved. The next
|
|
3079 time the outline is read in, this will be the initial view.
|
|
3080
|
24
|
3081 The rest of this section documents the the view spec characters that are
|
0
|
3082 presently supported and explains how to invoke a view spec. There is no
|
|
3083 user-level way to add your own view spec characters, so all character
|
|
3084 codes are reserved for future use.
|
|
3085
|
|
3086 @kindex C-c C-v
|
|
3087 @cindex view spec, setting
|
|
3088 @cindex view spec, changing
|
|
3089 @cindex changing the view spec
|
|
3090 @cindex setting the view spec
|
|
3091 @{@kbd{C-c C-v}@} prompts for a new view spec setting in which the following
|
|
3092 codes are valid. Any invalid characters in a view spec are ignored.
|
|
3093 Characters are evaluated in an order meant to do the right thing, even
|
|
3094 when you use conflicting view spec characters. The standard initial
|
|
3095 view spec is <|ben>.
|
|
3096
|
|
3097 @cindex view spec, characters
|
|
3098 @table @kbd
|
|
3099 @cindex view spec, all lines and levels
|
|
3100 @item a
|
|
3101 Show all cell levels and all lines in cells.
|
|
3102
|
|
3103 @kindex C-c b
|
|
3104 @cindex blank lines, toggle
|
|
3105 @cindex view spec, blank lines
|
|
3106 @kindex C-c b
|
|
3107 @cindex toggling blank lines
|
|
3108 @item b
|
|
3109 Turn on blank lines between cells. Without this character, blank lines
|
|
3110 will be turned off. You can also use the @{@kbd{C-c b}@} key binding to
|
|
3111 toggle line numbers on and off independent of any other view settings.
|
|
3112
|
|
3113 @cindex view spec, lines per cell
|
|
3114 @cindex hide lines
|
|
3115 @cindex collapse lines
|
|
3116 @cindex cutoff lines
|
|
3117 @item cN
|
|
3118 Hide any lines greater than N in each cell. 0 means don't cutoff any
|
|
3119 lines.
|
|
3120
|
|
3121 @cindex ellipses
|
|
3122 @cindex view spec, ellipses
|
|
3123 @item e
|
|
3124 Show ellipses when some content of a cell or its subtree is hidden.
|
|
3125
|
|
3126 @cindex level
|
|
3127 @cindex cell, hiding levels
|
|
3128 @cindex hide levels
|
|
3129 @cindex view spec, show levels
|
|
3130 @item lN
|
|
3131 Hide cells at levels deeper than N. 0 means don't hide any cells.
|
|
3132
|
|
3133 @cindex label type
|
|
3134 @cindex view spec, label type
|
|
3135 @vindex kview:default-label-type
|
|
3136 @cindex default label type
|
|
3137 @item n
|
|
3138 Turn on the default label type, as given by the variable,
|
|
3139 @var{kview:default-label-type}. Normally, this is alphanumeric labels.
|
|
3140 @cindex label type, idstamps
|
|
3141 @itemx n0
|
|
3142 Display idstamps.
|
|
3143 @cindex label type, alpha
|
|
3144 @itemx n1
|
|
3145 Display alpha labels.
|
|
3146 @cindex label type, partial alpha
|
|
3147 @itemx n2
|
|
3148 Display partial alpha labels (don't use this, as full alpha labels are
|
|
3149 better).
|
|
3150 @cindex label type, legal
|
|
3151 @itemx n.
|
|
3152 Display legal labels.
|
|
3153 @cindex label type, star
|
|
3154 @cindex label type, asterisk
|
|
3155 @itemx n*
|
|
3156 Display star labels. A level three cell would have three asterisks as a
|
|
3157 label, for example.
|
|
3158 @cindex label type, no labels
|
|
3159 @itemx n~
|
|
3160 Turn off labels. (n viewspec is removed from modeline).
|
|
3161 @end table
|
|
3162
|
|
3163 @cindex view spec, example
|
|
3164 As a test, use @{@kbd{C-h h o e}@} to display the example koutline.
|
|
3165 Then use @{@kbd{C-c C-v}@} to set a view spec of `c2l1'. This will turn
|
|
3166 off blank lines, clip each cell after its second line, and hide all
|
|
3167 cells below level one.
|
|
3168
|
|
3169
|
|
3170 @node Links, Cell Attributes, Viewing, Outliner
|
|
3171 @section Links
|
|
3172
|
|
3173 @cindex link
|
|
3174 @cindex hyperlink
|
|
3175 @cindex klink
|
|
3176 @cindex <> delimiters
|
|
3177 Hyperlinks may be embedded in cells and may refer to other cells or
|
|
3178 external sources of information. Explicit Hyperbole buttons may be
|
|
3179 created as usual via mouse drags, @ref{By Dragging, Creation Via Action
|
|
3180 Key Drags}. A @dfn{klink} is a special implicit link button, delimited
|
|
3181 by <> separators, that jumps to a specific outline cell. This section
|
|
3182 discusses klinks.
|
|
3183
|
|
3184 @kindex Action Key, klink
|
|
3185 @cindex Action Key, klink
|
|
3186 @cindex klink, activating
|
|
3187 @cindex klink referent
|
|
3188 Press the Action Key over a klink to follow it. This will flash the
|
|
3189 klink as a button and then will display its referent in the other
|
|
3190 window. If the klink contains a view spec, that will be used when the
|
|
3191 referent is displayed.
|
|
3192
|
|
3193 @cindex klink, inserting
|
|
3194 @kindex C-c l
|
|
3195 There are a number of easy ways to insert klinks into koutlines. If you
|
|
3196 have mouse support under Hyperbole, simply click the Action Key within
|
|
3197 the indentation to the left of a cell text. If you then double click on
|
|
3198 some cell, a link to that cell will be inserted where you started. From
|
|
3199 a keyboard, use @{@kbd{C-c l}@} when in a koutline or @{@kbd{C-h h o
|
|
3200 l}@} when not in a koutline to insert a klink. Since klinks are
|
|
3201 implicit buttons, you can type in the text of the klink just as you see
|
|
3202 it in the examples below and it will work exactly as if it had been
|
|
3203 entered with the insert link command.
|
|
3204
|
|
3205 @cindex klink, formats
|
|
3206 @noindent
|
|
3207 There are basically three forms of klinks:
|
|
3208
|
|
3209 @table @bullet
|
|
3210 @cindex internal klink
|
|
3211 @cindex klink, internal
|
|
3212 @cindex <@@ klink>
|
|
3213 @item internal
|
|
3214 <@@ 2b=06> is an internal klink, since it refers to the koutline in which
|
|
3215 it is embedded. When activated, it jumps to the cell within the current
|
|
3216 outline which has permanent id `06' and relative id `2b'. <@@ 06> does
|
|
3217 the same thing, as does <@@ 2b>, though this latter form will not
|
|
3218 maintain the link properly if the cell is moved elsewhere within the
|
|
3219 outline. The form, <@@ 2b=06 |ben> additionally sets the view spec of
|
|
3220 the current outline back to the default value, with a blank line between
|
|
3221 each cell and all levels and lines of cells displayed.
|
|
3222
|
|
3223 @cindex external klink
|
|
3224 @cindex klink, external
|
|
3225 @item external
|
|
3226 The second klink format is an external link to another koutline, such
|
|
3227 as, <EXAMPLE.kotl, 3=012 |c1e>, which displays the named file, starting
|
|
3228 at the cell 3 (whose permanent identifer is 012), with the view
|
|
3229 specification of: blank lines turned off, cutoff after one line per
|
|
3230 cell, and show ellipses for cells or trees which are clipped.
|
|
3231
|
|
3232 @cindex klink, view spec
|
|
3233 @cindex view spec klink
|
|
3234 @item view spec
|
|
3235 The third format simply allows you to set a view spec for the current
|
|
3236 koutline. For example, <|ben>, when activated, sets the view in the
|
|
3237 current outline to display blank lines, ellipses following collapsed
|
|
3238 lines and standard alphanumeric numbering.
|
|
3239 @end table
|
|
3240
|
|
3241
|
|
3242 @node Cell Attributes, Outliner History, Links, Outliner
|
|
3243 @section Cell Attributes
|
|
3244
|
|
3245 @cindex cell, attribute
|
|
3246 @cindex attribute
|
|
3247 @dfn{Attributes} are named variables whose values are specific to a
|
|
3248 particular outline cell. Thus, each cell has its own attribute list.
|
|
3249 Every cell has three standard attributes:
|
|
3250
|
|
3251 @table @bullet
|
|
3252 @cindex idstamp attribute
|
|
3253 @item idstamp
|
|
3254 The permanent id of the cell, typically used in cross-file hyperlinks
|
|
3255 that reference the cell.
|
|
3256
|
|
3257 @cindex creator attribute
|
|
3258 @cindex e-mail address
|
|
3259 @cindex mail address
|
|
3260 @item creator
|
|
3261 The e-mail address of the person who created this cell.
|
|
3262
|
|
3263 @cindex create-time attribute
|
|
3264 @cindex cell, creation time
|
|
3265 @item create-time
|
|
3266 The time at which the cell was created. This is stored in a form that
|
|
3267 allows for easy data comparisons but is displayed in a human readable
|
|
3268 format, such as "Jan 28 18:27:59 CST 1994".
|
|
3269 @end table
|
|
3270
|
|
3271 @kindex C-c C-i
|
|
3272 @cindex attribute, adding
|
|
3273 @cindex attribute, modifying
|
|
3274 @cindex attribute, removing
|
|
3275 @{@kbd{C-c C-i}@} is the command to add an attribute to or to modify an
|
|
3276 existing attribute in the cell at point. Think of it as inserting an
|
|
3277 attribute value. To remove an attribute from cell, set its value to
|
|
3278 @code{nil}.
|
|
3279
|
|
3280
|
|
3281 @cindex attribute, no-fill
|
|
3282 @cindex cell, no-fill attribute
|
|
3283 @cindex no-fill attribute
|
|
3284 @vindex kotl-mode:refill-flag
|
|
3285 The `no-fill' attribute is special. When added with a non-nil value, it
|
|
3286 prevents moving, promoting, demoting, exchanging, splitting and
|
|
3287 appending cells from refilling the cell, even if the variable,
|
|
3288 @var{kotl-mode:refill-flag}, is set to t. It does not prevent you from
|
|
3289 invoking explicit commands that refill the cell. @xref{Filling}.
|
|
3290
|
|
3291 @kindex Assist Key, listing attributes
|
|
3292 @cindex Assist Key, listing attributes
|
|
3293 @cindex listing attributes
|
|
3294 @cindex outline, attribute list
|
|
3295 The attribute lists for the cells in the tree rooted at point can be
|
|
3296 displayed by pressing the Assist Key within the contents of a cell.
|
|
3297
|
|
3298 @kindex C-c h
|
|
3299 @kindex C-u C-c h
|
|
3300 @{@kbd{C-c h}@} prompts for a cell label and displays the cell's
|
|
3301 attributes. @{@kbd{C-u C-c h}@} prompts for a cell label and displays
|
|
3302 the attributes for it and its subtree; use 0 as the kcell id to see
|
|
3303 attributes for all visible cells in the outline.
|
|
3304
|
|
3305
|
|
3306 @node Outliner History, , Cell Attributes, Outliner
|
|
3307 @section Outliner History
|
|
3308
|
|
3309 @cindex NLS
|
|
3310 @cindex Augment
|
|
3311 @cindex Engelbart
|
|
3312 Much of the Hyperbole outliner design is based upon concepts pioneered
|
|
3313 in the NLS/Augment system, @cite{[Eng84a]}. Augment treated documents as
|
|
3314 a hierarchical set of nodes, called statements, rather than cells.
|
|
3315 Every Augment document utilized this intrinsic structure.
|
|
3316
|
|
3317 @cindex distributed collaboration
|
|
3318 @cindex collaboration
|
|
3319 The system could rapidly change the view of a document by collapsing,
|
|
3320 expanding, generating, clipping, filtering, including or reordering
|
|
3321 these nodes. It could also map individual views to multiple workstation
|
|
3322 displays across a network to aid in distributed, collaborative work.
|
|
3323
|
|
3324 @cindex knowledge transfer
|
|
3325 @cindex idea structuring
|
|
3326 @cindex cross referencing
|
|
3327 These facilities aided greatly in idea structuring, cross-referencing,
|
|
3328 and knowledge transfer. The Koutliner is a start at bringing
|
|
3329 these capabilities back into the mainstream of modern computing culture.
|
|
3330
|
|
3331
|
|
3332 @node Rolodex, Window Configurations, Outliner, Top
|
|
3333 @chapter Rolodex
|
|
3334
|
|
3335 @cindex rolodex
|
|
3336 @cindex wrolo
|
|
3337 Hyperbole includes a complete, advanced rolodex system, Wrolo, for
|
|
3338 convenient management of hierarchical, record-oriented information.
|
|
3339
|
|
3340 @cindex rolo, buttons in
|
|
3341 Hyperbole buttons may be included within rolodex records and then
|
|
3342 manually activated whenever their records are retrieved.
|
|
3343
|
|
3344 @vindex file, wrolo.el
|
|
3345 See the description at the top of the @file{wrolo.el} file for
|
|
3346 details on programmatic interfacing to the rolodex. The following
|
|
3347 subsections explain use and basic customization of the rolodex.
|
|
3348
|
|
3349 @menu
|
|
3350 * Rolo Concepts::
|
|
3351 * Rolo Menu::
|
|
3352 * Rolo Keys::
|
|
3353 * Rolo Settings::
|
|
3354 @end menu
|
|
3355
|
|
3356 @node Rolo Concepts, Rolo Menu, Rolodex, Rolodex
|
|
3357 @section Rolo Concepts
|
|
3358
|
|
3359 @cindex rolodex file
|
|
3360 @cindex rolodex entry
|
|
3361 The rolodex manages and searches rolodex files. A @dfn{rolodex file}
|
|
3362 consists of an optional header which starts and ends with a line of
|
|
3363 equal signs (at least three equal signs starting at the beginning of a
|
|
3364 line), followed by any non-negative number of rolodex records. You must
|
|
3365 manually add a header to any rolodex file if you want it to have one.
|
|
3366
|
|
3367 @noindent
|
|
3368 Here is an example of a simple rolodex file.
|
|
3369
|
|
3370 @example
|
|
3371 @group
|
|
3372 ==================================================================
|
|
3373 PERSONAL ROLODEX
|
|
3374 <Last-Name>, <First> <Email> W<Work#> F<Fax#>
|
|
3375 ==================================================================
|
|
3376 * Smith, John <js@@hiho.com> W708-555-2001 F708-321-1492
|
|
3377 Chief Ether Maintainer, HiHo Industries
|
|
3378 10/24/95
|
|
3379 @end group
|
|
3380 @end example
|
|
3381
|
36
|
3382 We call rolodex records, @dfn{entries}. Entries begin with a delimiter
|
|
3383 of one or more `*' characters at the beginning of a line. Entries may
|
0
|
3384 be arranged in a hierarchy, where child entries begin with one more `*'
|
36
|
3385 character than do their parents. Top level entries begin with a single
|
0
|
3386 `*'.
|
|
3387
|
|
3388 Beyond this initial delimiter, entries are completely free-form text.
|
|
3389 It is best to use a "lastname, firstname" format, however, when adding
|
|
3390 contact entries into a rolodex. Then the rolodex system will
|
|
3391 automatically keep your entries alphabetized as you enter them. You'll
|
36
|
3392 also be able to sort them whenever you desire. This is what the
|
|
3393 rolodex will use if you accept the default entry that it prompts you
|
|
3394 with when adding a new entry.
|
0
|
3395
|
|
3396 Any search done on the rolodex scans the full text of each entry.
|
|
3397 During a search, the rolodex file header separator lines and anything in
|
|
3398 between are appended to the buffer of matched entries before any entries
|
|
3399 are retrieved from the file. Whenever an entry is matched, it and all
|
|
3400 of its descendant entries are retrieved. If your Emacs version supports
|
|
3401 textual highlighting, each search match is highlighted for quick, visual
|
|
3402 location.
|
|
3403
|
|
3404 @noindent
|
|
3405 For example, a search on "Company" could retrieve the following:
|
|
3406
|
|
3407 @example
|
|
3408 @group
|
|
3409 ==================================================================
|
|
3410 COMPANY ROLODEX
|
|
3411 ==================================================================
|
|
3412 * Company
|
|
3413 ** Manager
|
|
3414 *** Underlings
|
|
3415 @end group
|
|
3416 @end example
|
|
3417
|
|
3418 @noindent
|
|
3419 Thus, searching for Company retrieves all listed employees.
|
|
3420 Searching for Manager turns up all Underlings.
|
|
3421
|
|
3422
|
|
3423 @node Rolo Menu, Rolo Keys, Rolo Concepts, Rolodex
|
|
3424 @section Rolo Menu
|
|
3425
|
|
3426 @cindex rolodex menu
|
|
3427 The Rolo/ menu entry on the Hyperbole top-level menu provides the
|
|
3428 user interface to the rolodex. The rolo menu provides access to the
|
|
3429 following commands:
|
|
3430
|
|
3431 @cindex rolodex commands
|
|
3432 @cindex Wrolo commands
|
|
3433 @findex rolo-add
|
|
3434 @findex rolo-display-matches
|
|
3435 @findex rolo-edit
|
|
3436 @findex rolo-kill
|
|
3437 @findex rolo-mail-to
|
|
3438 @findex rolo-sort
|
|
3439 @findex rolo-grep
|
|
3440 @findex rolo-fgrep
|
|
3441 @findex rolo-word
|
|
3442 @findex rolo-yank
|
10
|
3443 @example
|
|
3444 @group
|
0
|
3445 Menu Item Command Description
|
|
3446 ====================================================================
|
|
3447 Add rolo-add Adds a rolodex entry
|
|
3448 Display rolo-display-matches Displays last matches again
|
|
3449 Edit rolo-edit Edits an existing rolodex entry
|
|
3450 Info Displays Rolodex manual entry
|
|
3451 Kill rolo-kill Removes an entry from the rolodex
|
|
3452 Mail rolo-mail Mail to address following point
|
|
3453 Order rolo-sort Sorts all levels in rolodex
|
|
3454 RegexFind rolo-grep Finds all entries containing
|
|
3455 a regular expression
|
|
3456 StringFind rolo-fgrep Finds all entries containing
|
|
3457 a string
|
|
3458 WordFind rolo-word Finds all entries containing
|
|
3459 a string of whole words
|
|
3460 Yank rolo-yank Inserts first matching rolodex
|
|
3461 entry at point
|
|
3462 ====================================================================
|
|
3463 @end group
|
|
3464 @end example
|
|
3465
|
|
3466 A prefix argument used with either of the find commands listed above
|
|
3467 limits the search to a maximum number of matches given by the argument.
|
|
3468 The search is terminated whenever that number of matches is found.
|
|
3469
|
|
3470 For any of the above commands that prompt for a name, you may use the
|
|
3471 form parent/child to locate a child entry below a parent entry. So for
|
|
3472 a rolodex which looked like so:
|
|
3473
|
|
3474 @example
|
|
3475 @group
|
|
3476 * Company
|
|
3477 ** Manager
|
|
3478 *** Underlings
|
|
3479 @end group
|
|
3480 @end example
|
|
3481
|
|
3482 @noindent
|
|
3483 You could edit the Underlings entry by identifying it as
|
|
3484 Company/Manager/Underlings. Do not use this hierarchical notation in
|
|
3485 search expressions since the whole rolodex will be searched anyway.
|
|
3486 Thus, "Underlings" as a search pattern will find an entry containing
|
|
3487 "Underlings" at any level in a hierarchy, like so:
|
|
3488
|
|
3489 @example
|
|
3490 *** Underlings
|
|
3491 @end example
|
|
3492
|
|
3493 @node Rolo Keys, Rolo Settings, Rolo Menu, Rolodex
|
|
3494 @section Rolo Keys
|
|
3495
|
|
3496 @kindex e
|
36
|
3497 @cindex rolodex, editing
|
|
3498 @cindex datestamps
|
|
3499 @cindex rolodex, datestamps
|
|
3500 @cindex customization, rolodex datestamps
|
|
3501 @cindex menu, Toggle-Rolo-Dates
|
|
3502 @cindex customization, rolodex edits
|
|
3503 @cindex customization, rolodex additions
|
|
3504 @vindex wrolo-edit-hook
|
|
3505 @vindex wrolo-add-hook
|
0
|
3506 Use the @{@kbd{e}@} key to edit the entry at point within the rolodex
|
36
|
3507 source file. A datestamp will be automatically added or updated at the
|
|
3508 end of the entry, unless this feature has been turned off via the
|
|
3509 Cust/Toggle-Rolo-Dates menu item. The variable, @var{wrolo-edit-hook},
|
|
3510 is evaluated after the update of the entry datestamp. This allows
|
|
3511 programmed modification of the way rolodex edits work. The variable,
|
|
3512 @var{wrolo-add-hook}, works the same way but is evaluated when a new
|
|
3513 entry is first added.
|
0
|
3514
|
|
3515 @cindex wrolo menu
|
|
3516 @cindex rolodex keys
|
|
3517 After a rolodex search is performed, point is left in the @dfn{rolodex
|
|
3518 match buffer}, @file{*Rolodex*}, which uses @code{wrolo-mode} to
|
|
3519 simplify browsing many rolodex matches. Press @{@kbd{?}@} when in the
|
|
3520 match buffer for a summary of available keys.
|
|
3521
|
|
3522 @kindex TAB
|
|
3523 @kindex M-TAB
|
|
3524 @kindex r
|
|
3525 @cindex rolodex, highlighting matches
|
|
3526 @cindex rolodex, finding matches
|
|
3527 @cindex rolodex, moving through matches
|
|
3528 If your Emacs version supports textual highlighting, each search match
|
|
3529 is highlighted for quick, visual location. @{@key{TAB}@} moves point
|
|
3530 forward to successive spans of text which match the search expression.
|
|
3531 @{@kbd{M-@key{TAB}}@} or @{@kbd{r}@} moves point backward to earlier
|
|
3532 matches. These keys allow you to quickly find the matching entry of
|
|
3533 most interest to you if your search expression failed to narrow the
|
|
3534 matches sufficiently.
|
|
3535
|
|
3536 @kindex M-s
|
|
3537 @kindex C-r
|
|
3538 @cindex rolodex, extending a match
|
|
3539 @cindex rolodex, interactive searching
|
|
3540 If you want to extend the match expression with some more characters to
|
|
3541 find a particular entry, use @{@kbd{M-s}@}, which performs an
|
|
3542 interactive search forward for the match expression. You can add or
|
|
3543 delete characters to this expression to find different occurences.
|
|
3544 @{@kbd{C-r}@} will reverse the direction of the search.
|
|
3545
|
|
3546 @kindex a
|
|
3547 @kindex h
|
|
3548 @kindex s
|
|
3549 @kindex t
|
|
3550 @cindex rolodex, outlining
|
|
3551 Single key outlining commands are also available for browsing matches.
|
|
3552 If your search matches a large number of entries, use
|
|
3553 @{@kbd{t}@} to get a top-level overview of all the entries. Each entry
|
|
3554 is collapsed so that only its first line shows. Press @{@kbd{s}@} to
|
|
3555 show (expand) the entry at point. Use @{@kbd{h}@} to hide (collapse)
|
|
3556 the entry again. Press @{@kbd{a}@} to expand all entries in the buffer.
|
|
3557
|
|
3558 Many other keys are defined to help you move through matching entries.
|
|
3559
|
|
3560 @cindex rolodex, moving to entries
|
|
3561 @table @kbd
|
|
3562 @kindex b
|
|
3563 @item b
|
|
3564 Move to the previous entry at the same level as the current entry.
|
|
3565 @kindex f
|
|
3566 @item f
|
|
3567 Move to the next entry at the same level as the current entry.
|
|
3568 @kindex n
|
|
3569 @item n
|
|
3570 Move to the next entry at any level.
|
|
3571 @kindex p
|
|
3572 @item p
|
|
3573 Move to the previous entry at any level.
|
|
3574 @kindex u
|
|
3575 @item u
|
24
|
3576 Move the the previous entry one level up.
|
0
|
3577 @kindex .
|
|
3578 @kindex <
|
|
3579 @item .
|
|
3580 @itemx <
|
|
3581 Move to the beginning of the buffer.
|
|
3582 @kindex ,
|
|
3583 @kindex >
|
|
3584 @item ,
|
|
3585 @itemx >
|
|
3586 Move to the end of the buffer.
|
|
3587 @kindex @key{DEL}
|
|
3588 @item @key{DEL}
|
|
3589 Scroll backward a windowful.
|
|
3590 @kindex @key{SPC}
|
|
3591 @item @key{SPC}
|
|
3592 Scroll forward a windowful.
|
|
3593 @end table
|
|
3594
|
|
3595 @kindex q
|
|
3596 @cindex rolodex, quitting
|
|
3597 Once you have found an entry of interest and you want to remove the
|
|
3598 rolodex match buffer, use @{@kbd{q}@} to quit. This will restore your
|
|
3599 current frame to its state prior to the rolodex search.
|
|
3600
|
|
3601 @node Rolo Settings, , Rolo Keys, Rolodex
|
|
3602 @section Rolo Settings
|
|
3603
|
|
3604 @vindex rolo-highlight-face
|
|
3605 @cindex rolodex, highlighting matches
|
|
3606 If textual highlighting is available in your Emacs on your current
|
|
3607 display type, the rolodex uses the value of @var{rolo-highlight-face} as
|
|
3608 the face to use to highlight search matches.
|
|
3609
|
|
3610 @vindex rolo-kill-buffers-after-use
|
|
3611 The buffers containing the rolodex files are not killed after a search
|
|
3612 on the assumption that another search is likely to follow within this
|
|
3613 Emacs session. You may wish to change this behavior with the following
|
|
3614 setting: @code{(setq rolo-kill-buffers-after-use t)}.
|
|
3615
|
|
3616 @vindex rolo-save-buffers-after-use
|
|
3617 After an entry is killed, the modified rolodex file is automatically
|
|
3618 saved. If you would rather always save files yourself, use this
|
|
3619 setting: @code{(setq rolo-save-buffers-after-use nil)}.
|
|
3620
|
|
3621 @vindex rolo-email-format
|
36
|
3622 When adding an entry from within a buffer that contains a mail message,
|
|
3623 the rolodex add function will extract the sender's name and e-mail address
|
0
|
3624 and prompt you with the name as a default. If you accept it, it will
|
|
3625 enter the name and the email address using the format given by the
|
|
3626 @var{rolo-email-format} variable. See its documentation if you want to
|
|
3627 change its value.
|
|
3628
|
|
3629 @vindex rolo-file-list
|
|
3630 @cindex rolodex, personal
|
|
3631 The files used in any rolodex search are given by the
|
|
3632 @var{rolo-file-list} variable, whose default value is
|
|
3633 @code{("~/.rolodex.otl")}, so that searches initially scan only your
|
|
3634 personal rolodex. Any entries added to this list should be file
|
|
3635 pathnames. If a file in the list does not exist or is not readable, it
|
|
3636 is skipped. Files are searched in the order in which they appear in the
|
|
3637 list. In general, you should leave your personal rolodex file as the
|
|
3638 first entry in the list, since this is the only file to which the rolo
|
|
3639 menu Add command adds entries.@refill
|
|
3640
|
|
3641 @vindex rolo-entry-regexp
|
|
3642 The rolodex entry start delimiter is given by the regular expression
|
|
3643 variable, @var{rolo-entry-regexp}, whose default value is "^\*+".
|
|
3644
|
|
3645 @vindex rolo-hdr-regexp
|
|
3646 A rolodex file may begin with an optional header section which is copied
|
|
3647 to the match display buffer whenever any matches are found during a
|
|
3648 search. The start and end lines of this header are controlled by
|
|
3649 the regular expression variable, @var{rolo-hdr-regexp}, whose default
|
|
3650 value is "^===". This allows lines of all equal signs to visually
|
|
3651 separate matching entries from multiple files retrieved from a single
|
|
3652 search.
|
|
3653
|
|
3654 @node Window Configurations, Developing with Hyperbole, Rolodex, Top
|
|
3655 @chapter Window Configurations
|
|
3656
|
|
3657 @cindex window configurations
|
|
3658 @cindex restoring windows
|
|
3659 @cindex saving window configurations
|
|
3660 @vindex file, wconfig.el
|
|
3661 Hyperbole includes the @file{wconfig.el} package which lets you save and
|
|
3662 restore window configurations, i.e@. the window layout and buffers
|
|
3663 displayed within an Emacs frame. This is useful to save a particular
|
|
3664 working context and then to jump back to it at a later time during an
|
|
3665 Emacs session. It is also useful during demonstrations to pull up many
|
|
3666 informational artifacts all at once, e.g@. all of the windows for a
|
|
3667 particular subsystem. None of this information is stored between Emacs
|
|
3668 sessions, so your window configurations will last only through a single
|
|
3669 session of use.
|
|
3670
|
|
3671 The wconfig library provides two distinct means of managing window
|
|
3672 configurations. The first means associates a name with each stored
|
|
3673 window configuration. The name can then be used to retrieve the window
|
|
3674 configuration later. The second means uses a ring structure to save
|
|
3675 window configurations and then allows browsing through the sequence of
|
|
3676 saved configurations.
|
|
3677
|
|
3678 The Win/ menu entry on the Hyperbole top-level menu displays a menu of
|
|
3679 window configuration commands:
|
|
3680
|
|
3681 @noindent
|
|
3682 @display
|
|
3683 WinConfig> AddName DeleteName RestoreName PopRing SaveRing YankRing
|
|
3684 @end display
|
|
3685
|
10
|
3686 @cindex wconfig commands
|
|
3687 @cindex window configuration commands
|
0
|
3688 @findex wconfig-add-by-name
|
|
3689 @findex wconfig-delete-by-name
|
|
3690 @findex wconfig-restore-by-name
|
|
3691 @findex wconfig-delete-pop
|
|
3692 @findex wconfig-ring-save
|
|
3693 @findex wconfig-yank-pop
|
24
|
3694 @example
|
|
3695 @group
|
0
|
3696 Menu Item Command Description
|
|
3697 ====================================================================
|
|
3698 AddName wconfig-add-by-name Name current wconfig
|
|
3699 DeleteName wconfig-delete-by-name Delete wconfig with name
|
|
3700 RestoreName wconfig-restore-by-name Restore wconfig by name
|
|
3701
|
|
3702 PopRing wconfig-delete-pop Restore and delete wconfig
|
|
3703 SaveRing wconfig-ring-save Store wconfig to ring
|
|
3704 YankRing wconfig-yank-pop Restore next wconfig
|
|
3705 ====================================================================
|
|
3706 @end group
|
|
3707 @end example
|
|
3708
|
|
3709 Saving and restoring window configurations by name is the easiest
|
|
3710 method, but it requires that you input the chosen name from the
|
|
3711 keyboard. The ring commands permit saving and restoring through mouse
|
|
3712 interaction only, if so desired. The prior section, @ref{Smart Keys},
|
|
3713 mentions how to save and restore window configurations with the Smart Keys.
|
|
3714 Since the ring commands are a bit more complex than their by-name
|
|
3715 counterparts, the following paragraphs explain them in more detail.
|
|
3716
|
|
3717 @vindex kill-ring
|
|
3718 Wconfig creates a ring structure that operates just like the Emacs
|
|
3719 @var{kill-ring}, @ref{Kill Ring,,,emacs, The GNU Emacs Manual}, but its
|
|
3720 elements are window configurations rather than text regions. One can
|
|
3721 add an element to the ring based upon the current window configuration.
|
|
3722 After several elements are in the ring, one can walk through all of them
|
|
3723 in sequence until the desired configuration is restored.
|
|
3724
|
|
3725 @findex wconfig-ring-save
|
|
3726 SaveRing executes the @code{wconfig-ring-save} command which
|
|
3727 saves the current window configuration to the ring.
|
|
3728
|
|
3729 @findex wconfig-yank-pop
|
|
3730 YankRing executes the @code{wconfig-yank-pop} command. It restores the
|
|
3731 window configuration from the currently pointed to configuration in the
|
|
3732 ring. It does not delete this configuration from the ring but it does
|
|
3733 move the pointer to the prior ring element. Repeated calls to this
|
|
3734 command thus restore successive window configurations until the ring
|
|
3735 pointer wraps around. Simply stop when a desired configuration appears
|
|
3736 and use @{@kbd{q}@} to quit from the minibuffer menu.
|
|
3737
|
|
3738 @findex wconfig-delete-pop
|
|
3739 PopRing calls the @code{wconfig-delete-pop} command.
|
|
3740 It is used to restore a previously saved configuration and at the same
|
|
3741 time delete it from the ring. Simply stop when a desired configuration
|
|
3742 appears and use @{@kbd{q}@} to quit from the minibuffer menu.
|
|
3743
|
|
3744 @vindex wconfig-ring-max
|
|
3745 The maximum number of elements the ring can hold is set by the
|
|
3746 @var{wconfig-ring-max} variable whose default is 10. Any saves beyond
|
|
3747 this value cause deletion of the oldest element in the ring before
|
|
3748 a new one is added.
|
|
3749
|
|
3750 @node Developing with Hyperbole, Glossary, Window Configurations, Top
|
|
3751 @chapter Developing with Hyperbole
|
|
3752
|
|
3753 This chapter is only for people who are familiar with Emacs Lisp and
|
|
3754 wish to customize Hyperbole, to extend it, or to develop other systems
|
|
3755 using Hyperbole as a base.
|
|
3756
|
|
3757 @menu
|
|
3758 * Hook Variables::
|
|
3759 * Creating Types::
|
|
3760 * Explicit Button Technicalities::
|
|
3761 * Encapsulating Systems::
|
|
3762 * Embedding Hyperbole::
|
|
3763 @end menu
|
|
3764
|
|
3765 @node Hook Variables, Creating Types, Developing with Hyperbole, Developing with Hyperbole
|
|
3766 @section Hook Variables
|
|
3767
|
|
3768 @cindex variables
|
|
3769 @cindex hook variables
|
|
3770 Hyperbole provides a number of hook variables that allow you to adjust
|
|
3771 its basic operations to meet your own needs, without requiring you to
|
|
3772 change the code for those operations.
|
|
3773
|
|
3774 We find it best to always set the value of hook variables either to nil
|
|
3775 or to a list of function names of no arguments, each of which will be
|
|
3776 called in sequence when the hook is triggered.
|
|
3777
|
|
3778 Given the name of a function, a Hyperbole hook variable triggered within
|
|
3779 that function has the same name as the function with a @code{-hook}
|
|
3780 appended. Hyperbole provides the following hook variables:
|
|
3781
|
|
3782 @table @var
|
|
3783
|
|
3784 @vindex hyperb:init-hook
|
|
3785 @item hyperb:init-hook
|
|
3786 For customization at Hyperbole initialization time. Use this to load
|
|
3787 any personal Hyperbole type definitions you might have. It is run after
|
|
3788 Hyperbole support code is loaded but before Hyperbole session
|
|
3789 initializations take place.
|
|
3790
|
|
3791 @vindex action:act-hook
|
|
3792 @vindex hbut:current
|
|
3793 @item action:act-hook
|
|
3794 Run before each Hyperbole button activation.
|
|
3795 The variable @var{hbut:current} contains the button to be activated when
|
|
3796 this is run.
|
|
3797
|
|
3798 @vindex ebut:create-hook
|
|
3799 @item ebut:create-hook
|
|
3800 To add to the Hyperbole explicit button creation process.
|
|
3801
|
|
3802 @vindex ebut:delete-hook
|
|
3803 @item ebut:delete-hook
|
|
3804 To add to the Hyperbole explicit button deletion process.
|
|
3805
|
|
3806 @vindex ebut:modify-hook
|
|
3807 @item ebut:modify-hook
|
|
3808 Executed when an explicit button's attributes are modified.
|
|
3809
|
|
3810 @vindex hibtypes:begin-load-hook
|
|
3811 @item hibtypes:begin-load-hook
|
|
3812 Executed prior to loading of standard Hyperbole implicit button types.
|
|
3813 Used to load site-specific low priority implicit button types since
|
|
3814 lowest priority ibtypes are loaded first.
|
|
3815
|
|
3816 @vindex hibtypes:end-load-hook
|
|
3817 @item hibtypes:end-load-hook
|
|
3818 Executed after loading of standard Hyperbole implicit button types.
|
|
3819 Used to load site-specific high priority implicit button types since
|
|
3820 highest priority ibtypes are loaded last.
|
|
3821
|
|
3822 @vindex htype:create-hook
|
|
3823 @item htype:create-hook
|
|
3824 Executed when a Hyperbole type (e.g@. action type or implicit button
|
|
3825 type) is added to the environment.
|
|
3826
|
|
3827 @vindex htype:delete-hook
|
|
3828 @item htype:delete-hook
|
|
3829 Executed when a type is deleted from the environment.
|
|
3830
|
|
3831 @vindex kotl-mode-hook
|
|
3832 @item kotl-mode-hook
|
|
3833 Executed when a Koutline is created or read in or when kotl-mode is
|
|
3834 invoked.
|
|
3835
|
|
3836 @vindex wrolo-display-hook
|
|
3837 @item wrolo-display-hook
|
|
3838 Executed when rolodex matches are displayed.
|
|
3839
|
|
3840 @vindex wrolo-mode-hook
|
|
3841 @item wrolo-mode-hook
|
|
3842 Executed when a rolodex match buffer is created and put into wrolo-mode.
|
|
3843
|
|
3844 @vindex wrolo-yank-reformat-function
|
|
3845 @cindex yank, reformatting
|
|
3846 @item wrolo-yank-reformat-function
|
|
3847 A variable whose value may be set to a function of two arguments, START
|
|
3848 and END, indicating the region of the rolodex entry yanked into the
|
|
3849 current buffer by the rolo-yank command. The function may reformat this
|
|
3850 region to meed user-specific needs.
|
|
3851
|
|
3852 @end table
|
|
3853
|
|
3854 @noindent
|
|
3855 Hyperbole also makes use of a number of external Emacs hook variables.
|
|
3856
|
|
3857 @table @var
|
|
3858
|
|
3859 @vindex find-file-hooks
|
|
3860 @cindex button highlighting
|
|
3861 @item find-file-hooks
|
|
3862 This is called whenever a file is read into a GNU Emacs buffer.
|
|
3863 Hyperbole uses it to highlight any buttons within files when run under
|
|
3864 any NEXTSTEP or X window system-based versions of GNU Emacs.
|
|
3865
|
|
3866 @vindex write-file-hooks
|
|
3867 @cindex button data saving
|
|
3868 @item write-file-hooks
|
|
3869 This is called whenever a GNU Emacs buffer is written to a file.
|
|
3870 Hyperbole uses it to save any modified button data associated with the
|
|
3871 file's directory.
|
|
3872
|
|
3873 @cindex mail hooks
|
|
3874 @cindex news hooks
|
|
3875 Hyperbole mail and news facilities also utilize a number of external hook
|
|
3876 variables. These hide button data and highlight buttons if possible.
|
|
3877 See the various support files for details.
|
|
3878 @end table
|
|
3879
|
|
3880 @node Creating Types, Explicit Button Technicalities, Hook Variables, Developing with Hyperbole
|
|
3881 @section Creating Types
|
|
3882
|
|
3883 @cindex type definition
|
|
3884 @cindex type redefinition
|
|
3885 @noindent
|
|
3886 To define or redefine a single Hyperbole type, you may either:
|
|
3887
|
|
3888 @itemize @bullet
|
|
3889 @kindex C-M-x
|
|
3890 @findex eval-defun
|
|
3891 @kindex C-x C-e
|
|
3892 @findex eval-last-sexp
|
|
3893 @item
|
|
3894 move your Emacs point to within the type definition and use
|
|
3895 @{@kbd{C-M-x}@} @code{(eval-defun)} (only works in Emacs Lisp mode);
|
|
3896
|
|
3897 @item
|
|
3898 or move your point to the end of the last line of the type definition and
|
|
3899 use @{@kbd{C-x C-e}@} @code{(eval-last-sexp)} (works in most modes).
|
|
3900 @end itemize
|
|
3901
|
|
3902 @cindex Hyperbole types
|
|
3903 @vindex class, htype
|
|
3904 The functions from the @code{htype} class may be applied to any
|
|
3905 Hyperbole types, if needed.
|
|
3906
|
|
3907 @vindex file, hactypes.el
|
|
3908 @vindex file, hibtypes.el
|
|
3909 The following subsections explain the specifics of Hyperbole type
|
|
3910 definitions which are beyond standard practice for Emacs Lisp programming.
|
|
3911 See the definitions of the standard types in @file{hactypes.el}
|
|
3912 and @file{hibtypes.el} for examples.
|
|
3913
|
|
3914 @menu
|
|
3915 * Action Type Creation::
|
|
3916 * Implicit Button Types::
|
|
3917 @end menu
|
|
3918
|
|
3919 @node Action Type Creation, Implicit Button Types, Creating Types, Creating Types
|
|
3920 @subsection Action Type Creation
|
|
3921
|
|
3922 @findex actype:create
|
|
3923 @vindex file, hactypes.el
|
|
3924 @vindex file, hbut.el
|
|
3925 New forms of explicit buttons may be created by adding new action types
|
|
3926 to a Hyperbole environment. The file, @file{hactypes.el}, provides
|
|
3927 many examples of working action types.
|
|
3928
|
|
3929 @cindex action type, creation
|
|
3930 @findex defact
|
|
3931 @findex actype:create
|
|
3932 An action type is created, i.e@. loaded into the Hyperbole environment,
|
|
3933 with the @code{(defact)} function (which is an alias for
|
|
3934 @code{(actype:create)}). The calling signature for this function is
|
|
3935 given in its documentation; it is the same as that of @code{(defun)}
|
|
3936 except that a documentation string is required. (An interactive calling
|
|
3937 form is also required if the action type has formal parameters and is to
|
|
3938 be used in explicit button definitions. Implicit buttons never use an
|
|
3939 action type's interactive form. It is good practice to include an
|
|
3940 interactive form since the type creator cannot know how users may choose
|
|
3941 to apply the type.)@refill
|
|
3942
|
|
3943 An action type's parameters are used differently than those of a
|
|
3944 function being called. Its interactive calling form is used when an
|
|
3945 explicit button is created to prompt for type-specific button
|
|
3946 attributes. The rest of its body is used when a button with that action
|
|
3947 type is activated. Then the button attributes together with the action
|
|
3948 type body are used to form an action that is executed in response to the
|
|
3949 button activation. The action's result is returned to the action caller
|
|
3950 unless it returns nil, in which case t is returned to the caller to
|
|
3951 ensure that it registers the performance of the action.
|
|
3952
|
|
3953 An action type body may perform any computation using Emacs Lisp and
|
|
3954 Hyperbole functions.
|
|
3955
|
|
3956 @cindex interactive form
|
|
3957 @findex interactive
|
|
3958 The interactive calling form for an action type is of the same form as
|
|
3959 that of a regular Emacs Lisp function definition (see the documentation
|
|
3960 for the Emacs Lisp @code{(interactive)} form). It may additionally use
|
|
3961 Hyperbole command character extensions when the form is given as a
|
|
3962 string. Each such extension character @emph{must} be preceded by a plus
|
|
3963 sign, @code{+}, in order to be recognized since such characters may also
|
|
3964 have standard interactive form meanings.
|
|
3965
|
|
3966 The present Hyperbole extension characters are:
|
|
3967
|
|
3968 @table @strong
|
|
3969 @cindex argument, Info node
|
|
3970 @cindex interactive cmd char, +I
|
|
3971 @item +I
|
|
3972 Prompts for an existing Info node name and file.
|
|
3973
|
|
3974 @cindex argument, kcell
|
|
3975 @cindex argument, koutline
|
|
3976 @cindex interactive cmd char, +K
|
|
3977 @item +K
|
|
3978 Prompts for an existing kcell identifier, either a full outline level
|
|
3979 identifier or a permanent idstamp.
|
|
3980
|
|
3981 @cindex interactive cmd char, +M
|
|
3982 @cindex argument, mail message
|
|
3983 @item +M
|
|
3984 Prompts for a mail message date and the file name it resides in.
|
|
3985 The mail parameters prompted for by this character code are likely to
|
|
3986 change in the future.
|
|
3987
|
|
3988 @cindex argument, view spec
|
|
3989 @cindex interactive cmd char, +V
|
|
3990 @item +V
|
|
3991 Prompts for a Hyperbole view specification.
|
|
3992 Not yet available for use.
|
|
3993
|
|
3994 @end table
|
|
3995
|
|
3996 @vindex class, hargs
|
|
3997 @cindex argument, reading
|
|
3998 Arguments are read by the functions in Hyperbole's @code{hargs} class,
|
|
3999 rather than the standard Lisp @code{read} functions, in order to allow
|
|
4000 direct selection of arguments via the Action Key.
|
|
4001
|
|
4002 If an action type create is successful, the symbol that Hyperbole uses
|
|
4003 internally to reference the type is returned. @code{Nil} is returned on
|
|
4004 failure so that you may test whether or not the operation succeeds.
|
|
4005
|
|
4006 Once you have defined an action type within your present Hyperbole
|
|
4007 environment, you can create new explicit buttons which use it. There is
|
|
4008 no explicit button type beyond its action type, so no further work is
|
|
4009 necessary.
|
|
4010
|
|
4011 @findex actype:delete
|
|
4012 Call @code{(actype:delete)} to remove an action type from a Hyperbole
|
|
4013 environment. It takes a single parameter which should be the same type
|
|
4014 symbol used in the type definition call (not the Hyperbole symbol
|
|
4015 returned by the call).
|
|
4016
|
|
4017 @node Implicit Button Types, , Action Type Creation, Creating Types
|
|
4018 @subsection Implicit Button Types
|
|
4019
|
|
4020 @cindex implicit button type
|
|
4021 @cindex ibtype
|
|
4022 @findex defib
|
|
4023 @findex ibtype:create
|
|
4024 An implicit button type is created or loaded via the @code{(defib)}
|
|
4025 function (which is an alias for @code{(ibtype:create)}). The calling
|
|
4026 signature for this function is given in its documentation; it is the
|
|
4027 same as that of @code{(defun)}, but with a number of constraints. The
|
|
4028 parameter list should always be empty since no parameters will be used.
|
|
4029 A documentation string is required. The type's body follows this.
|
|
4030
|
|
4031 @cindex ibtype, predicate
|
|
4032 @cindex ibtype, argument
|
|
4033 @cindex ibtype, return val
|
|
4034 @cindex ibtype, actype
|
|
4035 The body of an implicit button type is a predicate which determines
|
|
4036 whether or not point is within an implicit button of the type. If not,
|
|
4037 the predicate returns @code{nil}. If so, it may optionally setup to
|
|
4038 flash the button and then perform one or more actions. A call of the
|
|
4039 form: @code{(ibut:label-set label start-pos end-pos)} is used to setup
|
|
4040 the button flashing, if desired. This is then typically immediately
|
|
4041 followed by an action invocation of the form:
|
|
4042 @code{(hact 'actype &rest actype-arguments)}. It is imperative that all
|
|
4043 actions (non-predicate code) be invoked through the @code{(hact)}
|
|
4044 function rather than directly or your ibtypes will not work properly.
|
|
4045 (Hyperbole first tests to see if any ibtype matches the current context
|
|
4046 before activating any type, so it ensures that @code{(hact)} calls are
|
|
4047 disabled during this testing.) Any action types used may be created
|
|
4048 before or after the implicit button type definition but obviously should
|
|
4049 be defined before any implicit buttons of the given type are activated;
|
|
4050 an error will result, otherwise.
|
|
4051
|
|
4052 If an implicit button type create is successful, the symbol that
|
|
4053 Hyperbole uses internally to reference the type is returned. @code{Nil}
|
|
4054 is returned on failure so that you may test whether or not the operation
|
|
4055 succeeds. Implicit button type names and action type names may be the
|
|
4056 same without any conflict. In fact, such naming is encouraged when an
|
|
4057 implicit button type is the exclusive user of an action type.
|
|
4058
|
|
4059 @findex ibtype:delete
|
|
4060 Call @code{(ibtype:delete)} to remove an implicit button type from a
|
|
4061 Hyperbole environment. It takes a single parameter which should be the
|
|
4062 same type symbol used in the type definition call (not the Hyperbole
|
|
4063 symbol returned by the call). This will not delete the action type used
|
|
4064 by the implicit button; that must be done separately.
|
|
4065
|
|
4066 @cindex ibtype, help
|
|
4067 @findex ibut:at-p
|
|
4068 @vindex class, hattr
|
|
4069 @vindex class, hbut
|
|
4070 @vindex file, hib-kbd.el
|
|
4071 By default, a request for help on an implicit button will display the
|
|
4072 button's attributes in the same manner as is done for explicit buttons.
|
|
4073 For some implicit button types, other forms of help will be more
|
|
4074 appropriate. If an Emacs Lisp function is defined whose name is formed
|
|
4075 from the concatenation of the type name followed by @code{:help}, e.g@.
|
|
4076 @code{my-ibtype:help}, it is used to respond to requests for
|
|
4077 help on buttons of that type. Any such function should take a single
|
|
4078 argument of an implicit button construct. (This is what
|
|
4079 @code{(ibut:at-p)} returns when point is within an implicit button
|
|
4080 context.) The button may be queried for its attributes using functions
|
|
4081 from the @code{hbut} and @code{hattr} classes. See the @file{hib-kbd.el}
|
|
4082 file for an example of a custom help function.
|
|
4083
|
|
4084 @node Explicit Button Technicalities, Encapsulating Systems, Creating Types, Developing with Hyperbole
|
|
4085 @section Explicit Button Technicalities
|
|
4086 @menu
|
|
4087 * Button Label Normalization::
|
|
4088 * Operational and Storage Formats::
|
|
4089 * Programmatic Button Creation::
|
|
4090 @end menu
|
|
4091
|
|
4092 @node Button Label Normalization, Operational and Storage Formats, Explicit Button Technicalities, Explicit Button Technicalities
|
|
4093 @subsection Button Label Normalization
|
|
4094 @cindex normalized label
|
|
4095 @cindex button label
|
|
4096 @cindex button key
|
|
4097 @vindex hbut:label-to-key
|
|
4098 Hyperbole uses a normalized form of button labels called button keys (or
|
|
4099 label keys) for all internal operations. See the documentation for the
|
|
4100 function @code{(hbut:label-to-key)} for details of the normalization
|
|
4101 process. The normalized form permits Hyperbole to recognize buttons that
|
|
4102 are the same but whose labels appear different from one another, due to
|
|
4103 text formatting conventions. For example, all of the following would
|
|
4104 be recognized as the same button.
|
|
4105
|
|
4106 @example
|
|
4107 <(fake button)> <( fake button)>
|
|
4108
|
|
4109 Pam> <(fake
|
|
4110 Pam> button)>
|
|
4111
|
|
4112 ;; <(fake
|
|
4113 ;; button)>
|
|
4114
|
|
4115 /* <( fake */
|
|
4116 /* button )> */
|
|
4117 @end example
|
|
4118
|
|
4119 @vindex hbut:fill-prefix-regexps
|
|
4120 @vindex fill-prefix
|
|
4121 @cindex fill prefix
|
|
4122 @cindex button, multiple lines
|
|
4123 @cindex button, split across lines
|
|
4124 The last three examples demonstrate how Hyperbole ignores common fill
|
|
4125 prefix patterns that happen to fall within the middle of a button label
|
|
4126 that spans multiple lines. As long as such buttons are selected with
|
|
4127 point at a location within the label's first line, the button will be
|
|
4128 recognized. The variable @var{hbut:fill-prefix-regexps} holds the list
|
|
4129 of fill prefixes recognized when embedded within button labels. All
|
|
4130 such prefixes are recognized (one per button label), regardless of the
|
|
4131 setting of the GNU Emacs variable, @var{fill-prefix}, so no user
|
|
4132 intervention is required.
|
|
4133
|
|
4134 @node Operational and Storage Formats, Programmatic Button Creation, Button Label Normalization, Explicit Button Technicalities
|
|
4135 @subsection Operational and Storage Formats
|
|
4136
|
|
4137 @cindex explicit button, formats
|
|
4138 @cindex explicit button, storage
|
|
4139 @cindex storage manager
|
|
4140 @cindex button attributes
|
|
4141 @vindex hbut:current
|
|
4142 Hyperbole uses a terse format to store explicit buttons and a more
|
|
4143 meaningful one to show users and to manipulate during editing. The
|
|
4144 terse format consists solely of button attribute values whereas the edit
|
|
4145 format includes an attribute name with each attribute value. A button
|
|
4146 in edit format consists of a Lisp symbol together with its attribute list
|
|
4147 which holds the attribute names and values. In this way, buttons may be
|
|
4148 passed along from function to function simply by passing the symbol to
|
|
4149 which the button is attached. Most functions utilize the pre-defined
|
|
4150 @var{hbut:current} symbol by default to store and retrieve the last
|
|
4151 encountered button in edit format.
|
|
4152
|
|
4153 @vindex class, hbdata
|
|
4154 @vindex class, ebut
|
|
4155 @vindex class, hbut
|
|
4156 The @code{hbdata} class handles the terse, stored format. The
|
|
4157 @code{hbut}, @code{ebut}, and @code{ibut} classes work with the
|
|
4158 name/value format. This separation permits the wholesale replacement of
|
|
4159 the storage manager with another, with any interface changes hidden from
|
|
4160 any Hyperbole client programming.
|
|
4161
|
|
4162 @node Programmatic Button Creation, , Operational and Storage Formats, Explicit Button Technicalities
|
|
4163 @subsection Programmatic Button Creation
|
|
4164
|
|
4165 @cindex explicit button, creation
|
|
4166 A common need when developing with Hyperbole is the ability to create or
|
|
4167 modify explicit buttons without user interaction. For example, an
|
|
4168 application might require the addition of an explicit summary button to
|
|
4169 a file for each new mail message a user reads that contains a set of
|
|
4170 keywords. The user could then check the summary file and jump to
|
|
4171 desired messages quickly.
|
|
4172
|
|
4173 @vindex class, ebut
|
|
4174 @vindex file, hbut.el
|
|
4175 @findex ebut:create
|
|
4176 @findex ebut:map
|
|
4177 The Hyperbole class @code{ebut} supports programmatic access to explicit
|
|
4178 buttons. See it within the @file{hbut.el} file for full details. The
|
|
4179 documentation for @code{(ebut:create)} explains the set of attributes
|
|
4180 settings necessary to create an explicit button. For operations over
|
|
4181 the whole set of buttons within the visible (non-narrowed) portion of a
|
|
4182 buffer, use the @code{(ebut:map)} function.
|
|
4183
|
|
4184 @page
|
|
4185 @node Encapsulating Systems, Embedding Hyperbole, Explicit Button Technicalities, Developing with Hyperbole
|
|
4186 @section Encapsulating Systems
|
|
4187
|
|
4188 @vindex file, hsys-*
|
|
4189 @cindex Hyperbole, system encapsulation
|
|
4190 @cindex system encapsulation
|
|
4191 A powerful use of implicit button types is to provide a Hyperbole-based
|
|
4192 interface to external systems. The basic idea is to interpret patterns
|
|
4193 output by the application as implicit buttons.
|
|
4194
|
|
4195 See the @file{hsys-*} files for examples of how to do this.
|
|
4196 Encapsulations are provided for the following systems (the systems
|
|
4197 themselves are not included with Hyperbole):
|
|
4198
|
|
4199 @table @bullet
|
|
4200 @item World-Wide Web
|
|
4201 The world-wide web system originally developed at CERN, that now spans
|
|
4202 the Internet universe. This is automatically loaded by Hyperbole so
|
|
4203 that a press of the Action Key follows a URL.
|
|
4204
|
|
4205 @item WAIS
|
|
4206 The Wide Area Information Systems full text-retrieval system orginally
|
|
4207 developed at Thinking Machines and then later at WAIS Inc.
|
|
4208
|
|
4209 @item HyperBase
|
|
4210 A hypertextual storage manager that stores textual nodes as records with
|
|
4211 locking so that multiple users can read and edit hypertexts.
|
|
4212 @end table
|
|
4213
|
|
4214
|
|
4215 @node Embedding Hyperbole, , Encapsulating Systems, Developing with Hyperbole
|
|
4216 @section Embedding Hyperbole
|
|
4217
|
|
4218 [NOTE: We have never done this ourselves, though we have done similar
|
|
4219 things which leads us to infer that the task should not be difficult.]
|
|
4220
|
|
4221 @cindex Hyperbole API
|
|
4222 @cindex API
|
|
4223 @cindex programming interface
|
|
4224 @cindex Hyperbole, embedding
|
|
4225 The standard Emacs-based Hyperbole user interface has purposely been
|
|
4226 separated from the Hyperbole backend to support the development of
|
|
4227 alternative interfaces and the embedding of Hyperbole functionality
|
|
4228 within other system prototypes. The Hyperbole backend functionality
|
|
4229 that system developers can make use of is called its Application
|
|
4230 Programming Interface (API). The API may be used to make server-based
|
|
4231 calls to Hyperbole when Emacs is run as a non-interactive (batch)
|
|
4232 process, with its input/output streams attached to another process.
|
|
4233
|
|
4234 The public functions and variables from the following files may be
|
|
4235 considered the present Hyperbole API:
|
|
4236
|
|
4237 @noindent
|
|
4238 @file{hact.el}, @file{hargs.el}, @file{hbmap.el}, @file{hbut.el},
|
|
4239 @file{hhist.el}, @file{hmail.el}, @file{hmoccur.el}, @file{hpath.el},
|
|
4240 @file{htz.el}, @file{hypb.el}, @file{set.el}, @file{wconfig.el},
|
|
4241 @file{wrolo.el}, and @file{wrolo-logic.el}.@refill
|
|
4242
|
|
4243 @noindent
|
|
4244 Note when looking at these files, that they are divided into sections
|
|
4245 that separate one data abstraction (class) from another. A line of
|
|
4246 dashes within a class separates public parts of the class from the
|
|
4247 private parts that follow the line.
|
|
4248
|
|
4249 This API does not include the Hyperbole outliner, as it has been
|
|
4250 designed for interactive use, rather than programmatic extensibility.
|
|
4251 You can certainly study its code, below the @file{hyperbole/kotl/}
|
|
4252 directory and learn to program it, however.
|
|
4253
|
|
4254
|
|
4255 @node Glossary, Smart Key Reference, Developing with Hyperbole, Top
|
|
4256 @appendix Glossary
|
|
4257
|
|
4258 Concepts pertinent to operational usage of Hyperbole are defined here.
|
|
4259 If some GNU Emacs terms are unfamiliar to you, @ref{Glossary, Emacs
|
|
4260 Glossary,, emacs, the GNU Emacs Manual}.
|
|
4261
|
|
4262 @table @code
|
|
4263
|
|
4264 @cindex action
|
|
4265 @item action
|
|
4266 An executable behavior associated with a Hyperbole button. A specific
|
|
4267 class of actions which display entities are called @emph{links},
|
|
4268 such as a link to a file.
|
|
4269
|
|
4270 @cindex Action Key
|
|
4271 @item Action Key
|
|
4272 See @emph{Smart Key}.
|
|
4273
|
|
4274 @cindex action type
|
|
4275 @item action type
|
|
4276 A behavioral specification for use within Hyperbole buttons. Action
|
|
4277 types usually contain a set of parameters which must be given values for
|
|
4278 each button with which they are associated. An action type together
|
|
4279 with a set of values, called arguments, may be considered an @emph{action}.
|
|
4280 @emph{Actype} is a synonym for action type.
|
|
4281
|
|
4282 @cindex activation
|
|
4283 @item activation
|
|
4284 Request for a Hyperbole button to perform its action.
|
|
4285 Ordinarily the user presses a key which selects and activates a button.
|
|
4286
|
|
4287 @cindex ange-ftp
|
|
4288 @cindex ftp
|
|
4289 @item ange-ftp
|
|
4290 A standard GNU Emacs Lisp package which allows one to use pathnames
|
|
4291 that are accessible via the Internet File Transfer Protocol (ftp) just
|
|
4292 like other pathnames, for example when finding a file. The
|
|
4293 latest version of ange-ftp may always be obtained via anonymous ftp to:
|
|
4294 @file{/ftp.gnu.ai.mit.edu:ange-ftp/ange-ftp.tar.gz}.
|
|
4295
|
|
4296 @cindex argument
|
|
4297 @item argument
|
|
4298 A button-specific value fed to a Hyperbole type specification when the
|
|
4299 button is activated.
|
|
4300
|
|
4301 @cindex Assist Key
|
|
4302 @item Assist Key
|
|
4303 See @emph{Smart Key}.
|
|
4304
|
|
4305 @cindex attributes
|
|
4306 @item attributes
|
|
4307 Slot names associated with Hyperbole buttons. An @emph{attribute value}
|
|
4308 is associated with each button attribute.
|
|
4309
|
|
4310 @cindex Augment
|
|
4311 @cindex NLS
|
|
4312 @cindex hypertext
|
|
4313 @cindex interactive computing
|
|
4314 @cindex mouse
|
|
4315 @cindex windows
|
|
4316 @cindex hypertext
|
|
4317 @cindex outline processor
|
|
4318 @cindex groupware
|
|
4319 @cindex digital signature
|
|
4320 @cindex Engelbart
|
|
4321 @item Augment
|
|
4322 The Augment system, originally named NLS, was a pioneering research and
|
|
4323 production system aimed at augmenting human intellect and group
|
|
4324 knowledge processing capabilities through integrated tools and
|
|
4325 organizational development strategies. This approach led to the
|
|
4326 invention of much of interactive computing technology decades ahead of
|
|
4327 other efforts, including: the mouse, screen windows, true hypertext,
|
|
4328 outline processors, groupware, and digitally signed documents.
|
|
4329 @xref{References}, which cites several Douglas Engelbart papers on the
|
|
4330 subject. The Koutliner concept emerged from studies of publicly
|
|
4331 available information concerning Augment.
|
|
4332
|
|
4333 @cindex button
|
|
4334 @item button
|
|
4335 A selectable Hyperbole construct which performs an action. A button
|
|
4336 consists of a set of attributes that includes: a textual label, a
|
|
4337 category, a type and zero or more arguments. @emph{Explicit buttons}
|
|
4338 also have creator, create time, last modifier, and last modifier time
|
|
4339 attributes.
|
|
4340
|
|
4341 Buttons provide the user's gateway to information. The user sees and
|
|
4342 interacts with button labels, the rest of the button data is managed
|
|
4343 invisibly by Hyperbole and displayed only in response to user queries.
|
|
4344
|
|
4345 @cindex button activation
|
|
4346 @item button activation
|
|
4347 See @emph{activation}.
|
|
4348
|
|
4349 @cindex button attributes
|
|
4350 @item button attributes
|
|
4351 See @emph{attributes}.
|
|
4352
|
|
4353 @cindex button data
|
|
4354 @item button data
|
|
4355 Lists of button attribute values explicitly saved and managed by Hyperbole.
|
|
4356 One list for each button created by Hyperbole.
|
|
4357
|
|
4358 @cindex button file, local
|
|
4359 @item button file, local
|
|
4360 A per-directory file named @file{HYPB} that may be used to store any
|
|
4361 desired buttons and may then be displayed via a menu selection whenever
|
|
4362 a user is within that directory.
|
|
4363
|
|
4364 @cindex button file, personal
|
|
4365 @item button file, personal
|
|
4366 A per-user file named @file{HYPB} that may be used to store any desired
|
|
4367 buttons and may then be displayed via a menu selection.
|
|
4368
|
|
4369 @cindex button key
|
|
4370 @item button key
|
|
4371 A normalized form of a @emph{button label} used internally by Hyperbole.
|
|
4372
|
|
4373 @cindex button label
|
|
4374 @item button label
|
|
4375 A text string that visually indicates a Hyperbole button location and
|
|
4376 provides it with a name and unique identifier. Within a buffer, buttons
|
|
4377 with the same label are considered separate views of the same button and
|
|
4378 so behave exactly alike. Since button labels are simply text strings,
|
|
4379 they may be embedded within any text to provide non-linear information
|
|
4380 or operational access points.
|
|
4381
|
|
4382 The maximum length of a button label is limited by the variable
|
|
4383 @var{ebut:max-len}.
|
|
4384
|
|
4385 @cindex button selection
|
|
4386 @item button selection
|
|
4387 The act of designating a Hyperbole button upon which to operate.
|
|
4388 Use the Action Key to select a button.
|
|
4389
|
|
4390 @cindex category
|
|
4391 @item category
|
|
4392 A high-level, conceptual grouping of Hyperbole buttons into classes.
|
|
4393 @emph{Implicit} and @emph{explicit} groupings represent categories.
|
|
4394
|
|
4395 @cindex cell
|
|
4396 @item cell
|
|
4397 See @emph{kcell}.
|
|
4398
|
|
4399 @cindex children
|
|
4400 @item children
|
|
4401 The set of koutline cells which share a common parent cell and are one
|
|
4402 level deeper than the parent.
|
|
4403
|
|
4404 @cindex class
|
|
4405 @item class
|
|
4406 A group of functions and variables with the same prefix in their names,
|
|
4407 used to provide an interface to an internal or external Hyperbole
|
|
4408 abstraction.
|
|
4409
|
|
4410 @cindex context
|
|
4411 @item context
|
|
4412 A programmatic or positional state recognized by Hyperbole.
|
|
4413 We speak of Smart Key and implicit button contexts. Both are typically
|
|
4414 defined in terms of surrounding patterns within a buffer, but may be
|
|
4415 defined by arbitrary Emacs Lisp predicates. (Context may come to have a
|
|
4416 broader meaning within future versions of Hyperbole.)
|
|
4417
|
|
4418 @cindex environment
|
|
4419 @item environment
|
|
4420 See @emph{Hyperbole environment}.
|
|
4421
|
|
4422 @cindex efs
|
|
4423 @item efs
|
|
4424 The much larger successor to ange-ftp. It does the same thing as
|
|
4425 ange-ftp but works with more types of ftp hosts. See @emph{ange-ftp}.
|
|
4426
|
|
4427 @cindex explicit button
|
|
4428 @item explicit button
|
|
4429 A button created and managed by Hyperbole. By default, explicit buttons
|
|
4430 are delimited like this @code{<(fake button)>}. Direct selection is
|
|
4431 used to operate upon an explicit button.
|
|
4432
|
|
4433 @cindex global button
|
|
4434 @item global button
|
|
4435 @vindex gbut:file
|
|
4436 A form of explicit button which is typically accessed by name rather
|
|
4437 than direct selection. Global buttons are useful when one wants
|
|
4438 quick access to actions such as jumping to common file locations or for
|
|
4439 performing sequences of operations. One need not locate them since they
|
|
4440 are always available by name, with full completion offered. All global
|
|
4441 buttons are stored in the file given by the variable @var{gbut:file} and
|
|
4442 may be activated as regular explicit buttons by visiting this file. By
|
|
4443 default, this is the same as the user's personal button file.
|
|
4444
|
|
4445 @cindex global button file
|
|
4446 @item global button file
|
|
4447 See @emph{button file, personal}.
|
|
4448
|
|
4449 @findex run-hooks
|
|
4450 @cindex hook variable
|
|
4451 @item hook variable
|
|
4452 A variable that permits customization of an existing function's
|
|
4453 operation without the need to edit the function's code. See also the
|
|
4454 documentation for the function @code{(run-hooks)}.
|
|
4455
|
|
4456 @cindex Hyperbole
|
|
4457 @item Hyperbole
|
|
4458 A flexible, programmable information management and viewing system built
|
|
4459 on top of GNU Emacs. It utilizes a button-action model and supports
|
|
4460 hypertextual linkages. Hyperbole is all things to all people.
|
|
4461
|
|
4462 @cindex Hyperbole environment
|
|
4463 @item Hyperbole environment
|
|
4464 A programmatic context within which Hyperbole operates. This includes
|
|
4465 the set of Hyperbole types defined and the set of Hyperbole code modules
|
|
4466 loaded. It does not include the set of accessible buttons.
|
|
4467 Although the entire Emacs environment is available to Hyperbole, we do
|
|
4468 not speak of this as part of the Hyperbole environment.
|
|
4469
|
|
4470 @cindex hypertext
|
|
4471 @item hypertext
|
|
4472 A text or group of texts which may be explored in a non-linear fashion
|
|
4473 through associative linkages embedded throughout the text. Instead of
|
|
4474 simply referring to other pieces of work, hypertext references when
|
|
4475 followed actually take you to the works themselves.
|
|
4476
|
|
4477 @cindex implicit button
|
|
4478 @item implicit button
|
|
4479 A button recognized contextually by Hyperbole. Such buttons contain no
|
|
4480 button data. See also @emph{implicit button type}.
|
|
4481
|
|
4482 @cindex implicit button type
|
|
4483 @item implicit button type
|
|
4484 A specification of how to recognize and activate implicit buttons of a
|
|
4485 specific kind. Implicit button types often utilize structure internal
|
|
4486 to documents created and managed without Hyperbole assistance, for
|
|
4487 example, programming documentation. @emph{Ibtype} is a synonym for
|
|
4488 implicit button type. See also @emph{system encapsulation}.
|
|
4489
|
|
4490 @cindex instance number
|
|
4491 @item instance number
|
|
4492 A colon prefaced number appended to the label of a newly created button
|
|
4493 when the button's label duplicates the label of an existing button in
|
|
4494 the current buffer. This number makes the label unique and so allows
|
|
4495 any number of buttons with the same base label within a single buffer.
|
|
4496
|
|
4497 @cindex koutline
|
|
4498 @item koutline
|
|
4499 A hierarchically ordered grouping of cells which may be stored as a file
|
|
4500 and viewed and edited as an outline.
|
|
4501
|
|
4502 @cindex Koutliner
|
|
4503 @item Koutliner
|
|
4504 Koutliner, the Hyperbole outliner, is a powerful autonumbering outliner
|
|
4505 with permanent hypertext anchors for easy hyperlinking and view
|
|
4506 specs for rapid outline view alteration.
|
|
4507
|
|
4508 @cindex kcell
|
|
4509 @item kcell
|
|
4510 Cells or kcells are elements within koutlines. Each cell contains
|
|
4511 textual and graphical contents, a relative identifier, a permanent
|
|
4512 identifier and a set of attributes such as the user who created the cell
|
|
4513 and the time of creation. See also @emph{Koutliner}.
|
|
4514
|
|
4515 @cindex link
|
|
4516 @item link
|
|
4517 A reference from a Hyperbole button to an entity. The referenced entity
|
|
4518 is sometimes called a @emph{node} or @emph{referent}.
|
|
4519 A specific class of actions which display entities are called
|
|
4520 @emph{links}, such as a link to a file.
|
|
4521
|
|
4522 @cindex local button file
|
|
4523 @item local button file
|
|
4524 See @emph{button file, local}.
|
|
4525
|
|
4526 @cindex minibuffer window
|
|
4527 @item minibuffer window
|
|
4528 The one line window at the bottom of a frame where messages and prompts
|
|
4529 are displayed.
|
|
4530
|
|
4531 @cindex minibuffer menu
|
|
4532 @item minibuffer menu
|
|
4533 A Hyperbole menu displayed in the minibuffer window. Each menu item
|
|
4534 within a minibuffer menu begins with a different letter that can be used
|
|
4535 to invoke the item (case doesn't matter). Items that display other
|
|
4536 menus end with a forward slash, /.
|
|
4537
|
|
4538 @cindex mouse button
|
|
4539 @item mouse button
|
|
4540 @item mouse key
|
|
4541 See @emph{Smart Key}.
|
|
4542
|
|
4543 @cindex node
|
|
4544 @item node
|
|
4545 See @emph{link} or @emph{cell}.
|
|
4546
|
|
4547 @cindex outline
|
|
4548 @item outline
|
|
4549 See @emph{koutline}.
|
|
4550
|
|
4551 @cindex parent
|
|
4552 @item parent
|
|
4553 Any koutline cell which has children.
|
|
4554
|
|
4555 @cindex predecessor
|
|
4556 @item predecessor
|
|
4557 The previous same level koutline cell with the same parent.
|
|
4558
|
|
4559 @cindex predicate
|
|
4560 @item predicate
|
|
4561 A boolean (nil = false, non-nil = true) Lisp expression typically
|
|
4562 evaluated as part of a conditional expression.
|
|
4563
|
|
4564 @cindex referent
|
|
4565 @item referent
|
|
4566 See @emph{link}.
|
|
4567
|
|
4568 @cindex rolodex
|
|
4569 @item rolodex
|
|
4570 Wrolo, the Hyperbole rolodex, provides rapid lookup of multi-line,
|
|
4571 hierarchically ordered free form text records.
|
|
4572
|
|
4573 @cindex root cell
|
|
4574 @item root cell
|
|
4575 A koutline cell which has cells below it. All such cells share the same
|
|
4576 root cell.
|
|
4577
|
|
4578 @cindex Smart Key
|
|
4579 @vindex smart-scroll-proportional
|
|
4580 @cindex proportional scrolling
|
|
4581 @cindex scrolling
|
|
4582 @item Smart Key
|
|
4583 A context-sensitive key used within Hyperbole and beyond. Actually,
|
|
4584 there are two Smart Keys, the Action Key and the Assist Key. The
|
|
4585 Action Key, typically bound to the shift-middle mouse key (or shift-left
|
|
4586 mouse key on a 2-button mouse), activates Hyperbole buttons and scrolls
|
|
4587 the current buffer line to the top of the window when pressed at the end
|
|
4588 of a line. The Assist Key, typically bound to the shift-right mouse
|
|
4589 key, explains what a Hyperbole button does or scrolls the current line
|
|
4590 to the bottom of the window when pressed at the end of a line. (See the
|
|
4591 documentation for the variable, @var{smart-scroll-proportional}, for
|
|
4592 information on how to make these keys scroll forward and backward a
|
|
4593 windowful at a time).
|
|
4594
|
|
4595 To see what a Smart Key will do within a particular context, depress and
|
|
4596 hold the key at the point desired and depress the other Smart Key. A
|
|
4597 buffer containing a description of its contextual function will then be
|
|
4598 displayed. You may release the two keys in any order after you have
|
|
4599 them both depressed. A press of the Assist Key in an unsupported
|
|
4600 context displays a summary of Smart Key functions in each context, as
|
|
4601 does the Doc/SmartKy menu item.
|
|
4602
|
|
4603 @cindex source buffer
|
|
4604 @cindex source file
|
|
4605 @item source buffer / file
|
|
4606 The buffer or file within which a Hyperbole button is embedded.
|
|
4607
|
|
4608 @cindex subtree
|
|
4609 @item subtree
|
|
4610 All of the cells in a koutline which share the same root cell, excluding
|
|
4611 the root cell.
|
|
4612
|
|
4613 @cindex successor
|
|
4614 @item successor
|
|
4615 The next same level koutline cell with the same parent.
|
|
4616
|
|
4617 @cindex system encapsulation
|
|
4618 @item system encapsulation
|
|
4619 Use of Hyperbole to provide an improved or simply consistent user
|
|
4620 interface to another system. Typically, implicit button types are
|
|
4621 defined to recognize and activate button-type constructs managed by the
|
|
4622 other system.
|
|
4623
|
|
4624 @cindex tree
|
|
4625 @item tree
|
|
4626 The set of cells in a koutline that share a common root cell, including
|
|
4627 the root cell.
|
|
4628
|
|
4629 @cindex view
|
|
4630 @item view
|
|
4631 A perspective on some information. A view can affect the extent of the
|
|
4632 information displayed, its format, modes used to operate on it, its
|
|
4633 display location and so forth.
|
|
4634
|
|
4635 @cindex view spec
|
|
4636 @item view spec
|
|
4637 A terse (and to the uninitiated, cryptic) string that specifies a
|
|
4638 particular view of koutline or a link referent. If a view spec is in
|
|
4639 use in a buffer, the view spec appears in the modeline delimited by
|
|
4640 <|view spec>.
|
|
4641
|
|
4642 @end table
|
|
4643
|
|
4644 @node Smart Key Reference, Outliner Keys, Glossary, Top
|
|
4645 @appendix Smart Key Reference
|
|
4646
|
|
4647 This appendix supplies complete documentation on Smart Key operation. It is
|
|
4648 quite extensive and is meant for reference rather than sequential reading.
|
|
4649 @xref{Smart Keys}, for a description of the Smart Keys. That section also
|
|
4650 describes how to get context-sensitive Smart Key help, with which you can
|
|
4651 explore Smart Key operation bit by bit.
|
|
4652
|
|
4653 Smart Key operations are context-sensitive. Contexts are described herein as
|
|
4654 conditionals, e.g@. when depressed here, if this is true, etc. Each Smart
|
|
4655 Key context is listed in the order in which it will be checked. The first
|
|
4656 matching context is always the one applied. Within each context, the
|
|
4657 actions performed by the Action and Assist Keys are listed.
|
|
4658
|
|
4659 @menu
|
|
4660 * Smart Mouse Keys::
|
|
4661 * Smart Keyboard Keys::
|
|
4662 @end menu
|
|
4663
|
|
4664 @node Smart Mouse Keys, Smart Keyboard Keys, Smart Key Reference, Smart Key Reference
|
|
4665 @section Smart Mouse Keys
|
|
4666
|
|
4667 @cindex Smart Mouse Keys
|
|
4668 Smart Key drags and modeline presses can only be used when running under
|
|
4669 a window system with mouse key support. So keep in mind that the
|
|
4670 operations in this section apply only if you have mouse support within
|
|
4671 Hyperbole. The Smart Key operations in, @ref{Smart Keyboard Keys},
|
|
4672 apply to both mouse and keyboard Smart Key usage.
|
|
4673
|
10
|
4674 @cindex drag, side edge
|
|
4675 @cindex side drag
|
0
|
4676 @format
|
|
4677 @group
|
|
4678 If dragged from a side-by-side window edge or from the immediate left of
|
|
4679 a vertical scroll bar:
|
|
4680 ACTION or ASSIST
|
|
4681 Resizes adjacent window sides to the point of drag release.
|
|
4682 @end group
|
|
4683 @end format
|
|
4684
|
|
4685 @format
|
|
4686 @group
|
24
|
4687 @cindex drag, between windows
|
0
|
4688 If dragged from inside one window to another:
|
|
4689 ACTION
|
|
4690 Creates a new link button at the drag start location, linked to the
|
|
4691 drag end location. If drag start position is within a button,
|
|
4692 modifies the button to link to drag end location.
|
|
4693 ASSIST
|
|
4694 Swaps buffers in the two windows.
|
|
4695 @end group
|
|
4696 @end format
|
|
4697
|
|
4698 @page
|
10
|
4699 @cindex drag, horizontal
|
|
4700 @cindex horizontal drag
|
0
|
4701 @format
|
|
4702 @group
|
|
4703 If dragged horizontally within a single window while depressed
|
|
4704 (hmouse-x-drag-sensitivity sets the minimal horizontal movement which
|
|
4705 registers a drag):
|
|
4706 ACTION
|
|
4707 Goes to buffer end if drag was to the right, otherwise goes to beginning.
|
|
4708 ASSIST
|
|
4709 Splits window vertically if drag was to the right, otherwise deletes
|
|
4710 window.
|
|
4711 @end group
|
|
4712 @end format
|
|
4713
|
10
|
4714 @cindex depress, modeline
|
|
4715 @cindex modeline depress
|
0
|
4716 @format
|
|
4717 @group
|
|
4718 If depressed within a window mode line:
|
|
4719 ACTION
|
|
4720 (1) clicked on left edge of a window's modeline,
|
|
4721 window's buffer is buried (placed at bottom of buffer list);
|
|
4722 (2) clicked on right edge of a window's modeline,
|
|
4723 the Info buffer is displayed, or if already displayed and the
|
|
4724 modeline clicked belongs to a window displaying Info, the Info
|
|
4725 buffer is hidden;
|
|
4726 (3) clicked anywhere in the middle of a window's modeline,
|
24
|
4727 the functions listed in `assist-key-modeline-hook' are
|
0
|
4728 called;
|
|
4729 (4) dragged vertically from modeline to within a window,
|
|
4730 the modeline is moved to point of key release, thereby resizing
|
|
4731 its window and potentially its vertical neighbors.
|
|
4732 ASSIST
|
|
4733 (1) clicked on left edge of a window's modeline,
|
|
4734 bottom buffer in buffer list is unburied and placed in window;
|
|
4735 (2) clicked on right edge of a window's modeline,
|
|
4736 the summary of Smart Key behavior is displayed, or if already
|
|
4737 displayed and the modeline clicked belongs to a window displaying
|
|
4738 the summary, the summary buffer is hidden;
|
|
4739 (3) clicked anywhere in the middle of a window's modeline,
|
|
4740 a popup menu (if available) is displayed;
|
|
4741 (4) dragged vertically from modeline to within a window,
|
|
4742 the modeline is moved to point of key release, thereby resizing
|
|
4743 its window and potentially its vertical neighbors.
|
|
4744 @end group
|
|
4745 @end format
|
|
4746
|
|
4747 @page
|
10
|
4748 @cindex drag, vertical
|
|
4749 @cindex vertical drag
|
0
|
4750 @format
|
|
4751 @group
|
|
4752 If dragged vertically within a single window while depressed
|
|
4753 (hmouse-y-drag-sensitivity sets the minimal vertical movement which
|
|
4754 registers a drag):
|
|
4755 ACTION or ASSIST
|
|
4756 Splits current window into two side-by-side windows.
|
|
4757 @end group
|
|
4758 @end format
|
|
4759
|
10
|
4760 @cindex drag, diagonal
|
|
4761 @cindex diagonal drag
|
0
|
4762 @format
|
|
4763 @group
|
|
4764 If dragged diagonally within a single window while depressed
|
|
4765 (hmouse-x-diagonal-sensitivity and hmouse-y-diagonal-sensitivity set the
|
|
4766 minimal diagonal movement which registers a drag):
|
|
4767 ACTION
|
|
4768 Save current window configuration onto a ring of window configurations.
|
|
4769 ASSIST
|
|
4770 Restores prior window configuration from ring. A prefix argument N
|
|
4771 specifies the Nth prior configuration from the ring.
|
|
4772 @end group
|
|
4773 @end format
|
|
4774
|
|
4775 @page
|
|
4776
|
|
4777 @node Smart Keyboard Keys, , Smart Mouse Keys, Smart Key Reference
|
|
4778 @section Smart Keyboard Keys
|
|
4779
|
|
4780 @cindex Smart Keyboard Keys
|
|
4781 @format
|
|
4782 @group
|
|
4783 When prompting for a Hyperbole argument, a press in the minibuffer:
|
|
4784 ACTION
|
|
4785 Terminates this minibuffer argument.
|
|
4786 ASSIST
|
|
4787 Offers completion help for current minibuffer argument.
|
|
4788 @end group
|
|
4789 @end format
|
|
4790
|
|
4791 @format
|
|
4792 @group
|
|
4793 When reading a Hyperbole menu item or a Hyperbole completion-based argument:
|
|
4794 ACTION
|
|
4795 Returns value selected at point if any, else nil. If
|
|
4796 value is the same as the contents of the minibuffer, it is used as the
|
|
4797 current minibuffer argument, otherwise, the minibuffer is erased and
|
|
4798 value is inserted there.
|
|
4799
|
|
4800 ASSIST
|
|
4801 Displays Hyperbole menu item help when item is selected.
|
|
4802 @end group
|
|
4803 @end format
|
|
4804
|
24
|
4805 @format
|
|
4806 @group
|
|
4807 If in ID-edit mode (a package from InfoDock Associates that supports
|
|
4808 rapid killing, copying, ynaking and display-management):
|
|
4809 ACTION or ASSIST
|
|
4810 Yanks (pastes) last selected region at point.
|
|
4811 @end group
|
|
4812 @end format
|
|
4813
|
0
|
4814 @vindex smart-scroll-proportional
|
|
4815 @cindex proportional scrolling
|
|
4816 @cindex scrolling
|
10
|
4817 @cindex click, end of line
|
|
4818 @cindex end of line click
|
0
|
4819 @format
|
|
4820 @group
|
|
4821 When pressed at the end of a line but not the end of a buffer:
|
|
4822 ACTION
|
|
4823 Scrolls up according to value of smart-scroll-proportional. If
|
|
4824 smart-scroll-proportional is nil or if point is on the top
|
|
4825 window line, scrolls up (forward) a windowful. Otherwise, tries to
|
|
4826 bring current line to top of window. Leaves point at end of line and
|
|
4827 returns t if scrolled, nil if not.
|
|
4828 ASSIST
|
|
4829 Scrolls down according to value of smart-scroll-proportional. If
|
|
4830 smart-scroll-proportional is nil or if point is on the
|
|
4831 bottom window line, scrolls down (backward) a windowful. Otherwise,
|
|
4832 tries to bring current line to bottom of window. Leaves point at end of
|
|
4833 line and returns t if scrolled, nil if not.
|
|
4834 @end group
|
|
4835 @end format
|
|
4836
|
24
|
4837 @format
|
|
4838 @group
|
|
4839 When pressed on a Smart Menu item:
|
|
4840 ACTION
|
|
4841 Activates item.
|
|
4842 ASSIST
|
|
4843 Displays help for item.
|
|
4844 @end group
|
|
4845 @end format
|
|
4846
|
10
|
4847 @cindex click, button
|
|
4848 @cindex button click
|
0
|
4849 @format
|
|
4850 @group
|
|
4851 When pressed on a Hyperbole button:
|
|
4852 ACTION
|
|
4853 Activates button.
|
|
4854 ASSIST
|
|
4855 Displays help for button, typically a summary of its attributes.
|
|
4856 @end group
|
|
4857 @end format
|
|
4858
|
|
4859 @format
|
|
4860 @group
|
24
|
4861 If Smart Menu package has been loaded and `hkey-always-display-menu' is
|
|
4862 non-nil:
|
|
4863 ACTION or ASSIST
|
|
4864 Pops up a window with a Smart Menu of commands.
|
|
4865 Menu displayed is selected by (smart-menu-choose-menu).
|
|
4866 @end group
|
|
4867 @end format
|
|
4868
|
|
4869 @format
|
|
4870 @group
|
0
|
4871 If pressed within a buffer in View major or minor mode:
|
|
4872 ACTION
|
|
4873 Scrolls buffer forward a windowful and quits from view mode when at
|
|
4874 the last line of the buffer.
|
|
4875 ASSIST
|
|
4876 Scrolls buffer backward a windowful.
|
|
4877 @end group
|
|
4878 @end format
|
|
4879
|
|
4880 @format
|
|
4881 @group
|
|
4882 When pressed within a Hyperbole outliner buffer (kotl-mode):
|
|
4883 ACTION
|
|
4884 (1) at the end of buffer, uncollapse and unhide all cells in view;
|
|
4885 (2) within a cell, if its subtree is hidden then show it,
|
|
4886 otherwise hide it;
|
|
4887 (3) between cells or within the read-only indentation region to the
|
|
4888 left of a cell, then move point to prior location and begin
|
|
4889 creation of a klink to some other outline cell; hit the Action
|
|
4890 Key twice to select the link referent cell;
|
|
4891 (4) anywhere else, scroll up a windowful.
|
|
4892 ASSIST
|
|
4893 (1) at the end of buffer, collapse all cells and hide all non-level-one
|
|
4894 cells;
|
|
4895 (2) on a header line but not at the beginning or end, display
|
|
4896 properties of each cell in kotl beginning at point;
|
|
4897 (3) between cells or within the read-only indentation region to the
|
|
4898 left of a cell, then move point to prior location and prompt to
|
|
4899 move one tree to a new location in the outline; hit the Action
|
|
4900 Key twice to select the tree to move and where to move it;
|
|
4901 (4) anywhere else, scroll down a windowful.
|
|
4902 @end group
|
|
4903 @end format
|
|
4904
|
|
4905 @page
|
|
4906 @format
|
|
4907 @group
|
|
4908 When pressed at the end of a Help buffer:
|
|
4909 ACTION or ASSIST
|
|
4910 Restores window configuration prior to help display.
|
|
4911 @end group
|
|
4912 @end format
|
|
4913
|
|
4914 @format
|
|
4915 @group
|
|
4916 When pressed within a C source code file:
|
|
4917 ACTION
|
|
4918 Jumps to the definition of selected C construct:
|
24
|
4919 (1) on a `#include' statement, the include file is displayed;
|
0
|
4920 Look for include file in directory lists
|
24
|
4921 `smart-c-cpp-include-dirs' and `smart-c-include-dirs'.
|
0
|
4922 (2) on a C identifier, the identifier definition is displayed,
|
24
|
4923 assuming the identifier is found within an `etags' generated tag file
|
0
|
4924 in the current directory or any of its ancestor directories.
|
24
|
4925 (3) if `smart-c-use-lib-man' is non-nil, the C identifier is
|
0
|
4926 recognized as a library symbol, and a man page is found for the
|
|
4927 identifier, then the man page is displayed.
|
|
4928 ASSIST
|
|
4929 Jumps to the next tag matching an identifier at point.
|
|
4930 @end group
|
|
4931 @end format
|
|
4932
|
|
4933 @format
|
|
4934 @group
|
|
4935 When pressed within an assembly source code file:
|
|
4936 ACTION
|
|
4937 Jumps to the definition of selected assembly construct:
|
|
4938 (1) on an include statement, the include file is displayed;
|
|
4939 Look for include file in directory list
|
24
|
4940 `smart-asm-include-dirs'.
|
0
|
4941 (2) on an identifier, the identifier definition is displayed,
|
24
|
4942 assuming the identifier is found within an `etags' generated
|
0
|
4943 tag file in the current directory or any of its ancestor
|
|
4944 directories.
|
|
4945 ASSIST
|
|
4946 Jumps to the next tag matching an identifier at point.
|
|
4947 @end group
|
|
4948 @end format
|
|
4949
|
|
4950 @page
|
|
4951 @format
|
|
4952 @group
|
|
4953 When pressed on a Lisp symbol within a Lisp code buffer:
|
|
4954 ACTION
|
|
4955 Jumps to the definition of any selected Lisp construct.
|
24
|
4956 If on an Emacs Lisp require, load, or autoload clause and `find-library'
|
0
|
4957 from load-library package by Hallvard Furuseth <hallvard@@ifi.uio.no> has
|
|
4958 been loaded, jumps to library source, if possible.
|
|
4959 ASSIST
|
|
4960 Jumps to the next tag matching an identifier at point or if using the
|
|
4961 "wtags" package and identifier is an Emacs Lisp symbol, then displays
|
|
4962 documentation for the symbol.
|
|
4963 @end group
|
|
4964 @end format
|
|
4965
|
24
|
4966 @page
|
|
4967 @format
|
|
4968 @group
|
|
4969 When pressed within a Java source code file:
|
|
4970 ACTION
|
|
4971 Jumps to the definition of selected Java construct:
|
|
4972 (1) within a commented @@see cross-reference, the referent is
|
|
4973 displayed;
|
|
4974 (2) on a `package' or `import' statement, the referent is
|
|
4975 displayed; Look for referent files in the directory list
|
|
4976 `smart-java-package-dirs'.
|
|
4977 (3) on an Java identifier, the identifier definition is displayed,
|
|
4978 assuming the identifier is found within an `etags' generated
|
|
4979 tag file in the current directory or any of its ancestor
|
|
4980 directories."
|
|
4981 ASSIST
|
|
4982 Jumps to the next tag matching an identifier at point.
|
|
4983 @end group
|
|
4984 @end format
|
|
4985
|
|
4986 @format
|
|
4987 @group
|
|
4988 When pressed within a C++ source code file:
|
|
4989 ACTION
|
|
4990 Jumps to the definition of selected C++ construct:
|
|
4991 (1) on a `#include' statement, the include file is displayed;
|
|
4992 Look for include file in directory lists
|
|
4993 `smart-c-cpp-include-dirs' and `smart-c-include-dirs'.
|
|
4994 (2) on a C++ identifier, the identifier definition is displayed,
|
|
4995 assuming the identifier is found within an `etags' generated tag file
|
|
4996 in the current directory or any of its ancestor directories.
|
|
4997 (3) if `smart-c-use-lib-man' is non-nil, the C++ identifier is
|
|
4998 recognized as a library symbol, and a man page is found for the
|
|
4999 identifier, then the man page is displayed.
|
|
5000 ASSIST
|
|
5001 Jumps to the next tag matching an identifier at point.
|
|
5002 @end group
|
|
5003 @end format
|
|
5004
|
0
|
5005 @format
|
|
5006 @group
|
|
5007 When the OO-Browser has been loaded and the press is within a C++ buffer:
|
|
5008 ACTION or ASSIST
|
|
5009 Jumps to the definition of selected C++ construct via OO-Browser support.
|
24
|
5010 (1) on a `#include' statement, the include file is displayed;
|
0
|
5011 Look for include file in directory lists
|
24
|
5012 `smart-c-cpp-include-dirs' and `smart-c-include-dirs'.
|
0
|
5013 (2) within a method declaration, its definition is displayed;
|
|
5014 (3) on a class name, the class definition is shown.
|
|
5015 @end group
|
|
5016 @end format
|
|
5017
|
|
5018 @format
|
|
5019 @group
|
24
|
5020 When pressed within a Objective-C source code file:
|
|
5021 ACTION
|
|
5022 Jumps to the definition of selected C+ construct:
|
|
5023 (1) on a `#include' statement, the include file is displayed;
|
|
5024 Look for include file in directory lists
|
|
5025 `smart-c-cpp-include-dirs' and `smart-c-include-dirs'.
|
|
5026 (2) on an Objective-C identifier, the identifier definition is displayed,
|
|
5027 assuming the identifier is found within an `etags' generated tag file
|
|
5028 in the current directory or any of its ancestor directories.
|
|
5029 (3) if `smart-c-use-lib-man' is non-nil, the Objective-C identifier is
|
|
5030 recognized as a library symbol, and a man page is found for the
|
|
5031 identifier, then the man page is displayed.
|
|
5032 ASSIST
|
|
5033 Jumps to the next tag matching an identifier at point.
|
|
5034 @end group
|
|
5035 @end format
|
|
5036
|
|
5037 @format
|
|
5038 @group
|
0
|
5039 When the OO-Browser has been loaded and the press is within a
|
|
5040 Objective-C buffer:
|
|
5041 ACTION or ASSIST
|
|
5042 Jumps to the definition of selected Objective-C construct via
|
|
5043 OO-Browser support.
|
24
|
5044 (1) on a `#include' statement, the include file is displayed;
|
0
|
5045 Look for include file in directory lists
|
24
|
5046 `smart-c-cpp-include-dirs' and `smart-c-include-dirs'.
|
0
|
5047 (2) within a method declaration, its definition is displayed;
|
|
5048 (3) on a class name, the class definition is shown.
|
|
5049 @end group
|
|
5050 @end format
|
|
5051
|
|
5052 @format
|
|
5053 @group
|
24
|
5054 When pressed within a Fortran source code file:
|
|
5055 ACTION or ASSIST
|
|
5056 Jumps to the next tag matching an identifier at point.
|
|
5057 @end group
|
|
5058 @end format
|
|
5059
|
|
5060 @format
|
|
5061 @group
|
0
|
5062 When pressed within an occur-mode or moccur-mode buffer:
|
|
5063 ACTION or ASSIST
|
|
5064 Jumps to the source buffer and line of the current occurrence.
|
|
5065 @end group
|
|
5066 @end format
|
|
5067
|
|
5068 @page
|
|
5069 @format
|
|
5070 @group
|
|
5071 When pressed within a calendar-mode buffer:
|
|
5072 ACTION
|
|
5073 (1) at the end of the buffer, the calendar is scrolled forward 3 months;
|
|
5074 (2) to the left of any dates on a calendar line, the calendar is scrolled
|
|
5075 backward 3 months;
|
|
5076 (3) on a date, the diary entries for the date, if any, are displayed.
|
|
5077 ASSIST
|
|
5078 (1) at the end of the buffer, the calendar is scrolled backward 3 months;
|
|
5079 (2) to the left of any dates on a calendar line, the calendar is scrolled
|
|
5080 forward 3 months;
|
|
5081 (3) anywhere else, all dates with marking diary entries are marked in the
|
|
5082 calendar window.
|
|
5083 @end group
|
|
5084 @end format
|
|
5085
|
|
5086 @format
|
|
5087 @group
|
|
5088 When pressed within a man page apropos buffer:
|
|
5089 ACTION
|
|
5090 (1) on a UNIX man apropos entry, the man page for that entry is
|
|
5091 displayed in another window;
|
|
5092 (2) on or after the last line, the buffer in the other window is
|
|
5093 scrolled up a windowful.
|
|
5094 ASSIST
|
|
5095 (1) on a UNIX man apropos entry, the man page for that entry is
|
|
5096 displayed in another window;
|
|
5097 (2) on or after the last line, the buffer in the other window is
|
|
5098 scrolled down a windowful.
|
|
5099 @end group
|
|
5100 @end format
|
|
5101
|
24
|
5102 @page
|
0
|
5103 @format
|
|
5104 @group
|
24
|
5105 When pressed within an OO-Browser listing window:
|
|
5106 ACTION
|
|
5107 (1) in a blank buffer or at the end of a buffer, browser help
|
|
5108 information is displayed in the viewer window;
|
|
5109 (2) at the beginning of a (non-single char) class name, the class'
|
|
5110 ancestors are listed;
|
|
5111 (3) at the end of an entry line, scrolls listing up;
|
|
5112 (4) on the `...', following a class name, point is moved to the class
|
|
5113 descendency expansion;
|
|
5114 (5) before an element name, the implementor classes of the name are
|
|
5115 listed;
|
|
5116 (6) anywhere else on an entry line, the source is displayed for editing.
|
|
5117 ASSIST
|
|
5118 (1) in a blank buffer, a selection list of buffer files is displayed;
|
|
5119 (2) at the beginning of a (non-single char) entry, the class'
|
|
5120 descendants are listed;
|
|
5121 (3) at the end of an entry line, scrolls listing down;
|
|
5122 (4) on the `...', following a class name, point is moved to the class
|
|
5123 expansion;
|
|
5124 (5) anywhere else on a class entry line, lists the class' elements;
|
|
5125 (6) anywhere else on an element line, lists the element's implementor
|
|
5126 classes;
|
|
5127 (7) on a blank line following all entries, the current listing buffer
|
|
5128 is exited.
|
|
5129 @end group
|
|
5130 @end format
|
|
5131
|
|
5132 @format
|
|
5133 @group
|
|
5134 When pressed within an OO-Browser Command Help Menu buffer:
|
|
5135 ACTION
|
|
5136 Executes an OO-Browser command whose key binding is at point.
|
|
5137 ASSIST
|
|
5138 Displays help for an OO-Browser command whose key binding is at point.
|
|
5139 @end group
|
|
5140 @end format
|
|
5141
|
|
5142 @format
|
|
5143 @group
|
|
5144 When pressed on an identifier within an OO-Browser source file:
|
|
5145 ACTION
|
|
5146 Tries to display identifier definition.
|
|
5147 ASSIST
|
|
5148 Not applicable.
|
0
|
5149 @end group
|
|
5150 @end format
|
|
5151
|
|
5152 @page
|
|
5153 @format
|
|
5154 @group
|
24
|
5155 If pressed within an outline-mode buffer or when `selective-display' is
|
0
|
5156 non-nil:
|
|
5157 ACTION
|
|
5158 Collapses, expands, and moves outline entries.
|
|
5159 (1) after an outline heading has been cut via the Action Key, then paste
|
|
5160 the cut heading at point;
|
|
5161 (2) at the end of buffer, show all buffer text
|
|
5162 (3) at the beginning of a heading line, cut the headings subtree from the
|
|
5163 buffer;
|
|
5164 (4) on a header line but not at the beginning or end, if headings
|
|
5165 subtree is hidden then show it, otherwise hide it;
|
|
5166 (5) anywhere else, scroll up a windowful.
|
|
5167 ASSIST
|
|
5168 (1) after an outline heading has been cut via the Action Key, allow
|
|
5169 multiple pastes throughout the buffer (last paste should be done
|
|
5170 with the Action Key, not the Assist Key);
|
|
5171 (2) at the end of buffer, hide all bodies in buffer;
|
|
5172 (3) at the beginning of a heading line, cut the current heading (sans
|
|
5173 subtree) from the buffer;
|
|
5174 (4) on a header line but not at the beginning or end, if heading body is
|
|
5175 hidden then show it, otherwise hide it;
|
|
5176 (5) anywhere else, scroll down a windowful.
|
|
5177 @end group
|
|
5178 @end format
|
|
5179
|
10
|
5180 @cindex click, Info
|
|
5181 @cindex Info browsing
|
0
|
5182 @format
|
|
5183 @group
|
|
5184 If pressed within an Info manual node:
|
|
5185 ACTION
|
|
5186 (1) the first line of an Info Menu Entry or Cross Reference, the desired
|
|
5187 node is found;
|
|
5188 (2) the Up,Next,or Previous entries of a Node Header (first line),
|
|
5189 the desired node is found;
|
|
5190 (3) the File entry of a Node Header (first line),
|
24
|
5191 the `Top' node within that file is found;
|
0
|
5192 (4) at the end of the current node, the Next node is found (this will
|
24
|
5193 descend subtrees if the function `Info-global-next' is bound);
|
0
|
5194 (5) anywhere else (e.g@. at the end of a line), the current node entry is
|
|
5195 scrolled up a windowful.
|
|
5196 ASSIST
|
|
5197 (1) the first line of an Info Menu Entry or Cross Reference, the desired
|
|
5198 node is found;
|
|
5199 (2) the Up,Next,or Previous entries of a Node Header (first line),
|
|
5200 the last node in the history list is found;
|
|
5201 (3) the File entry of a Node Header (first line),
|
24
|
5202 the `DIR' root-level node is found;
|
0
|
5203 (4) at the end of the current node, the Previous node is found (this will
|
|
5204 return from subtrees if the function 'Info-global-prev is bound);
|
|
5205 (5) anywhere else (e.g@. at the end of a line), the current node entry is
|
|
5206 scrolled down a windowful.
|
|
5207 @end group
|
|
5208 @end format
|
|
5209
|
|
5210 @page
|
|
5211 @format
|
|
5212 @group
|
24
|
5213 If pressed within a Hyperbole-supported mail reader, `hmail:reader', or mail
|
|
5214 summary mode, `hmail:lister', buffer at:
|
0
|
5215 ACTION
|
|
5216 (1) a msg buffer, within the first line or at the end of a message,
|
|
5217 the next undeleted message is displayed;
|
|
5218 (2) a msg buffer within the first line of an Info cross reference, the
|
|
5219 reference is followed;
|
|
5220 (3) anywhere else in a msg buffer, the window is scrolled up one
|
|
5221 windowful;
|
|
5222 (4) a msg summary buffer on a header entry, the message corresponding to
|
|
5223 the header is displayed in the msg window;
|
|
5224 (5) a msg summary buffer, on or after the last line, the messages marked
|
|
5225 for deletion are expunged.
|
|
5226 ASSIST
|
|
5227 (1) a msg buffer, within the first line or at the end of a message,
|
|
5228 the previous undeleted message is displayed;
|
|
5229 (2) a msg buffer within the first line of an Info cross reference, the
|
|
5230 reference is followed;
|
|
5231 (3) anywhere else in a msg buffer, the window is scrolled down one
|
|
5232 windowful;
|
|
5233 (4) a msg summary buffer on a header entry, the message corresponding to
|
|
5234 the header is marked as deleted;
|
|
5235 (5) a msg summary buffer, on or after the last line, all messages are
|
|
5236 marked undeleted.
|
|
5237 @end group
|
|
5238 @end format
|
|
5239
|
10
|
5240 @cindex click, GNUS
|
|
5241 @cindex GNUS browsing
|
0
|
5242 @format
|
|
5243 @group
|
|
5244 If pressed within a GNUS listing of newsgroups buffer at:
|
|
5245 ACTION
|
|
5246 (1) a GNUS-GROUP line, that newsgroup is read;
|
|
5247 (2) to the left of any GNUS-GROUP line, on any of the whitespace, the
|
|
5248 current group is unsubscribed or resubscribed;
|
|
5249 (3) at the end of the GNUS-GROUP buffer, after all lines, checks for new
|
|
5250 news.
|
|
5251 ASSIST
|
|
5252 (1) a GNUS-GROUP line, that newsgroup is read;
|
|
5253 (2) to the left of any GNUS-GROUP line, on any of the whitespace, the
|
|
5254 user is prompted for a group name to subscribe or unsubscribe to;
|
|
5255 (3) at the end of the GNUS-GROUP buffer, after all lines, quits from the
|
|
5256 newsreader.
|
|
5257 @end group
|
|
5258 @end format
|
|
5259
|
|
5260 @page
|
|
5261 @format
|
|
5262 @group
|
|
5263 If pressed within a GNUS newsreader subject listing buffer at:
|
|
5264 ACTION
|
|
5265 (1) a GNUS-SUBJECT line, that article is read, marked deleted, and
|
|
5266 scrolled forward;
|
|
5267 (2) at the end of the GNUS-SUBJECT buffer, the next undeleted article
|
|
5268 is read or the next group is entered.
|
|
5269 ASSIST
|
|
5270 (1) a GNUS-SUBJECT line, that article is read and scrolled backward;
|
|
5271 (2) at the end of the GNUS-SUBJECT buffer, the subject is exited, the
|
|
5272 user is returned to group mode.
|
|
5273 @end group
|
|
5274 @end format
|
|
5275
|
|
5276 @format
|
|
5277 @group
|
|
5278 If pressed within a GNUS newsreader article buffer at:
|
|
5279 ACTION
|
|
5280 (1) the first line or end of an article, the next unread message is
|
|
5281 displayed;
|
|
5282 (2) the first line of an Info cross reference, the reference is followed;
|
|
5283 (3) anywhere else, the window is scrolled up a windowful.
|
|
5284 ASSIST
|
|
5285 (1) the first line or end of an article, the previous message is
|
|
5286 displayed;
|
|
5287 (2) the first line of an Info cross reference, the reference is followed;
|
|
5288 (3) anywhere else, the window is scrolled down a windowful.
|
|
5289 @end group
|
|
5290 @end format
|
|
5291
|
|
5292 @page
|
10
|
5293 @cindex click, buffer menu
|
|
5294 @cindex buffer menu
|
0
|
5295 @format
|
|
5296 @group
|
|
5297 If pressed within a listing of buffers (Buffer-menu-mode):
|
|
5298 ACTION
|
|
5299 (1) on the first column of an entry, the selected buffer is marked for
|
|
5300 display;
|
|
5301 (2) on the second column of an entry, the selected buffer is marked to be
|
|
5302 saved;
|
|
5303 (3) anywhere else within an entry line, all saves and deletes are done,
|
|
5304 and selected buffers are displayed, including the one just clicked
|
|
5305 on (if in the OO-Browser, only the selected buffer is displayed);
|
|
5306 (4) on or after the last line in the buffer, all saves and deletes are
|
|
5307 done.
|
|
5308 ASSIST
|
|
5309 (1) on the first or second column of an entry, the selected buffer is
|
|
5310 unmarked for display and for saving or deletion;
|
|
5311 (2) anywhere else within an entry line, the selected buffer is marked for
|
|
5312 deletion;
|
|
5313 (3) on or after the last line in the buffer, all display, save, and delete
|
|
5314 marks on all entries are undone.
|
|
5315 @end group
|
|
5316 @end format
|
|
5317
|
10
|
5318 @cindex click, dired
|
|
5319 @cindex dired browsing
|
0
|
5320 @format
|
|
5321 @group
|
|
5322 If pressed within a dired-mode buffer:
|
|
5323 ACTION
|
|
5324 (1) within an entry line, the selected file/directory is displayed
|
|
5325 for editing in the other window;
|
|
5326 (2) on or after the last line in the buffer, if any deletes are to be
|
|
5327 performed, they are executed after user verification, otherwise, this
|
|
5328 dired invocation is quit.
|
|
5329 ASSIST
|
24
|
5330 (1) on a `~' character, all backup files in the directory are marked for
|
0
|
5331 deletion;
|
24
|
5332 (2) on a `#' character, all auto-save files in the directory are marked
|
0
|
5333 for deletion;
|
|
5334 (3) anywhere else within an entry line, the current entry is marked for
|
|
5335 deletion;
|
|
5336 (4) on or after the last line in the buffer, all delete marks on all
|
|
5337 entries are undone.
|
|
5338 @end group
|
|
5339 @end format
|
|
5340
|
|
5341 @page
|
|
5342 @cindex click, tar
|
|
5343 @cindex tar archive browsing
|
|
5344 @cindex extracting from tar files
|
10
|
5345 @format
|
|
5346 @group
|
0
|
5347 If pressed within a tar-mode buffer:
|
|
5348 ACTION
|
|
5349 (1) within an entry line, the selected file/directory is displayed
|
|
5350 for editing in the other window;
|
|
5351 (2) on or after the last line in the buffer, if any deletes are to be
|
|
5352 performed, they are executed after user verification, otherwise, this
|
|
5353 tar file browser is quit.
|
|
5354 ASSIST
|
|
5355 (1) on an entry line, the current entry is marked for deletion;
|
|
5356 (2) on or after the last line in the buffer, all delete marks on all
|
|
5357 entries are undone.
|
|
5358 @end group
|
|
5359 @end format
|
|
5360
|
10
|
5361 @cindex man page references
|
0
|
5362 @format
|
|
5363 @group
|
|
5364 If pressed on a cross reference within a man page entry section labeled
|
|
5365 NAME, SEE ALSO, or PACKAGES USED, or within a man page C routine
|
24
|
5366 specification (see `smart-man-c-routine-ref') and man page buffer
|
0
|
5367 has either an attached file or else a @var{man-path} local variable
|
|
5368 containing its pathname:
|
|
5369 ACTION or ASSIST
|
|
5370 Displays man page or source code for cross reference.
|
|
5371 @end group
|
|
5372 @end format
|
|
5373
|
|
5374 @cindex click, world-wide web
|
|
5375 @cindex W3
|
|
5376 @cindex URL
|
|
5377 @cindex world-wide web
|
10
|
5378 @format
|
|
5379 @group
|
0
|
5380 If pressed on a world-wide web universal resource locator:
|
|
5381 ACTION
|
|
5382 Displays the URL referent at point.
|
|
5383 ASSIST
|
|
5384 Goes back to a previously displayed web page.
|
|
5385 @end group
|
|
5386 @end format
|
|
5387
|
10
|
5388 @cindex game, gomoku
|
|
5389 @cindex gomoku
|
0
|
5390 @format
|
|
5391 @group
|
|
5392 If pressed in a Gomoku game buffer.
|
|
5393 ACTION
|
|
5394 Makes a move at the space pointed to.
|
|
5395 ASSIST
|
|
5396 Takes back a prior move made at the space pointed to.
|
|
5397 @end group
|
|
5398 @end format
|
|
5399
|
10
|
5400 @cindex click, wrolo matches
|
|
5401 @cindex wrolo matches
|
0
|
5402 @format
|
|
5403 @group
|
|
5404 If pressed within an entry in the wrolo match display buffer:
|
|
5405 ACTION or ASSIST
|
|
5406 The entry is edited in the other window.
|
|
5407 @end group
|
|
5408 @end format
|
|
5409
|
|
5410 @node Outliner Keys, Suggestion or Bug Reporting, Smart Key Reference, Top
|
|
5411 @appendix Outliner Keys
|
|
5412
|
|
5413 @cindex outliner keys
|
|
5414 This appendix summarizes the specialized key bindings available when
|
|
5415 editing an outline with Hyperbole. Each key is shown together with its
|
|
5416 command binding and the documentation for that command. Normal emacs
|
|
5417 editing keys are modified to account for the structure within outlines.
|
|
5418 An outliner command which overloads an Emacs command named @emph{cmd}
|
|
5419 would be named @emph{kotl-mode:cmd}.
|
|
5420
|
|
5421 @table @code
|
|
5422
|
|
5423 @findex kfile:write
|
|
5424 @item kfile:write @{@kbd{C-x C-w}@}
|
|
5425 Write current outline to FILE.
|
|
5426
|
|
5427 @findex klink:create
|
|
5428 @item klink:create @{@kbd{C-c l}@}
|
|
5429 Insert at point an implicit link to REFERENCE.
|
|
5430 REFERENCE should be a cell-ref or a string containing "filename, cell-ref".
|
|
5431 See documentation for @code{kcell:ref-to-id} for valid cell-ref formats.
|
|
5432
|
|
5433 @findex kotl-mode:add-cell
|
|
5434 @item kotl-mode:add-cell @{@key{LFD}@}
|
|
5435 Add a cell following current cell at optional RELATIVE-LEVEL with CONTENTS string.
|
|
5436 Optional prefix arg RELATIVE-LEVEL means add as sibling if nil or >= 0, as child
|
|
5437 if equal to universal argument, @kbd{C-u}, and as sibling of current cell's
|
|
5438 parent, otherwise. If added as sibling of current level, RELATIVE-LEVEL is
|
|
5439 used as a repeat count for the number of cells to add.
|
|
5440
|
|
5441 Return last newly added cell.
|
|
5442
|
|
5443 @findex kotl-mode:add-child
|
|
5444 @item kotl-mode:add-child @{@kbd{C-c a}@}
|
|
5445 Add a new cell to current kview as first child of current cell.
|
|
5446
|
|
5447 @findex kotl-mode:add-parent
|
|
5448 @item kotl-mode:add-parent @{@kbd{C-c p}@}
|
|
5449 Add a new cell to current kview as sibling of current cell's parent.
|
|
5450
|
|
5451 @findex kotl-mode:append-cell
|
|
5452 @item kotl-mode:append-cell @{@kbd{C-c +}@}
|
|
5453 Append CONTENTS-CELL to APPEND-TO-CELL.
|
|
5454 APPEND-TO-CELL is refilled if neither cell has a no-fill property and
|
|
5455 kotl-mode:refill-flag is enabled.
|
|
5456
|
|
5457 @findex kotl-mode:back-to-indentation
|
|
5458 @item kotl-mode:back-to-indentation @{@kbd{M-m}@}
|
|
5459 Move point to the first non-read-only non-whitespace character on this line.
|
|
5460
|
|
5461 @findex kotl-mode:backward-cell
|
|
5462 @item kotl-mode:backward-cell @{@kbd{C-c C-b}@}
|
|
5463 Move to prefix ARGth prior cell (same level) within current view.
|
|
5464 Return number of cells left to move.
|
|
5465
|
|
5466 @findex kotl-mode:backward-char
|
|
5467 @item kotl-mode:backward-char @{@kbd{C-b}@}
|
|
5468 Move point backward ARG (or 1) characters and return point.
|
|
5469
|
|
5470 @findex kotl-mode:backward-kill-word
|
|
5471 @item kotl-mode:backward-kill-word @{@kbd{M-DEL}@}
|
|
5472 Kill up to prefix ARG words preceding point within a single cell.
|
|
5473
|
|
5474 @findex kotl-mode:backward-sentence
|
|
5475 @item kotl-mode:backward-sentence @{@kbd{M-a}@}
|
|
5476 Move point backward ARG (or 1) sentences and return point.
|
|
5477
|
|
5478 @findex kotl-mode:backward-word
|
|
5479 @item kotl-mode:backward-word @{@kbd{M-b}@}
|
|
5480 Move point backward ARG (or 1) words and return point.
|
|
5481
|
|
5482 @findex kotl-mode:beginning-of-buffer
|
|
5483 @item kotl-mode:beginning-of-buffer @{@kbd{M-<}@}
|
|
5484 Move point to beginning of buffer and return point.
|
|
5485
|
|
5486 @findex kotl-mode:beginning-of-cell
|
|
5487 @item kotl-mode:beginning-of-cell @{@kbd{C-c ,}@}
|
|
5488 Move point to beginning of current or ARGth - 1 prior cell and return point.
|
|
5489
|
|
5490 @findex kotl-mode:beginning-of-line
|
|
5491 @item kotl-mode:beginning-of-line @{@kbd{C-a}@}
|
|
5492 Move point to beginning of current or ARGth - 1 line and return point.
|
|
5493
|
|
5494 @findex kotl-mode:beginning-of-tree
|
|
5495 @item kotl-mode:beginning-of-tree @{@kbd{C-c ^}@}
|
|
5496 Move point to the level 1 root of the current cell's tree.
|
|
5497 Leave point at the start of the cell.
|
|
5498
|
|
5499 @findex kotl-mode:center-line
|
|
5500 @item kotl-mode:center-line @{@kbd{M-s}@}
|
|
5501 @vindex fill-column
|
|
5502 Center the line point is on, within the width specified by @var{fill-column}.
|
|
5503 This means adjusting the indentation so that it equals the distance between
|
|
5504 the end of the text and @var{fill-column}.
|
|
5505
|
|
5506 @findex kotl-mode:center-paragraph
|
|
5507 @item kotl-mode:center-paragraph @{@kbd{M-S}@}
|
|
5508 Center each nonblank line in the paragraph at or after point.
|
|
5509 See @code{center-line} for more info.
|
|
5510
|
|
5511 @findex kotl-mode:copy-after
|
|
5512 @item kotl-mode:copy-after @{@kbd{C-c c}@}
|
|
5513 Copy tree rooted at FROM-CELL-REF to follow tree rooted at TO-CELL-REF.
|
|
5514 If prefix arg CHILD-P is non-nil, make FROM-CELL-REF the first child of
|
|
5515 TO-CELL-REF, otherwise make it the sibling following TO-CELL-REF.
|
|
5516
|
|
5517 Leave point at the start of the root cell of the new tree.
|
|
5518
|
|
5519 @findex kotl-mode:copy-before
|
|
5520 @item kotl-mode:copy-before @{@kbd{C-c C-c}@}
|
|
5521 Copy tree rooted at FROM-CELL-REF to precede tree rooted at TO-CELL-REF.
|
|
5522 If prefix arg PARENT-P is non-nil, make FROM-CELL-REF the first child of
|
|
5523 TO-CELL-REF's parent, otherwise make it the preceding sibling of TO-CELL-REF.
|
|
5524
|
|
5525 Leave point at the start of the root cell of the new tree.
|
|
5526
|
|
5527 @findex kotl-mode:copy-to-buffer
|
|
5528 @item kotl-mode:copy-to-buffer @{@kbd{C-c M-c}@}
|
|
5529 Copy outline tree rooted at CELL-REF to a non-koutline BUFFER.
|
|
5530 Use 0 to copy the whole outline buffer.
|
|
5531
|
|
5532 @findex kotl-mode:copy-to-register
|
|
5533 @item kotl-mode:copy-to-register @{@kbd{C-x x}@}
|
|
5534 Copy into REGISTER the region START to END.
|
|
5535 With optional prefix arg DELETE-FLAG, delete region.
|
|
5536
|
|
5537 @findex kotl-mode:delete-backward-char
|
|
5538 @item kotl-mode:delete-backward-char @{@kbd{DEL}@}
|
|
5539 Delete up to the preceding prefix ARG characters.
|
|
5540 Return number of characters deleted.
|
|
5541 Optional KILL-FLAG non-nil means save in kill ring instead of deleting.
|
|
5542 Does not delete across cell boundaries.
|
|
5543
|
|
5544 @findex kotl-mode:delete-blank-lines
|
|
5545 @item kotl-mode:delete-blank-lines @{@kbd{C-x C-o}@}
|
|
5546 On blank line within a cell, delete all surrounding blank lines, leaving just one.
|
|
5547 On isolated blank line, delete that one.
|
|
5548 On nonblank line, delete all blank lines that follow it.
|
|
5549
|
|
5550 If nothing but whitespace follows point until the end of a cell, delete all
|
|
5551 whitespace at the end of the cell.
|
|
5552
|
|
5553 @findex kotl-mode:delete-char
|
|
5554 @item kotl-mode:delete-char @{@kbd{C-d}@}
|
|
5555 Delete up to prefix ARG characters following point.
|
|
5556 Return number of characters deleted.
|
|
5557 Optional KILL-FLAG non-nil means save in kill ring instead of deleting.
|
|
5558 Does not delete across cell boundaries.
|
|
5559
|
|
5560 @findex kotl-mode:delete-indentation
|
|
5561 @item kotl-mode:delete-indentation @{@kbd{M-^}@}
|
|
5562 Join this line to previous and fix up whitespace at join.
|
|
5563 If there is a fill prefix, delete it from the beginning of this line.
|
|
5564 With argument, join this line to following line.
|
|
5565
|
|
5566 @findex kotl-mode:demote-tree
|
|
5567 @vindex kotl-mode:refill-flag
|
|
5568 @item kotl-mode:demote-tree @{@kbd{TAB}@}
|
|
5569 Move current kotl a maximum of prefix ARG levels lower in current view.
|
|
5570 Each cell is refilled iff its @emph{no-fill} attribute is nil and
|
|
5571 @var{kotl-mode:refill-flag} is non-nil. With prefix ARG = 0, cells are
|
|
5572 demoted up to one level and kotl-mode:refill-flag is treated as true.
|
|
5573
|
|
5574 @findex kotl-mode:down-level
|
|
5575 @item kotl-mode:down-level @{@kbd{C-c C-d}@}
|
|
5576 Move down prefix ARG levels lower within current tree.
|
|
5577
|
|
5578 @findex kotl-mode:end-of-buffer
|
|
5579 @item kotl-mode:end-of-buffer @{@kbd{M->}@}
|
|
5580 Move point to end of buffer and return point.
|
|
5581
|
|
5582 @findex kotl-mode:end-of-cell
|
|
5583 @item kotl-mode:end-of-cell @{@kbd{C-c .}@}
|
|
5584 Move point to end of current or ARGth - 1 succeeding cell and return point.
|
|
5585
|
|
5586 @findex kotl-mode:end-of-line
|
|
5587 @item kotl-mode:end-of-line @{@kbd{C-e}@}
|
|
5588 Move point to end of current or ARGth - 1 line and return point.
|
|
5589
|
|
5590 @findex kotl-mode:end-of-tree
|
|
5591 @item kotl-mode:end-of-tree @{@kbd{C-c $}@}
|
|
5592 Move point to the last cell in tree rooted at the current cell.
|
|
5593 Leave point at the start of the cell.
|
|
5594
|
|
5595 @findex kotl-mode:exchange-cells
|
|
5596 @item kotl-mode:exchange-cells @{@kbd{C-c e}@}
|
|
5597 Exchange CELL-REF-1 with CELL-REF-2 in current view. Don't move point.
|
|
5598
|
|
5599 @findex kotl-mode:fill-cell
|
|
5600 @item kotl-mode:fill-cell @{@kbd{C-c M-j}@}
|
|
5601 Fill current cell within current view if it does not have the 'no-fill attribute.
|
|
5602 With optional JUSTIFY, justify cell as well.
|
|
5603 IGNORE-COLLAPSED-P is used when caller has already expanded cell, indicating
|
|
5604 it is not collapsed.
|
|
5605
|
|
5606 @findex kotl-mode:fill-paragraph
|
|
5607 @item kotl-mode:fill-paragraph @{@kbd{C-x f}@}
|
|
5608 Fill current paragraph within cell. With optional JUSTIFY, justify
|
|
5609 paragraph as well. Ignore any non-nil no-fill attribute attached to the
|
|
5610 cell.
|
|
5611
|
|
5612 @findex kotl-mode:fill-tree
|
|
5613 @item kotl-mode:fill-tree @{@kbd{C-M-j}@}
|
|
5614 Refill each cell within the tree whose root is at point.
|
|
5615
|
|
5616 @findex kotl-mode:first-sibling
|
|
5617 @item kotl-mode:first-sibling @{@kbd{C-c <}@}
|
|
5618 Move point to the first sibling of the present cell.
|
|
5619 Leave point at the start of the cell or at its present position if it is
|
|
5620 already within the first sibling cell.
|
|
5621
|
|
5622 @findex kotl-mode:fkey-backward-char
|
|
5623 @item kotl-mode:fkey-backward-char @{@kbd{left}@}
|
|
5624 Move point backward ARG (or 1) characters and return point.
|
|
5625
|
|
5626 @findex kotl-mode:fkey-forward-char
|
|
5627 @item kotl-mode:fkey-forward-char @{@kbd{right}@}
|
|
5628 Move point forward ARG (or 1) characters and return point.
|
|
5629
|
|
5630 @findex kotl-mode:fkey-next-line
|
|
5631 @item kotl-mode:fkey-next-line @{@kbd{down}@}
|
|
5632 Move point to ARGth next line and return point.
|
|
5633
|
|
5634 @findex kotl-mode:fkey-previous-line
|
|
5635 @item kotl-mode:fkey-previous-line @{@kbd{up}@}
|
|
5636 Move point to ARGth previous line and return point.
|
|
5637
|
|
5638 @findex kotl-mode:forward-cell
|
|
5639 @item kotl-mode:forward-cell @{@kbd{C-c C-f}@}
|
|
5640 Move to prefix ARGth following cell (same level) within current view.
|
|
5641 Return number of cells left to move.
|
|
5642
|
|
5643 @findex kotl-mode:forward-char
|
|
5644 @item kotl-mode:forward-char @{@kbd{C-f}@}
|
|
5645 Move point forward ARG (or 1) characters and return point.
|
|
5646
|
|
5647 @findex kotl-mode:forward-para
|
|
5648 @item kotl-mode:forward-para @{@kbd{M-n}@}
|
|
5649 Move to prefix ARGth next cell (any level) within current view.
|
|
5650
|
|
5651 @findex kotl-mode:forward-paragraph
|
|
5652 @item kotl-mode:forward-paragraph @{@kbd{M-]}@}
|
|
5653 Move to prefix ARGth next cell (any level) within current view.
|
|
5654
|
|
5655 @findex kotl-mode:forward-sentence
|
|
5656 @item kotl-mode:forward-sentence @{@kbd{M-e}@}
|
|
5657 Move point forward ARG (or 1) sentences and return point.
|
|
5658
|
|
5659 @findex kotl-mode:forward-word
|
|
5660 @item kotl-mode:forward-word @{@kbd{M-f}@}
|
|
5661 Move point forward ARG (or 1) words and return point.
|
|
5662
|
|
5663 @findex kotl-mode:goto-cell
|
|
5664 @item kotl-mode:goto-cell @{@kbd{C-c g}@}
|
24
|
5665 Move point to start of cell given by CELL-REF. (See `kcell:ref-to-id'.)
|
0
|
5666 Return point iff CELL-REF is found within current view.
|
|
5667 With a prefix argument, CELL-REF is assigned the argument value for use
|
|
5668 as an idstamp.
|
|
5669
|
|
5670 Optional second arg, ERROR-P, non-nil means signal an error if CELL-REF is
|
|
5671 not found within current view. Will signal same error if called
|
|
5672 interactively when CELL-REF is not found.
|
|
5673
|
|
5674 @findex kotl-mode:hide-sublevels
|
|
5675 @item kotl-mode:hide-sublevels @{@kbd{C-X $}@}
|
|
5676 Hide all cells in outline at levels deeper than LEVELS-TO-KEEP (a
|
|
5677 number). Shows any hidden cells within LEVELS-TO-KEEP. 1 is the first
|
|
5678 level.
|
|
5679
|
|
5680 @findex kotl-mode:hide-subtree
|
|
5681 @item kotl-mode:hide-subtree @{@kbd{C-M-h}@}
|
|
5682 Hide subtree, ignoring root, at optional CELL-REF (defaults to cell at
|
|
5683 point).
|
|
5684
|
|
5685 @findex kotl-mode:hide-tree
|
|
5686 @item kotl-mode:hide-tree @{@kbd{C-c BS}@}
|
|
5687 Collapse kotl rooted at optional CELL-REF (defaults to cell at point).
|
|
5688
|
|
5689 @findex kotl-mode:insert-file
|
|
5690 @item kotl-mode:insert-file @{@kbd{C-x i}@}
|
|
5691 Insert each paragraph in IMPORT-FROM as a separate cell in the current view.
|
|
5692 Insert as sibling cells following the current cell. IMPORT-FROM may be a
|
|
5693 buffer name or file name (file name completion is provided).
|
|
5694
|
|
5695 @findex kotl-mode:insert-register
|
|
5696 @item kotl-mode:insert-register @{@kbd{C-c r i}@}
|
|
5697 Insert contents of register REGISTER at point in current cell.
|
|
5698 REGISTER is a character naming the register to insert.
|
|
5699 Normally puts point before and mark after the inserted text.
|
|
5700 If optional second arg is non-nil, puts mark before and point after.
|
|
5701 Interactively, second arg is non-nil if prefix arg is supplied.
|
|
5702
|
|
5703 @findex kotl-mode:just-one-space
|
|
5704 @item kotl-mode:just-one-space @{@kbd{M-\}@}
|
|
5705 Delete all spaces and tabs around point and leave one space.
|
|
5706
|
|
5707 @findex kotl-mode:kcell-help
|
|
5708 @item kotl-mode:kcell-help @{@kbd{C-c h}@}
|
|
5709 Display a temporary buffer with CELL-REF's properties.
|
|
5710 CELL-REF defaults to current cell.
|
|
5711 Optional prefix arg CELLS-FLAG selects the cells to print:
|
|
5712 If = 1, print CELL-REF's cell only;
|
|
5713 If > 1, print CELL-REF's visible kotl (the tree rooted at CELL-REF);
|
|
5714 If < 1, print all visible cells in current view (CELL-REF is not used).
|
|
5715
|
|
5716 See also the documentation for @code{kotl-mode:properties}.
|
|
5717
|
|
5718 @findex kotl-mode:kill-contents
|
|
5719 @item kotl-mode:kill-contents @{@kbd{C-c k}@}
|
|
5720 Kill contents of cell from point to cell end.
|
|
5721 With prefix ARG, kill entire cell contents.
|
|
5722
|
|
5723 @findex kotl-mode:kill-line
|
|
5724 @item kotl-mode:kill-line @{@kbd{C-k}@}
|
|
5725 Kill ARG lines from point.
|
|
5726
|
|
5727 @findex kotl-mode:kill-region
|
|
5728 @item kotl-mode:kill-region @{@kbd{C-w}@}
|
|
5729 Kill region between START and END within a single kcell.
|
|
5730 With optional COPY-P equal to 't, copy region to kill ring but does not
|
|
5731 kill it. With COPY-P any other non-nil value, return region as a
|
|
5732 string without affecting kill ring.
|
|
5733
|
|
5734 If the buffer is read-only and COPY-P is nil, the region will not be deleted
|
|
5735 but it will be copied to the kill ring and then an error will be signaled.
|
|
5736
|
|
5737 @findex kotl-mode:kill-ring-save
|
|
5738 @item kotl-mode:kill-ring-save @{@kbd{M-w}@}
|
|
5739 Copy region between START and END within a single kcell to kill ring.
|
|
5740
|
|
5741 @findex kotl-mode:kill-sentence
|
|
5742 @item kotl-mode:kill-sentence @{@kbd{M-k}@}
|
|
5743 Kill up to prefix ARG (or 1) sentences following point within a single cell.
|
|
5744
|
|
5745 @findex kotl-mode:kill-tree
|
|
5746 @item kotl-mode:kill-tree @{@kbd{C-c C-k}@}
|
|
5747 Kill ARG following trees starting with tree rooted at point.
|
|
5748 If ARG is not a non-positive number, nothing is done.
|
|
5749
|
|
5750 @findex kotl-mode:kill-word
|
|
5751 @item kotl-mode:kill-word @{@kbd{M-d}@}
|
|
5752 Kill up to prefix ARG words following point within a single cell.
|
|
5753
|
|
5754 @findex kotl-mode:last-sibling
|
|
5755 @item kotl-mode:last-sibling @{@kbd{C-c >}@}
|
|
5756 Move point to the last sibling of the present cell.
|
|
5757 Leave point at the start of the cell or at its present position if it is
|
|
5758 already within the last sibling cell.
|
|
5759
|
|
5760 @findex kotl-mode:mail-tree
|
|
5761 @item kotl-mode:mail-tree @{@kbd{C-c @@}@}
|
|
5762 Mail outline tree rooted at CELL-REF. Use "0" for whole outline buffer.
|
|
5763
|
|
5764 @findex kotl-mode:move-after
|
|
5765 @item kotl-mode:move-after @{@kbd{C-c m}@}
|
|
5766 Move tree rooted at FROM-CELL-REF to follow tree rooted at TO-CELL-REF.
|
|
5767 If prefix arg CHILD-P is non-nil, make FROM-CELL-REF the first child of
|
|
5768 TO-CELL-REF, otherwise make it the sibling following TO-CELL-REF.
|
|
5769 With optional COPY-P, copies tree rather than moving it.
|
|
5770
|
|
5771 Leave point at original location but return the tree's new start point.
|
|
5772
|
|
5773 @findex kotl-mode:move-before
|
|
5774 @item kotl-mode:move-before @{@kbd{C-c RET}@}
|
|
5775 Move tree rooted at FROM-CELL-REF to precede tree rooted at TO-CELL-REF.
|
|
5776 If prefix arg PARENT-P is non-nil, make FROM-CELL-REF the first child of
|
|
5777 TO-CELL-REF's parent, otherwise make it the preceding sibling of TO-CELL-REF.
|
|
5778 With optional COPY-P, copies tree rather than moving it.
|
|
5779
|
|
5780 Leave point at original location but return the tree's new start point.
|
|
5781
|
|
5782 @findex kotl-mode:newline
|
|
5783 @item kotl-mode:newline @{@kbd{RET}@}
|
|
5784 Insert a newline. With ARG, insert ARG newlines.
|
|
5785 In Auto Fill mode, if no numeric arg, break the preceding line if it is
|
|
5786 too long.
|
|
5787
|
|
5788 @findex kotl-mode:next-cell
|
|
5789 @item kotl-mode:next-cell @{@kbd{C-c C-n}@}
|
|
5790 Move to prefix ARGth next cell (any level) within current view.
|
|
5791
|
|
5792 @findex kotl-mode:next-line
|
|
5793 @item kotl-mode:next-line @{@kbd{C-n}@}
|
|
5794 Move point to ARGth next line and return point.
|
|
5795
|
|
5796 @findex kotl-mode:open-line
|
|
5797 @item kotl-mode:open-line @{@kbd{C-o}@}
|
|
5798 Insert a newline and leave point before it.
|
|
5799 With arg N, insert N newlines.
|
|
5800
|
|
5801 @findex kotl-mode:overview
|
|
5802 @item kotl-mode:overview @{@kbd{C-c C-o}@}
|
|
5803 Show only the first line of each cell in the current outline.
|
|
5804
|
|
5805 @findex kotl-mode:previous-cell
|
|
5806 @item kotl-mode:previous-cell @{@kbd{C-c C-p}@}
|
|
5807 Move to prefix ARGth previous cell (any level) within current view.
|
|
5808
|
|
5809 @findex kotl-mode:previous-line
|
|
5810 @item kotl-mode:previous-line @{@kbd{C-p}@}
|
|
5811 Move point to ARGth previous line and return point.
|
|
5812
|
|
5813 @findex kotl-mode:promote-tree
|
|
5814 @vindex kotl-mode:refill-flag
|
|
5815 @item kotl-mode:promote-tree @{@kbd{M-TAB}@}
|
|
5816 Move current kotl a maximum of prefix ARG levels higher in current view.
|
|
5817 Each cell is refilled iff its @emph{no-fill} attribute is nil and
|
|
5818 @var{kotl-mode:refill-flag} is non-nil. With prefix ARG = 0, cells are
|
|
5819 promoted up to one level and kotl-mode:refill-flag is treated as true.
|
|
5820
|
|
5821 @findex kotl-mode:scroll-down
|
|
5822 @item kotl-mode:scroll-down @{@kbd{M-v}@}
|
|
5823 Scroll text of current window downward ARG lines; or a windowful if no ARG.
|
|
5824
|
|
5825 @findex kotl-mode:scroll-up
|
|
5826 @item kotl-mode:scroll-up @{@kbd{C-v}@}
|
|
5827 Scroll text of current window upward ARG lines; or a windowful if no ARG.
|
|
5828
|
|
5829 @findex kotl-mode:set-cell-attribute
|
|
5830 @item kotl-mode:set-cell-attribute @{@kbd{C-c C-i}@}
|
|
5831 Include ATTRIBUTE VALUE with the current cell or the cell at optional POS.
|
|
5832 Replaces any existing value that ATTRIBUTE has.
|
|
5833 When called interactively, it displays the setting in the minibuffer as
|
|
5834 confirmation.
|
|
5835
|
|
5836 @findex kotl-mode:set-fill-prefix
|
|
5837 @item kotl-mode:set-fill-prefix @{@kbd{C-x l}@}
|
|
5838 Sets fill prefix to line up to point.
|
|
5839 With prefix arg TURN-OFF or at begin of line, turns fill prefix off.
|
|
5840
|
|
5841 @findex kotl-mode:show-all
|
|
5842 @item kotl-mode:show-all @{@kbd{C-c C-a}@}
|
|
5843 Show (expand) all cells in current view.
|
|
5844
|
|
5845 @findex kotl-mode:show-subtree
|
|
5846 @item kotl-mode:show-subtree
|
|
5847 Show subtree, ignoring root, at optional CELL-REF (defaults to cell at
|
|
5848 point).
|
|
5849
|
|
5850 @findex kotl-mode:show-tree
|
|
5851 @item kotl-mode:show-tree @{@kbd{C-c C-s}@}
|
|
5852 Display fully expanded kotl rooted at CELL-REF.
|
|
5853
|
|
5854 @findex kotl-mode:split-cell
|
|
5855 @item kotl-mode:split-cell @{@kbd{C-c s}@}
|
|
5856 Split cell into two cells and move to new cell.
|
|
5857 Cell contents after point become part of newly created cell.
|
|
5858 Default is to create new cell as sibling of current cell.
|
|
5859 With optional universal ARG, @kbd{C-u}, new cell is added as child of
|
|
5860 current cell.
|
|
5861
|
|
5862 @findex kotl-mode:top-cells
|
|
5863 @item kotl-mode:top-cells @{@kbd{C-c C-t}@}
|
|
5864 Collapse all level 1 cells in view and hide any deeper sublevels.
|
|
5865
|
|
5866 @findex kotl-mode:transpose-cells
|
|
5867 @item kotl-mode:transpose-cells @{@kbd{C-c t}@}
|
|
5868 Exchange current and previous visible cells, leaving point after both.
|
|
5869 If no previous cell, exchange current with next cell.
|
|
5870 With prefix ARG, take current cell and move it past ARG cells.
|
|
5871 With prefix ARG = 0, interchange the cell that contains point with the cell
|
|
5872 that contains mark.
|
|
5873
|
|
5874 @findex kotl-mode:transpose-chars
|
|
5875 @item kotl-mode:transpose-chars @{@kbd{C-t}@}
|
|
5876 Interchange characters around point, moving forward one character.
|
|
5877 With prefix ARG, take character before point and drag it forward past ARG
|
|
5878 other characters (backward if ARG negative).
|
|
5879 If no prefix ARG and at end of line, the previous two characters are
|
|
5880 exchanged.
|
|
5881
|
|
5882 @findex kotl-mode:transpose-lines
|
|
5883 @item kotl-mode:transpose-lines @{@kbd{C-x C-t}@}
|
|
5884 Exchange current line and previous line, leaving point after both.
|
|
5885 If no previous line, exchange current with next line.
|
|
5886 With prefix ARG, take previous line and move it past ARG lines.
|
|
5887 With prefix ARG = 0, interchange the line that contains point with the line
|
|
5888 that contains mark.
|
|
5889
|
|
5890 @findex kotl-mode:transpose-words
|
|
5891 @item kotl-mode:transpose-words @{@kbd{M-t}@}
|
|
5892 Interchange words around point, leaving point after both words.
|
|
5893 With prefix ARG, take word before or around point and drag it forward past
|
|
5894 ARG other words (backward if ARG negative). If ARG is zero, the words around
|
|
5895 or after point and around or after mark are interchanged.
|
|
5896
|
|
5897 @findex kotl-mode:up-level
|
|
5898 @item kotl-mode:up-level @{@kbd{C-c C-u}@}
|
|
5899 Move up prefix ARG levels higher in current outline view.
|
|
5900
|
|
5901 @findex kotl-mode:yank
|
|
5902 @item kotl-mode:yank @{@kbd{C-y}@}
|
|
5903 Reinsert the last stretch of killed text.
|
|
5904 More precisely, reinsert the stretch of killed text most recently
|
|
5905 killed OR yanked. Put point at end, and set mark at beginning.
|
|
5906 With just C-u as argument, same but put point at beginning (and mark at end).
|
|
5907 With argument N, reinsert the Nth most recently killed stretch of killed
|
|
5908 text.
|
|
5909 See also the command M-x kotl-mode:yank-pop.
|
|
5910
|
|
5911 @findex kotl-mode:yank-pop
|
|
5912 @item kotl-mode:yank-pop @{@kbd{M-y}@}
|
|
5913 Replace just-yanked stretch of killed text with a different stretch.
|
|
5914 This command is allowed only immediately after a @code{yank} or a
|
|
5915 @code{yank-pop}. At such a time, the region contains a stretch of
|
|
5916 reinserted previously-killed text. @code{yank-pop} deletes that text
|
|
5917 and inserts in its place a different stretch of killed text.
|
|
5918
|
|
5919 With no argument, the previous kill is inserted.
|
|
5920 With argument N, insert the Nth previous kill.
|
|
5921 If N is negative, this is a more recent kill.
|
|
5922
|
|
5923 The sequence of kills wraps around, so that after the oldest one
|
|
5924 comes the newest one.
|
|
5925
|
|
5926 @findex kotl-mode:zap-to-char
|
|
5927 @item kotl-mode:zap-to-char @{@kbd{M-z}@}
|
|
5928 Kill up to and including prefix ARG'th occurrence of CHAR.
|
|
5929 Goes backward if ARG is negative; error if CHAR not found.
|
|
5930
|
|
5931 @findex kview:set-label-type
|
|
5932 @item kview:set-label-type @{@kbd{C-c C-l}@}
|
|
5933 Change kview's label display type to NEW-TYPE, updating all displayed labels.
|
|
5934 See documentation for variable, kview:default-label-type, for
|
|
5935 valid values of NEW-TYPE.
|
|
5936
|
|
5937 @findex kvspec:activate
|
|
5938 @item kvspec:activate @{@kbd{C-c C-v}@}
|
|
5939 Activate optional VIEW-SPEC or existing view spec in the current koutline.
|
|
5940 VIEW-SPEC is a string. See <$@{hyperb:dir@}/kotl/EXAMPLE.kotl, 2b17=048> for
|
|
5941 details on valid view specs.
|
|
5942
|
|
5943 @findex kvspec:toggle-blank-lines
|
|
5944 @item kvspec:toggle-blank-lines @{@kbd{C-c b}@}
|
|
5945 Toggle blank lines between cells on or off.
|
|
5946
|
|
5947 @end table
|
|
5948
|
|
5949 @node Suggestion or Bug Reporting, Questions and Answers, Outliner Keys, Top
|
|
5950 @appendix Suggestion or Bug Reporting
|
|
5951
|
|
5952 @xref{Mail Lists}, for complete details on Hyperbole mailing lists and
|
|
5953 how to subscribe.
|
|
5954
|
|
5955 @cindex version description
|
|
5956 @cindex Hyperbole version
|
|
5957 If you find any errors in Hyperbole's operation or documentation, feel
|
|
5958 free to report them to the Hyperbole discussion list:
|
24
|
5959 <hyperbole@@infodock.com>. Be sure to use the Msg/Compose-Hypb-Mail
|
0
|
5960 minibuffer menu item whenever you send a message to the mail list since
|
|
5961 it will insert important system version information for you.
|
|
5962
|
|
5963 If you use Hyperbole mail or news support, @ref{Buttons in Mail}, a
|
|
5964 click with your Action Key on the Hyperbole mail list address
|
|
5965 will insert a description of your Hyperbole configuration information
|
|
5966 into your outgoing message, so that you do not have to type it. This is
|
|
5967 useful when composing a reply for the Hyperbole mail list. Otherwise,
|
|
5968 be sure to include your Emacs, Hyperbole and window system versions in
|
|
5969 your message. Your Hyperbole version number can be found in the
|
|
5970 top-level Hyperbole menu.
|
|
5971
|
|
5972 Please use your subject line to state the position that your message
|
|
5973 takes on the topic that it addresses, e.g@. send "Subject: Basic bug in
|
|
5974 top-level Hyperbole menu." rather than "Subject: Hyperbole bug". This
|
|
5975 simple rule makes all e-mail communication much easier.
|
|
5976
|
|
5977 If you have suggestions on how to improve Hyperbole, send them to the
|
|
5978 same address. Here are some issues you might address:
|
|
5979
|
|
5980 @itemize @bullet
|
|
5981 @item
|
|
5982 What did you like and dislike about the system?
|
|
5983 @item
|
|
5984 What kinds of tasks, if any, does it seem to help you with?
|
|
5985 @item
|
|
5986 What did you think of the Emacs-based user interface?
|
|
5987 @item
|
|
5988 How was the Hyperbole Manual and other documentation?
|
|
5989 @item
|
|
5990 Was the setup trivial, average or hard?
|
|
5991 @item
|
|
5992 What areas of Hyperbole would you like to see expanded/added?
|
|
5993 @item
|
|
5994 How does it compare to other hypertext tools you have used?
|
|
5995 @item
|
|
5996 Was it easy or difficult to create your own types? Why?
|
|
5997 @item
|
|
5998 Did you get any use out of the external system encapsulations?
|
|
5999 @end itemize
|
|
6000
|
|
6001 @node Questions and Answers, Future Work, Suggestion or Bug Reporting, Top
|
|
6002 @appendix Questions and Answers
|
|
6003
|
|
6004 @table @emph
|
|
6005 @cindex Smart Key
|
|
6006 @cindex mouse key bindings
|
|
6007 @findex hmouse-setup
|
|
6008 @findex hmouse-get-bindings
|
|
6009 @vindex file, hmouse-sh.el
|
|
6010 @vindex file, hmouse-reg.el
|
|
6011 @item How can I change the Smart Mouse Key bindings?
|
|
6012 @findex hmouse-shift-buttons
|
|
6013 Since the Smart Mouse Keys are set up for use under five different Emacs
|
|
6014 configurations, there is no easy way to provide user level
|
|
6015 customization. The command, @code{hmouse-shift-buttons}, can be used to
|
|
6016 select between shifted and unshifted Smart Mouse Keys. Any other mouse
|
|
6017 key binding changes must be done by editing the @code{hmouse-setup} and
|
|
6018 @code{hmouse-get-bindings} functions in the @file{hmouse-sh.el} and
|
|
6019 @file{hmouse-reg.el} files.
|
|
6020
|
|
6021 @vindex file, hmouse-key.el
|
|
6022 @vindex file, hui-window.el
|
|
6023 @vindex hkey-alist
|
|
6024 @vindex hmouse-alist
|
|
6025 The @var{hkey-alist} and @var{hmouse-alist} variable
|
|
6026 settings in @file{hui-mouse.el} and @file{hui-window.el} must be altered
|
|
6027 if you want to change what the Smart Keys do in particular contexts.
|
|
6028 You should then update the Smart Key summary documentation in the file,
|
|
6029 @file{hypb-mouse.txt}, and potentially the same summary in this manual.
|
|
6030
|
|
6031
|
|
6032 @item Missing Action Types
|
|
6033
|
|
6034 What if someone sends a mail message with a button for which I do
|
|
6035 not have the action type? Or a button whose link referent I can't access?
|
|
6036
|
|
6037 You receive an error that an action type is not defined or a link
|
|
6038 referent is not accessible/readable if you try to use the button. This
|
|
6039 is hardly different than trying to get through a locked door without a
|
|
6040 key; you try the doorknob, find that it is locked, and then realize that
|
|
6041 you need to take a different approach or else give up.
|
|
6042
|
|
6043 Like all communication, people need to coordinate, which usually
|
|
6044 requires an iterative process. If you get a mail message with a button
|
|
6045 for which you don't have the action type, you mail the sender and
|
|
6046 request it.
|
|
6047
|
|
6048 @cindex global button, modify
|
|
6049 @item How can I modify a number of global buttons in succession?
|
|
6050
|
|
6051 Rather than typing the name for each, it is quicker to jump to the
|
|
6052 global button file and edit the buttons there as you would any explicit
|
|
6053 buttons. By default, the ButFile/PersonalFile menu item takes you to
|
|
6054 the file where global buttons are saved.
|
|
6055
|
|
6056 @item Why is all the button data scattered across directories?
|
|
6057
|
|
6058 When you think of a hyper-space that you depend on every day, you don't
|
|
6059 want to have a single point of failure make you incapable of doing work.
|
|
6060 With Hyperbole, if some directories become unavailable for a particular
|
|
6061 time (e.g@. the filesystems on which they reside are dismounted) you can
|
|
6062 still work elsewhere with minimal effect. We believe this to be a
|
|
6063 compelling factor to leave the design with external button data storage.
|
|
6064
|
|
6065 This design also permits the potential addition of buttons to read-only
|
|
6066 media.
|
|
6067
|
|
6068 @item Why are action types defined separately from their implicit button types?
|
|
6069
|
|
6070 Any category of button can make use of an action type. Some action types
|
|
6071 are useful as behavior definitions for a variety of button categories,
|
|
6072 so all action types are defined separately to give them independence
|
|
6073 from those types which apply them.
|
|
6074
|
|
6075 For implicit button types that require a lot of code, it is useful to
|
|
6076 add a module that includes the implicit button type definition, its
|
|
6077 action type definition and supporting code.
|
|
6078
|
|
6079 @end table
|
|
6080
|
|
6081
|
|
6082 @node Future Work, References, Questions and Answers, Top
|
|
6083 @appendix Future Work
|
|
6084
|
|
6085 @noindent
|
|
6086 This appendix is included for a number of reasons:
|
|
6087
|
|
6088 @itemize @bullet
|
|
6089 @item
|
|
6090 to better allow you to assess whether to work with Hyperbole by
|
|
6091 providing sketches of possible additions:
|
|
6092 @item
|
|
6093 to direct further development effort towards known needs;
|
|
6094 @item
|
|
6095 and to acknowledge known weaknesses in the current system.
|
|
6096 @end itemize
|
|
6097
|
|
6098 @table @asis
|
|
6099
|
|
6100 Note that due to a lack of volunteers to further develop Hyperbole, much
|
|
6101 of this work may not be done. So if you want to see these features,
|
|
6102 encourage qualified people to volunteer.
|
|
6103
|
|
6104 @item Button Copying, Killing, and Yanking
|
|
6105 There is as yet no means of transferring explicit buttons among buffers.
|
|
6106 We realize this is a critical need. Users should be able to manipulate
|
|
6107 text with embedded buttons in ordinary ways. This will probably be
|
|
6108 implemented only for versions of Emacs 19 and higher. It will store the
|
|
6109 button attributes as text attributes within the buffers so that if a
|
|
6110 button is copied, its attributes follow. When a buffer is saved, the
|
|
6111 attributes also will be saved.
|
|
6112
|
|
6113 @item Trails
|
|
6114 Trails are an extension to the basic history mechanism presently offered
|
|
6115 by Hyperbole. Trails will allow a user to capture, edit and store a
|
|
6116 specific sequence and set of views of information for later replay by
|
|
6117 other users. Conditional branching may also be supported.
|
|
6118
|
|
6119 @item Outliner View Mode
|
|
6120 This will complement the outliner editing mode by using simple one
|
|
6121 character keys that normally insert characters to instead modify the
|
|
6122 view of an outline and to move around in it, for ease of study.
|
|
6123 Switching between view and edit modes will also be simple.
|
|
6124
|
|
6125 @item Storage of button data within button source files
|
|
6126 The current design choice of storing buttons external to the source file
|
|
6127 was made under the assumption that people should be able to look at
|
|
6128 files that contain Hyperbole buttons with any standard editor or tool
|
|
6129 and not be bothered by the ugly button data (since they won't be able to
|
|
6130 utilize the buttons anyway, they don't need to see or have access to
|
|
6131 them).
|
|
6132
|
|
6133 In many contexts, embedding the button data within the source files may
|
|
6134 be a better choice, so a provision which would allow selection of either
|
|
6135 configuration may be added. Here are some of the PROs and CONs of both
|
|
6136 design choices:
|
|
6137 @sp 1
|
|
6138
|
|
6139 @example
|
|
6140 @group
|
|
6141 POSITIVE NEGATIVE
|
|
6142
|
|
6143 Button data in source file
|
|
6144 Documents can stand alone. All edit operators have
|
|
6145 Normal file operations apply. to account for file
|
|
6146 structure and hide
|
|
6147 Simplifies creation and internal components.
|
|
6148 facility expansion for
|
|
6149 structured and multi-media
|
|
6150 files.
|
|
6151
|
|
6152 Button data external to source file
|
|
6153 Files can be displayed and Currently, bdata for
|
|
6154 printed exactly as they look. whole directory is
|
|
6155 No special display formatting locked when any bdata
|
|
6156 is necessary. entry is locked.
|
|
6157
|
|
6158 Button-based searches and
|
|
6159 database-type lookup operations
|
|
6160 need only search one file
|
|
6161 per directory.
|
|
6162 @end group
|
|
6163 @end example
|
|
6164 @sp 2
|
|
6165
|
|
6166 @item Forms-based Interfaces
|
|
6167
|
|
6168 This will allow one to create buttons more flexibly. For example, button
|
|
6169 attributes could be given in any order. Entry of long code sequences,
|
|
6170 quick note taking and cross-referencing would also be made easier.
|
|
6171
|
|
6172 @item Collaboration Support
|
|
6173
|
|
6174 From the early stages of Hyperbole design, collaborative work
|
|
6175 environments have been considered. A simple facility has demonstrated
|
|
6176 broadcast of button activations to a number of workstations on a local
|
|
6177 area network, so that one user can lead others around an information
|
|
6178 space, as during an online design review. (This facility was never
|
|
6179 adapted to the current Hyperbole release, however.) We shall do some
|
|
6180 work in specific collaborative mechanisms, but we also expect that
|
|
6181 others who concentrate in collaborative work will provide more extensive
|
|
6182 capabilities.
|
|
6183
|
|
6184 @end table
|
|
6185
|
|
6186 @node References, Key Binding Index, Future Work, Top
|
|
6187 @appendix References
|
|
6188
|
|
6189 @table @b
|
|
6190 @item [AkMcYo88]
|
|
6191 Akscyn, R. M., D. L. McCracken and E. A. Yoder. KMS: A
|
|
6192 Distributed Hypermedia System for Managing Knowledge in Organizations.
|
|
6193 @emph{Communications of the ACM}, Vol. 31, No. 7, July 1988, pp. 820-835.
|
|
6194
|
|
6195 @item [Bro87]
|
|
6196 Brown, P. J. Turning Ideas into Products: The Guide System.
|
|
6197 @emph{Proceedings of Hypertext '87}, November 13-15, 1987, Chapel Hill, NC.
|
|
6198 ACM: NY, NY, pp. 33-40.
|
|
6199
|
|
6200 @item [Con87]
|
|
6201 Conklin, Jeff. Hypertext: An Introduction and Survey. @emph{IEEE
|
|
6202 Computer}, Vol. 20, No. 9, September 1987, pp. 17-41.
|
|
6203
|
|
6204 @item [Eng68]
|
|
6205 Engelbart, D., and W. English. A research center for augmenting
|
|
6206 human intellect. @emph{Proceedings of the Fall Joint Computer Conference},
|
|
6207 33, 1, AFIPS Press: Montvale, NJ, 1968, pp. 395-410.
|
|
6208
|
|
6209 @item [Eng84a]
|
|
6210 Engelbart, D. C. Authorship Provisions in Augment.
|
|
6211 @emph{Proceedings of the 1984 COMPCON Conference (COMPCON '84 Digest)},
|
|
6212 February 27-March 1, 1984, San Francisco, CA. IEEE Computer Society Press,
|
|
6213 Spring, 1984. 465-472. (OAD,2250,)
|
|
6214
|
|
6215 @item [Eng84b]
|
|
6216 Engelbart, D. C. Collaboration Support Provisions in Augment.
|
|
6217 @emph{Proceedings of the AFIPS Office Automation Conference (OAC '84 Digest)},
|
|
6218 February, 1984, Los Angeles, CA, 1984. 51-58. (OAD,2221,)
|
|
6219
|
|
6220 @item [Fos88]
|
|
6221 Foss, C. L. Effective Browsing in Hypertext Systems.
|
|
6222 @emph{Proceedings of the Conference on User-Oriented Content-Based Text and
|
|
6223 Image Handling (RIAO 88)}, March 21-24, MIT, Cambridge MA. Centre de Hautes
|
|
6224 Etudes Internationales d'Informatique Documentaire, 1988, pp. 82-98.
|
|
6225
|
|
6226 @item [GaSmMe86]
|
|
6227 Garrett, N., K. E. Smith and N. Meyrowitz. Intermedia: Issues,
|
|
6228 Strategies, and Tactics in the Design of a Hypermedia Document System.
|
|
6229 @emph{Computer-Supported Cooperative Work (CSCW '86) Proceedings}, December
|
|
6230 3-5, Austin, TX, 1986, pp. 163-174.
|
|
6231
|
|
6232 @item [HaMoTr87]
|
|
6233 Halasz, F. G., T. P. Moran and R. H. Trigg. NoteCards in a
|
|
6234 Nutshell. @emph{Proceedings of the CHI and GI '87 Conference on Human Factors
|
|
6235 in Computing Systems}, Toronto, J. M. Carroll and P. P. Tanner, (editors),
|
|
6236 ACM: NY, NY, April 1987, pp. 45-52.
|
|
6237
|
|
6238 @item [Har88]
|
|
6239 Harvey, G. @emph{Understanding HyperCard.} Alameda, CA: SYBEX, Inc.,
|
|
6240 1988.
|
|
6241
|
|
6242 @item [KaCaLoLa92]
|
|
6243 Kaplan, S., A. M. Carroll, C. Love and D. M. LaLiberte.
|
|
6244 @emph{Epoch 4.0 Manual.} Department of Computer Science, University of
|
|
6245 Illinois, Urbana, March 1992.
|
|
6246
|
|
6247 @item [KaKaBeLaDr90]
|
|
6248 Kaplan, S. J., M. D. Kapor, E. J. Belove, R. A. Landsman, and
|
|
6249 T. R. Drake. AGENDA: A personal Information Manager. @emph{Communications
|
|
6250 of the ACM}, No. 33, July 1990, pp. 105-116.
|
|
6251
|
|
6252 @item [Nel87a]
|
|
6253 Nelson, T. H. @emph{Computer Lib/Dream Machines.} MicroSoft Press,
|
|
6254 Redmond, WA, 1987.
|
|
6255
|
|
6256 @item [Nel87b]
|
|
6257 Nelson, T. H. @emph{Literary Machines, Edition 87.1}. Available
|
|
6258 from the Distributors, 702 South Michigan, South Bend, IN 46618, 1987.
|
|
6259
|
|
6260 @item [NoDr86]
|
|
6261 Norman, D. A. and S. W. Draper, editors. @emph{User Centered System
|
|
6262 Design.} Lawrence Erlbaum Associates: Hillsdale, New Jersey, 1986.
|
|
6263
|
|
6264 @item [Shn82]
|
|
6265 Shneiderman, B. The future of interactive systems and the emergence
|
|
6266 of direct manipulation. @emph{Behavior and Information Technology}, Vol. 1,
|
|
6267 1982, pp. 237-256.
|
|
6268
|
|
6269 @item [Sta87]
|
|
6270 Stallman, R. @emph{GNU Emacs Manual.} Free Software Foundation,
|
|
6271 Cambridge: MA, March 1987.
|
|
6272
|
|
6273 @item [Tri86]
|
|
6274 Trigg, R., L. Suchman, and F. Halasz. Supporting collaboration in
|
|
6275 NoteCards. @emph{Proceedings of the CSCW '86 Conference}, Austin, TX,
|
|
6276 December 1986, pp. 147-153.
|
|
6277
|
|
6278 @item [TrMoHa87]
|
|
6279 Trigg, R. H., T. P. Moran and F. G. Halasz. Adaptability and
|
|
6280 Tailorability in NoteCards. @emph{Proceedings of INTERACT '87}, Stuttgart,
|
|
6281 West Germany, September 1987.
|
|
6282
|
|
6283 @item [Wei92]
|
|
6284 Weiner, B. @emph{PIEmail: A Personalized Information Environment
|
|
6285 Mail Tool.} Department of Computer Science Masters Project, Brown
|
|
6286 University: Providence, RI, May 10, 1992.
|
|
6287
|
|
6288 @item [YaHaMeDr88]
|
|
6289 Yankelovich, N., B. J. Haan, N. Meyrowitz and S. M. Drucker.
|
|
6290 Intermedia: The Concept and the Construction of a Seamless Information
|
|
6291 Environment. @emph{IEEE Computer}, Vol. 21, No. 1, January 1988, pp. 81-96.
|
|
6292
|
|
6293 @item [YoAkMc89]
|
|
6294 Yoder, E. A., R. M. Akscyn and D. L. McCracken. Collaboration in
|
|
6295 KMS, A Shared Hypermedia System. @emph{Proceedings of the 1989 ACM Conference
|
|
6296 on Human Factors in Computer Systems (CHI '89)}, April 30-May 4, 1989,
|
|
6297 Austin, TX, ACM: NY,NY, 1989, pp. 37-42.
|
|
6298
|
|
6299 @end table
|
|
6300
|
|
6301
|
|
6302 @c ***************************
|
|
6303 @c Indices
|
|
6304 @c ***************************
|
|
6305
|
|
6306 @node Key Binding Index, Code and File Index, References, Top
|
|
6307 @unnumbered Key Binding Index
|
|
6308
|
|
6309 @printindex ky
|
|
6310
|
|
6311 @node Code and File Index, Concept Index, Key Binding Index, Top
|
|
6312 @unnumbered Code and File Index
|
|
6313
|
|
6314 @printindex fn
|
|
6315
|
|
6316 @node Concept Index, , Code and File Index, Top
|
|
6317 @unnumbered Concept Index
|
|
6318
|
|
6319 @printindex cp
|
|
6320
|
|
6321 @page
|
|
6322 @summarycontents
|
|
6323 @contents
|
|
6324 @bye
|