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