76
|
1 \input psfig.sty
|
0
|
2 \input texinfo @c -*-texinfo-*-
|
|
3
|
|
4 @c
|
|
5 @c SUMMARY: The OO-Browser User Manual for V2
|
100
|
6 @c USAGE: Hardcopy man from TeX; Info man from `texinfo-format-buffer'.
|
0
|
7 @c
|
|
8 @c AUTHOR: Bob Weiner
|
100
|
9 @c
|
|
10 @c ORG: InfoDock Associates. We sell corporate support and
|
|
11 @c development contracts for InfoDock, Emacs and XEmacs.
|
|
12 @c E-mail: <info@infodock.com> Web: http://www.infodock.com
|
|
13 @c Tel: +1 408-243-3300
|
|
14 @c
|
0
|
15 @c ORIG-DATE: 10-Apr-90
|
100
|
16 @c LAST-MOD: 21-Feb-97 at 18:36:33 by Bob Weiner
|
0
|
17 @c
|
|
18 @c DESCRIPTION:
|
|
19 @c DESCRIP-END.
|
|
20
|
|
21 @c %**start of header (This is for running Texinfo on a region.)
|
|
22 @setfilename ../info/oo-browser.info
|
|
23 @settitle The OO-Browser User Manual
|
|
24 @c %**end of header (This is for running Texinfo on a region.)
|
|
25 @synindex vr fn
|
|
26
|
|
27 @iftex
|
|
28 @finalout
|
|
29 @end iftex
|
|
30
|
|
31 @titlepage
|
|
32 @sp 4
|
|
33 @center @titlefont{The OO-Browser User Manual}
|
|
34 @sp 1
|
|
35 @center The Multi-language Object-Oriented Code Browser
|
|
36 @sp 5
|
|
37 @center Bob Weiner
|
100
|
38 @center InfoDock Associates
|
|
39 @sp 1
|
|
40 @center E-mail: <oo-browser@@infodock.com> (This is a mailing list.)
|
0
|
41 @sp 2
|
100
|
42 @center Edition 2.10
|
0
|
43 @sp 2
|
100
|
44 @center February 19, 1997
|
0
|
45
|
|
46 @page
|
|
47 @vskip 0pt plus 1filll
|
100
|
48 Copyright @copyright{} 1989-1997 Free Software Foundation, Inc.
|
0
|
49
|
|
50 All trademarks referenced herein are trademarks of their respective
|
|
51 holders.
|
100
|
52
|
|
53 InfoDock Associates, the developer of the OO-Browser and InfoDock (an
|
|
54 industrial quality turn-key version of XEmacs), donates its work on
|
|
55 the OO-Browser to the Free Software Foundation and makes it freely
|
|
56 available for worldwide distribution.
|
|
57
|
|
58 InfoDock Associates is a commercial firm dedicated to radical productivity
|
|
59 improvement in technical environments, whether in software development or
|
|
60 other knowledge intensive disciplines. Our initial offerings include high
|
|
61 quality commercial support, training, books and custom package development
|
|
62 for InfoDock, XEmacs or GNU Emacs on a variety of platforms.
|
|
63
|
|
64 @example
|
|
65 E-mail: <info@@infodock.com>
|
|
66 Web: http://www.infodock.com
|
|
67 Tel: +1 408-243-3300
|
|
68 @end example
|
|
69
|
0
|
70 @setchapternewpage on
|
|
71 @end titlepage
|
|
72 @page
|
|
73
|
|
74 @node Top, Introduction, (dir), (dir)
|
|
75 @c node-name, next, previous, up
|
|
76 @unnumbered Preface
|
|
77
|
|
78 @ifinfo
|
|
79 @noindent
|
100
|
80 Copyright @copyright{} 1989-1997 Free Software Foundation, Inc.
|
0
|
81
|
|
82 All trademarks referenced herein are trademarks of their respective holders.
|
|
83
|
100
|
84 InfoDock Associates, the developer of the OO-Browser and InfoDock (an
|
|
85 industrial quality turn-key version of XEmacs), donates its work on
|
|
86 the OO-Browser to the Free Software Foundation and makes it freely
|
|
87 available for worldwide distribution.
|
|
88
|
|
89 InfoDock Associates is a commercial firm dedicated to radical productivity
|
|
90 improvement in technical environments, whether in software development or
|
|
91 other knowledge intensive disciplines. Our initial offerings include high
|
|
92 quality commercial support, training, books and custom package development
|
|
93 for InfoDock, XEmacs or GNU Emacs on a variety of platforms.
|
|
94
|
|
95 @example
|
|
96 E-mail: <info@@infodock.com>
|
|
97 Web: http://www.infodock.com
|
|
98 Tel: +1 408-243-3300
|
|
99 @end example
|
|
100
|
0
|
101 @end ifinfo
|
100
|
102
|
0
|
103 This edition of the OO-Browser User Manual is for use with any version
|
100
|
104 2.10 or greater of the OO-Browser. The OO-Browser is available for
|
0
|
105 free use, distribution, and modification under the terms of version 2 or
|
|
106 later of the GNU Public License (GPL). No representations are made
|
|
107 about the suitability of this software for any purpose. It is provided
|
|
108 "as is" without express or implied warranty.
|
|
109
|
|
110 @cindex credits
|
|
111 @cindex InfoDock, obtaining
|
|
112 @cindex OO-Browser, obtaining
|
|
113 @cindex anonymous ftp
|
100
|
114 The OO-Browser was designed and written by Bob Weiner of InfoDock
|
|
115 Associates. Motorola, Inc@. help fund early work. Torgeir Veimo and
|
|
116 Mark Stern helped write the X OO-Browser core. Don Yacktman helped
|
|
117 write the NEXTSTEP OO-Browser core. Jeff Sparkes helped with the Java
|
|
118 language support. Harri Pasanen helped with the Python language
|
|
119 support.
|
0
|
120
|
|
121 @vindex file, BR-README
|
|
122 @cindex README file
|
|
123 @cindex installation
|
|
124 The OO-Browser and InfoDock can be obtained via anonymous ftp on the
|
100
|
125 Internet from: @file{ftp://ftp.xemacs.org/pub/infodock}.
|
0
|
126 Installation instructions for the OO-Browser can be found in the
|
|
127 @file{BR-README} file in the OO-Browser distribution.
|
|
128
|
|
129 This manual documents the user interface and operation of the OO-Browser
|
|
130 multi-language browser. It assumes a very basic familiarity in the use
|
|
131 of the GNU Emacs editor as documented in @cite{[Stallman 87]}. It also
|
|
132 assumes familiarity with object-oriented software concepts. However,
|
|
133 many technical terms used in this manual are given precise meaning in
|
|
134 the glossary. @xref{Glossary}. The OO-Browser is meant to be easy to
|
|
135 use, so you can point and click to use it, rather than learning all of
|
|
136 the key stroke commands.@refill
|
|
137
|
|
138 Chapter 1 of the manual focuses on OO-Browser Environments to provide
|
|
139 the reader with a picture of how to organize work for use with the
|
|
140 OO-Browser (@pxref{Environments,,Working with Environments}).
|
|
141 @xref{Usage,,Using the OO-Browser}, if you would rather start with the
|
|
142 interactive features of the browser. @xref{Features,,OO-Browser
|
|
143 Features}, for a quick overview of the browser's features.@refill
|
|
144
|
|
145 Throughout this manual, sequences of key strokes are delimited by braces,
|
|
146 @{@}, command names are delimited by parentheses, (), and variable names
|
|
147 are emphasized.@refill
|
|
148
|
|
149 We hope that you enjoy using the OO-Browser and that it improves your
|
|
150 productivity.
|
|
151
|
|
152 @menu
|
|
153 * Introduction:: Introduction
|
|
154 * Environments:: Working with Environments
|
|
155 * Usage:: Using the OO-Browser
|
|
156 * Options:: OO-Browser Options
|
|
157 * Customization:: Personal Customization
|
|
158 * Standalone:: Using Standalone OO-Browser Features
|
|
159 * Languages:: Language-Specific Notes
|
|
160 * Features:: OO-Browser Features
|
|
161 * Commands:: OO-Browser Command Descriptions
|
|
162 * Glossary:: Glossary
|
|
163 * References:: References
|
|
164 * Keys:: Key Binding Index
|
|
165 * Command Index:: Command and Variable Index
|
|
166 * Concepts:: Concept Index
|
|
167
|
|
168 --- The Detailed Node Listing ---
|
|
169
|
|
170 Working with Environments
|
|
171
|
|
172 * Creating Environments::
|
|
173 * Building Environments::
|
|
174 * Loading Environments::
|
|
175 * Saving Environments::
|
|
176
|
|
177 Using the OO-Browser
|
|
178
|
|
179 * Invoking:: Invoking the OO-Browser
|
|
180 * Top-Level Classes:: Displaying Top-Level Classes
|
|
181 * Moving to Entries::
|
|
182 * Saving Listings:: Writing a Listing to a File
|
|
183 * Children and Parents:: Browsing Children and Parents
|
|
184 * Descendants and Ancestors:: Browsing Descendants and Ancestors
|
|
185 * Viewing and Editing:: Viewing and Editing Classes
|
|
186 * Browsing Elements::
|
|
187 * Browsing Categories::
|
|
188 * Browsing Protocols::
|
|
189 * Browsing Implementors::
|
|
190 * Exiting a Listing::
|
|
191 * Quitting and Refreshing:: Quitting and Refreshing the OO-Browser
|
|
192 * Using the Mouse::
|
|
193 * Getting Help::
|
|
194 * Locating Entries::
|
|
195 * Filtering Entries::
|
|
196 * Ordering Entries::
|
|
197 * Statistics:: Environment and Class Summaries
|
|
198 * Class Info:: Language-Specific Class Information
|
|
199 * Adding and Deleting Classes::
|
|
200 * Completing Names::
|
|
201 * Graphical Browsing:: Graphical OO-Browser Interfaces
|
|
202
|
|
203 OO-Browser Options
|
|
204
|
|
205 * External Viewing:: Using An External Viewer or Editor
|
100
|
206 * Inherited Features:: Toggling Inherited Feature Display
|
|
207 * Graphical Add Features:: Add Features to a Graphical View
|
0
|
208 * Keep Viewed Classes::
|
|
209 * Inhibit Version:: Inhibit Version Screen
|
|
210 * Invert Ancestors:: Invert Ancestor Trees
|
|
211 * Save All:: Save All Lookup Tables
|
|
212 * Use Children:: Build Children Lookup Table
|
|
213 * Sort Options:: Controlling Class Listing Order
|
|
214
|
|
215 Language-Specific Notes
|
|
216
|
|
217 * C Specifics::
|
|
218 * C++ Specifics::
|
|
219 * CLOS Specifics::
|
|
220 * Eiffel Specifics::
|
|
221 * Java Specifics::
|
|
222 * Objective-C Specifics::
|
|
223 * Python Specifics::
|
|
224
|
|
225 C++ Specifics
|
|
226
|
|
227 * C++ Element Selection:: Source Code Element Selection
|
|
228 * C++ Settings::
|
|
229
|
|
230 CLOS Specifics
|
|
231
|
|
232 * CLOS Method Handling:: Method Handling
|
|
233 * CLOS Settings::
|
|
234
|
|
235 Eiffel Specifics
|
|
236
|
|
237 * Eiffel Listings::
|
|
238 * Eiffel Element Selection:: Source Code Element Selection
|
|
239 * Eiffel Settings::
|
|
240
|
|
241 Objective-C Specifics
|
|
242
|
|
243 * Objective-C Categories::
|
|
244 * Objective-C Protocols::
|
|
245 * Objective-C Element Selection:: Source Code Element Selection
|
|
246 * Objective-C Settings::
|
|
247
|
|
248 Python Specifics
|
|
249
|
|
250 * Python Module Lookup:: Source Code Element Selection
|
|
251 * Python Settings::
|
|
252
|
|
253 @end menu
|
|
254
|
|
255 @node Introduction, Environments, Top, Top
|
|
256 @c node-name, next, previous, up
|
|
257 @unnumbered Introduction
|
|
258
|
|
259 @cindex OO-Browser
|
|
260 @cindex Smalltalk
|
100
|
261 The @dfn{OO-Browser} (pronounced owe-owe-browse-er) is a multi-windowed,
|
|
262 interactive, object-oriented class browser designed for professional
|
|
263 use. Its user interface is similar to the well-known Smalltalk browsers
|
|
264 @cite{[Goldberg 83]}, yet it is much more flexible and easy to use.
|
0
|
265
|
|
266 @cindex Eiffel
|
|
267 @cindex C++
|
|
268 @cindex C
|
|
269 @cindex Objective-C
|
|
270 @cindex CLOS
|
|
271 @cindex Python
|
|
272 @cindex Smalltalk
|
|
273 @cindex Info
|
|
274 @noindent
|
|
275 The OO-Browser is unique in several respects:
|
|
276 @itemize @bullet
|
|
277 @item
|
100
|
278 It currently supports seven object-oriented languages (C++, CLOS (Lisp),
|
|
279 Eiffel, Java, Objective-C, Python and Smalltalk), one
|
|
280 non-object-oriented language (C), and one documentation language, (GNU
|
|
281 Info).
|
0
|
282
|
|
283 @item
|
|
284 It may be used for both system exploration and for browsing purposes as
|
|
285 part of a professional software development tool chest.
|
|
286
|
|
287 @item
|
|
288 It quickly displays and provides views of complicated inheritance trees,
|
|
289 making it an important tool for understanding object-oriented systems.
|
|
290
|
|
291 @item
|
|
292 It has a completely direct-manipulation interface with multiple modalities.
|
|
293
|
|
294 @item
|
|
295 It is integrated with a powerful editing environment that can be
|
|
296 customized to meet personal work styles.
|
|
297 @end itemize
|
|
298
|
|
299 @cindex listing buffer
|
|
300 @cindex listing window
|
|
301 @cindex viewer window
|
|
302 @cindex user interface
|
|
303 The picture on the following page highlights the major components of
|
|
304 the OO-Browser user interface. (If you are reading the online Info
|
|
305 version of this manual, see the last paragraph of this node for a link
|
|
306 to the aforementioned picture.)
|
|
307
|
|
308 The windows across the top of the OO-Browser frame are called @dfn{class
|
|
309 listing windows}; they display @dfn{listing buffers} with a single class
|
|
310 name per line. The @dfn{viewer window} fills the bottom half of the
|
|
311 frame. It is used to display class source and summary information. It
|
|
312 is also used to display help on the OO-Browser command set. Pictured
|
|
313 here in the viewer window is part of the browser help buffer,
|
|
314 summarizing its command key bindings.
|
|
315
|
|
316 All key bindings described throughout this manual are effective only
|
|
317 within listing buffers, unless otherwise indicated. This means
|
|
318 that the keys may not be used within the buffers displayed in the class
|
|
319 viewer window. Instead, all normal editing keys are available in most
|
|
320 buffers displayed in the viewer window.
|
|
321
|
|
322 @cindex textual interface
|
|
323 @iftex
|
|
324 @sp 2
|
|
325 @centerline{@psfig{figure=im/oobr-text.eps}}
|
|
326 @end iftex
|
|
327 @ifinfo
|
|
328 Mouse click on the following filename to view a picture of
|
100
|
329 the textual OO-Browser: @file{im/oobr-text.eps}. Under InfoDock, use the
|
0
|
330 middle mouse button. Under Emacs with the Hyperbole system loaded, use
|
|
331 the shift-middle mouse button or shift-left on a two button mouse.
|
|
332 Otherwise, there is no built-in way to view the picture.
|
|
333 @end ifinfo
|
|
334
|
|
335 @node Environments, Usage, Introduction, Top
|
|
336 @c node-name, next, previous, up
|
|
337 @chapter Working with Environments
|
|
338
|
|
339 @cindex Environment, the
|
|
340 @cindex Library search list
|
|
341 @cindex System search list
|
|
342 Whenever the OO-Browser is in use, an Environment is selected. An
|
|
343 Environment may be built or simply specified. An @dfn{Environment
|
|
344 specification} tells the browser what to include in the construction of
|
|
345 an Environment. (@xref{Creating Environments}, for more information.)
|
|
346 An OO-Browser @dfn{Environment} includes a set of inter-class
|
|
347 relationships together with a few browser settings. The phrase,
|
|
348 @dfn{the Environment}, refers to the current OO-Browser Environment.
|
|
349 Many browser commands depend on information in the Environment.@refill
|
|
350
|
|
351 The set of classes included in an Environment is specified by two lists
|
|
352 of directories, below which all of the Environment's class source files
|
|
353 are to be found. (The OO-Browser will automatically search
|
|
354 sub-directories below the directories specified.) The first list of
|
|
355 directories is called the @dfn{Library search list}; it defines the
|
|
356 locations of stable, typically reusable classes that have been released
|
|
357 for general use. The second list is called the @dfn{System search
|
|
358 list}; it defines the locations of unreleased classes being developed,
|
|
359 often for a particular system. All class names within a single
|
|
360 Environment must be unique to ensure proper operation of the browser.
|
|
361
|
|
362 The OO-Browser lets one create, update and save Environments. Once an
|
|
363 Environment file has been created, it may be loaded at any time. The
|
|
364 browser will then use this Environment for all of its operations until
|
|
365 another one is loaded.
|
|
366
|
|
367 The browser maintains a separate Environment for each programming
|
|
368 language on which it is used. Thus, if one switches from Eiffel to
|
|
369 C++ browsing and then back to Eiffel browsing, the Eiffel environment
|
|
370 will not need to be reloaded; it will appear immediately and the
|
|
371 frame will appear as if the Eiffel OO-Browser were invoked for the
|
|
372 first time.
|
|
373
|
|
374 @cindex Environment, default
|
|
375 The recommended default name for Environment files is, @file{OOBR}.
|
|
376 We recommend that you store each Environment in the top-level directory
|
|
377 of the first system pathname in the Environment, i.e@. the root
|
|
378 directory of a system's code.
|
|
379
|
|
380 Environment files are automatically created and loaded by the OO-Browser
|
|
381 so that you need never become familiar with their format. You are
|
|
382 responsible for remembering which Environment files you create and for
|
|
383 requesting their use whenever desired. @xref{Invoking,,Invoking the
|
|
384 OO-Browser}, for information on how to specify a different Environment
|
|
385 file for use.@refill
|
|
386
|
|
387 @menu
|
|
388 * Creating Environments::
|
|
389 * Building Environments::
|
|
390 * Loading Environments::
|
|
391 * Saving Environments::
|
|
392 @end menu
|
|
393
|
|
394
|
|
395 @node Creating Environments, Building Environments, Environments, Environments
|
|
396 @c node-name, next, previous, up
|
|
397 @section Creating Environments
|
|
398
|
|
399 @cindex Environment specification
|
|
400 Environment specifications are useful when one wants to describe a
|
|
401 number of Environments to the OO-Browser but wants to defer their
|
|
402 construction until later. Large environments then can be built
|
|
403 overnight. @xref{Building Environments}, for more information.@refill
|
|
404
|
|
405 @kindex C-c C-c
|
|
406 @findex br-env-create
|
|
407 @cindex initialization file
|
|
408 Every Environment must be specified before it can be built or used.
|
|
409 Thus, specifying an Environment is the first step in creating it.
|
|
410 Environment specifications are created with the @{@kbd{C-c C-c}@}
|
|
411 @code{(br-env-create)} command, which prompts for all necessary
|
|
412 information. This command may be invoked repeatedly to quickly specify
|
|
413 a number of different Environments.@refill
|
|
414
|
|
415 @noindent
|
|
416 Here are the Environment specification components for which you will be
|
|
417 prompted:
|
|
418 @table @code
|
|
419 @item System search directories
|
|
420 List of directories below which other System directories containing
|
|
421 class source code and directories of class source files may be found.
|
|
422
|
|
423 @item Library search directories
|
|
424 List of directories below which Library files of class source code
|
|
425 and directories of class source files may be found.
|
|
426
|
|
427 @emph{EIFFEL NOTE: We strongly suggest that if you have previous
|
|
428 versions of library class source below any of these directories, that
|
|
429 you move them elsewhere, e.g. ISE's Eiffel version "2.1" directory of
|
|
430 source. These will cause class naming conflicts that the browser will
|
|
431 not resolve to your satisfaction. The basic rule is that every class
|
|
432 name within a single Environment should be unique. Use @{@kbd{M-e}@} to
|
|
433 help find duplicate classes.}
|
|
434 @end table
|
|
435
|
|
436
|
|
437 @node Building Environments, Loading Environments, Creating Environments, Environments
|
|
438 @c node-name, next, previous, up
|
|
439 @section Building Environments
|
|
440
|
|
441 @cindex Environment building
|
|
442 An Environment specification tells the OO-Browser what to include in the
|
|
443 Environment, but the Environment still must be built before use. When a
|
|
444 new Environment must be built or when a large number of changes have
|
|
445 been made to classes in the Environment, the following commands are
|
|
446 useful:
|
|
447
|
|
448 @findex br-env-rebuild
|
|
449 @findex br-lib-rebuild
|
|
450 @findex br-sys-rebuild
|
|
451 @kindex C-c C-e
|
|
452 @kindex L
|
|
453 @kindex S
|
|
454 @table @kbd
|
|
455 @item @{C-c C-e@}
|
|
456 build all Env classes @code{(br-env-rebuild)} (This prompts for whether
|
|
457 or not to use a background process to build the Environment.)
|
|
458 @item @{L@}
|
|
459 build Env Library classes only @code{(br-lib-rebuild)}
|
|
460 @item @{S@}
|
|
461 build Env System classes only @code{(br-sys-rebuild)}
|
|
462 @end table
|
|
463
|
|
464
|
|
465 When class names or locations have changed or the Environment's
|
|
466 inheritance structure is modified, the Environment must be rebuilt. For
|
|
467 small Environment changes, one may use the class addition and deletion
|
|
468 features of the browser. @xref{Adding and Deleting Classes}, for more
|
|
469 information.@refill
|
|
470
|
|
471 @cindex Environment building, batch
|
|
472 @cindex large Environments
|
|
473 The OO-Browser lets you build large environments in the background so
|
|
474 you can go on to other work while waiting on a build. When the build is
|
|
475 complete, it will ask you whether you want to browse the built Environment.
|
|
476
|
|
477 Alternatively, very large Environments may be built overnight by
|
|
478 invoking Emacs in batch mode at a scheduled time. To do this, you must
|
|
479 first create an Environment specification so that the browser knows what
|
|
480 to build. @xref{Creating Environments}. Then use a shell command
|
|
481 line of the form below (substitute your local OO-Browser installation
|
|
482 directory for @emph{<BR-DIR>}):@*
|
|
483 @example
|
|
484 emacs -batch -l <BR-DIR>/br-start.el @emph{Env-Spec-File} \
|
|
485 ... @emph{Spec File} -f br-env-batch-build > log-file
|
|
486 @end example
|
|
487 @noindent
|
|
488 for example:@*
|
|
489 @example
|
|
490 emacs -batch -l br-start.el OOBR -f br-env-batch-build > log-file
|
|
491 @end example
|
|
492
|
|
493 Typically when using the above command line, one should redirect
|
|
494 the standard output stream to a log file for later examination, as is
|
|
495 done in the above example. This helps ensure that either the
|
|
496 Environment built successfully or a message indicating the cause of
|
|
497 failure is provided.
|
|
498
|
|
499 @node Loading Environments, Saving Environments, Building Environments, Environments
|
|
500 @c node-name, next, previous, up
|
|
501 @section Loading Environments
|
|
502
|
|
503 @cindex Environment loading
|
|
504 @cindex loading an Environment
|
|
505 @kindex C-c C-o
|
|
506 @findex oo-browser command
|
|
507 @vindex br-env-default-file
|
|
508 @vindex file, OOBR
|
|
509 @cindex default Environment
|
|
510 A new Environment may be loaded for use at any time within the
|
|
511 OO-Browser. One may either select the load Environment command from the
|
|
512 OO-Browser command summary or may use the @{@kbd{C-c C-o}@}
|
|
513 @code{(oo-browser)} command to select a language and environment to load.
|
|
514 When prompted for the Environment file to load or create, an immediate
|
|
515 @{@key{RET}@} will browse the most recently loaded Environment, if any.
|
|
516 Otherwise, it will create and load the Environment file in the current
|
|
517 directory whose name is given by the @var{br-env-default-file} variable
|
|
518 (default is @file{OOBR}).
|
|
519
|
|
520 @node Saving Environments, , Loading Environments, Environments
|
|
521 @c node-name, next, previous, up
|
|
522 @section Saving Environments
|
|
523
|
|
524 The OO-Browser automatically builds and saves Environments in most
|
|
525 cases. Occasionally one may find a need to force the Environment to
|
|
526 be saved to a file, as in the case when one wants to save an Environment
|
|
527 under a different file name.
|
|
528
|
|
529 @kindex C-c C-s
|
|
530 @findex br-env-save
|
|
531 Use @{@kbd{C-c C-s}@}, the @code{(br-env-save)} command to force an
|
|
532 Environment save to occur. The command will prompt for a file to save
|
|
533 to, with the default as the current Environment file name.
|
|
534
|
|
535
|
|
536 @node Usage, Options, Environments, Top
|
|
537 @c node-name, next, previous, up
|
|
538 @chapter Using the OO-Browser
|
|
539
|
|
540 @menu
|
|
541 * Invoking:: Invoking the OO-Browser
|
|
542 * Top-Level Classes:: Displaying Top-Level Classes
|
|
543 * Moving to Entries::
|
|
544 * Saving Listings:: Writing a Listing to a File
|
|
545 * Children and Parents:: Browsing Children and Parents
|
|
546 * Descendants and Ancestors:: Browsing Descendants and Ancestors
|
|
547 * Viewing and Editing:: Viewing and Editing Classes
|
|
548 * Browsing Elements::
|
|
549 * Browsing Categories::
|
|
550 * Browsing Protocols::
|
|
551 * Browsing Implementors::
|
|
552 * Exiting a Listing::
|
|
553 * Quitting and Refreshing:: Quitting and Refreshing the OO-Browser
|
|
554 * Using the Mouse::
|
|
555 * Getting Help::
|
|
556 * Locating Entries::
|
|
557 * Filtering Entries::
|
|
558 * Ordering Entries::
|
|
559 * Statistics:: Environment and Class Summaries
|
|
560 * Class Info:: Language-Specific Class Information
|
|
561 * Adding and Deleting Classes::
|
|
562 * Completing Names::
|
|
563 * Graphical Browsing:: Graphical OO-Browser Interfaces
|
|
564 @end menu
|
|
565
|
|
566 @node Invoking, Top-Level Classes, Usage, Usage
|
|
567 @section Invoking the OO-Browser
|
|
568
|
|
569 @cindex invoking the OO-Browser
|
|
570 @cindex starting the OO-Browser
|
|
571 @kindex C-c C-o
|
|
572 @findex oo-browser
|
|
573 @cindex language support
|
|
574 The OO-Browser supports the following languages: C++ or G++, C, Info
|
|
575 (the online manual format), CLOS (Lisp), Eiffel, Objective-C, Java (as
|
|
576 documented in @cite{[Java 95]}), Python and Smalltalk. The OO-Browser may be
|
|
577 used on source written in any of these languages by using @{@kbd{C-c
|
|
578 C-o}@} or, if that key has not been setup, by using @{@kbd{M-x
|
|
579 oo-browser @key{RET}}@}. This command will prompt for the language to
|
|
580 browse, the Environment specification of directories to browse, and then
|
|
581 will either load the Environment or build it. After the Environment is
|
|
582 built, it will display the set of classes (or nodes) in the Environment.
|
|
583 (Choose C++ if you are browsing plain C code.)
|
|
584
|
|
585 @kindex C-u C-c C-o
|
|
586 @cindex current Environment
|
|
587 @cindex Environment, current
|
|
588 @cindex oo-browser, restarting
|
|
589 If you have exited the browser using @{@kbd{q}@} and wish to browse the
|
|
590 same Environment again, use @{@kbd{C-u C-c C-o}@}, which will
|
|
591 immediately redisplay the browser just as you left it.
|
|
592
|
|
593 @findex c++-browse
|
|
594 @findex eif-browse
|
|
595 @findex info-browse
|
|
596 @findex clos-browse
|
|
597 @findex objc-browse
|
|
598 @findex python-browse
|
|
599 @findex smt-browse
|
|
600 Alternatively, you can invoke the browser on a specific language
|
|
601 Environment, e.g@. to bring back the last Environment browsed under that
|
|
602 language. The language-specific browser invocation commands are:
|
|
603 @{@kbd{M-x eif-browse @key{RET}}@}, @{@kbd{M-x c++-browse @key{RET}}@},
|
|
604 @{@kbd{M-x info-browse @key{RET}}@}, @{@kbd{M-x clos-browse
|
100
|
605 @key{RET}}@}, @{@kbd{M-x objc-browse @key{RET}}@},
|
|
606 @{@kbd{M-x python-browse @key{RET}}@}.@refill
|
0
|
607
|
|
608 @cindex Environment file
|
|
609 @cindex prefix argument
|
|
610 @cindex Environment, prompting for
|
|
611 @noindent
|
|
612 A prefix argument given to any of these commands will cause it to prompt
|
|
613 for an Environment file to use as the current Environment.
|
|
614
|
|
615 On startup, if the selected Environment has been saved to a file, it
|
|
616 will be loaded; otherwise, the user will be asked to specify the
|
|
617 Environment. The specification will be saved under the previously given
|
|
618 file name. The browser will then load this Environment specification
|
|
619 file.
|
|
620
|
|
621 @cindex aborting
|
|
622 @cindex canceling
|
|
623 @kindex C-g
|
|
624 @findex keyboard-quit
|
|
625 If the browser loads an Environment file and finds only a specification,
|
|
626 it will prompt the user in the minibuffer window with a request to build
|
|
627 the Environment. It will continue to prompt the user until a full
|
|
628 Environment is built or loaded and then the browser will start,
|
|
629 displaying its multi-windowed interface. To abort from these prompts
|
|
630 and to cancel the browser invocation request at any time, use
|
|
631 @{@kbd{C-g}@} @code{(keyboard-quit)}, the standard way to abort an
|
|
632 unfinished command within Emacs.
|
|
633
|
|
634 Once an Environment has been loaded, entering and quitting the browser
|
|
635 are rapid actions, allowing a smooth transition between editing and
|
|
636 browsing.
|
|
637
|
|
638
|
|
639 @node Top-Level Classes, Moving to Entries, Invoking, Usage
|
|
640 @section Displaying Top-Level Classes
|
|
641
|
|
642 @cindex classes, top-level
|
|
643 The OO-Browser starts by displaying all top-level classes in the
|
|
644 Environment. @dfn{Top-level classes} are those that do not inherit from
|
|
645 any others. The browser can show all top-level classes or System or
|
|
646 Library classes only. Once in the browser, use:
|
|
647
|
|
648 @kindex s
|
|
649 @findex br-sys-top-classes
|
|
650 @kindex l
|
|
651 @findex br-lib-top-classes
|
|
652 @kindex t
|
|
653 @findex br-top-classes
|
|
654 @table @kbd
|
|
655 @item @{s@}
|
|
656 System top-level classes only
|
|
657 @item @{l@}
|
|
658 Library top-level classes only
|
|
659 @item @{t@}
|
|
660 all top-level classes in Environment
|
|
661 @end table
|
|
662
|
|
663 Note that selection of any of these commands does not affect the ancestry or
|
|
664 descendancy trees for any given class. Each simply limits which trees are
|
|
665 easily accessible for browsing. For example, selection of Library
|
|
666 top-level classes only, followed by the browser show children command,
|
|
667 @{@kbd{c}@} @code{(br-children)}, would display the name of a System
|
|
668 class if the System class directly inherits from the selected Library
|
|
669 class.
|
|
670
|
|
671 @cindex classes, all
|
|
672 @cindex Environment, ordering classes
|
|
673 To see an ordered listing of all of the classes in a particular part of
|
|
674 an Environment, use a prefix argument with the commands given above:
|
|
675
|
|
676 @table @kbd
|
|
677 @item @{C-u s@}
|
|
678 all System classes
|
|
679 @item @{C-u l@}
|
|
680 all Library classes
|
|
681 @item @{C-u t@}
|
|
682 all Environment classes.
|
|
683 @end table
|
|
684
|
|
685 @node Moving to Entries, Saving Listings, Top-Level Classes, Usage
|
|
686 @section Moving to Entries
|
|
687
|
|
688 @kindex C-n
|
|
689 @findex br-next-entry
|
|
690 @kindex C-p
|
|
691 @findex br-prev-entry
|
|
692 @cindex previous entry
|
|
693 @cindex entry, previous
|
|
694 @cindex next entry
|
|
695 @cindex entry, next
|
|
696 @cindex movement
|
|
697 Many browser commands operate on the current entry in a listing window.
|
|
698 @{@kbd{C-n}@} @code{(br-next-entry)} moves point to
|
|
699 the next entry in a listing buffer. @{@kbd{C-p}@}
|
|
700 @code{(br-prev-entry)} moves to the previous entry. Both take prefix
|
|
701 arguments and use them as the number of entries by which to move.
|
|
702
|
|
703 @node Saving Listings, Children and Parents, Moving to Entries, Usage
|
|
704 @section Writing a Listing to a File
|
|
705
|
|
706 @kindex C-c C-w
|
|
707 @findex br-write-buffer
|
|
708 @cindex listing, editing
|
|
709 @cindex listing, writing to a file
|
|
710 Many standard editing keys are rebound in listing buffers to
|
|
711 provide a useful set of accessible commands. Nonetheless, one needs to
|
|
712 be able to store and to edit listing buffers. The @{@kbd{C-c
|
|
713 C-w}@} @code{(br-write-buffer)} command provides this capability. The
|
|
714 command prompts for a file name under which to save the current buffer.
|
|
715 One may then quit the browser, read in the file and edit it as a plain
|
|
716 text file.
|
|
717
|
|
718 @node Children and Parents, Descendants and Ancestors, Saving Listings, Usage
|
|
719 @section Browsing Children and Parents
|
|
720
|
|
721 @kindex c
|
|
722 @findex br-children
|
|
723 @kindex p
|
|
724 @findex br-parents
|
|
725 @cindex browsing, children
|
|
726 @cindex children
|
|
727 @cindex browsing, parents
|
|
728 @cindex parents
|
|
729 @{@kbd{c}@} displays the children of the class at point; @{@kbd{p}@}
|
|
730 displays its parents. @{@kbd{C-u c}@} displays the children of all classes
|
|
731 in the present listing window; @{@kbd{C-u p}@} does the same for parents.
|
|
732
|
|
733 @node Descendants and Ancestors, Viewing and Editing, Children and Parents, Usage
|
|
734 @section Browsing Descendants and Ancestors
|
|
735
|
|
736 @cindex browsing, ancestors
|
|
737 @cindex ancestors
|
|
738 @cindex browsing, descendants
|
|
739 @cindex descendants
|
|
740 The OO-Browser is very fast at computing ancestor and descendant hierarchies,
|
|
741 accounting for multiple inheritance and cycles where permitted. Descendant
|
|
742 and ancestor listings provide an immediate overview of some key relationships
|
|
743 among class groupings.
|
|
744
|
|
745 @kindex d
|
|
746 @findex br-descendants
|
|
747 @kindex a
|
|
748 @findex br-ancestors
|
|
749 With point on any class entry line in a listing buffer, @{@kbd{d}@}
|
|
750 shows descendants for the class and @{@kbd{a}@} shows ancestors.
|
|
751 @{@kbd{C-u d}@} shows the descendant trees for all classes in the
|
|
752 current listing buffer and @{@kbd{C-u a}@} does the same for ancestors.
|
|
753
|
|
754 @cindex ancestors, inverted
|
|
755 @vindex br-invert-ancestors
|
|
756 The ancestor tree for a given root class is normally shown branching out
|
|
757 from the root class. This means that higher-level ancestors, those
|
|
758 further away from the root class, are shown in descending trees below
|
|
759 lower-level ancestors. The leaves of the tree represent the ancestors
|
|
760 furthest from the root, as one might expect.
|
|
761
|
|
762 This, however, is the inverse of inheritance trees. Some people prefer
|
|
763 to see ancestor trees like inheritance trees, with parents above
|
|
764 children. This is an @dfn{inverted ancestor tree}. To obtain this
|
|
765 view of ancestors use @{@kbd{M- -1 a}@} for ancestors of the current
|
|
766 class. For ancestors of all classes in the current buffer, use
|
|
767 @{@kbd{M- -2 a}@}, or any negative prefix argument lest than -1.
|
|
768 Inverted ancestor trees may be made the default by setting
|
|
769 @code{br-invert-ancestors} non-nil, as in:
|
|
770
|
|
771 @display
|
|
772 @{@kbd{M-x set-variable @key{RET} br-invert-ancestors @key{RET} t @key{RET}}@}
|
|
773 @end display
|
|
774
|
|
775 @noindent
|
|
776 This is a personal setting that affects all Environments used by the browser.
|
|
777
|
|
778 @node Viewing and Editing, Browsing Elements, Descendants and Ancestors, Usage
|
|
779 @section Viewing and Editing Classes
|
|
780
|
|
781 @kindex v
|
|
782 @findex br-view-entry
|
|
783 @cindex classes, viewing
|
|
784 @cindex viewing a class
|
|
785 @kindex e
|
|
786 @findex br-edit-entry
|
|
787 @cindex classes, editing
|
|
788 @cindex editing a class
|
|
789 One of the major uses of the OO-Browser is to view or edit class source
|
|
790 texts. @{@kbd{v}@} will view the source for the class or element name
|
|
791 at point in a read-only mode in the viewer window; it will not select
|
|
792 the viewer window. @{@kbd{e}@} does the same, except that it edits the
|
|
793 element source in a read-write mode, if the user has write permission for
|
|
794 the source file. It also selects the viewer window.
|
|
795
|
|
796 @cindex classes, name completion
|
|
797 @cindex completion
|
|
798 A prefix argument to either of these commands, as in @{@kbd{C-u v}@} or
|
|
799 @{@kbd{C-u e}@}, causes them to prompt for the entry to display.
|
|
800 Full class and element name completion is provided once an Environment
|
|
801 has been loaded and built. @xref{Completing Names}.@refill
|
|
802
|
|
803 @vindex br-edit-file-function
|
|
804 @vindex br-view-file-function
|
|
805 The value of the variable @var{br-edit-file-function} is the function
|
|
806 that the browser calls when a source file entity is displayed for editing.
|
|
807 The value of @var{br-view-file-function} is the function called to view
|
|
808 a source file entity. @xref{External Viewing,,Using an External
|
|
809 Viewer or Editor}, for information on using non-Emacs editors and
|
|
810 viewers with the browser.
|
|
811
|
|
812 If a user has no read access rights to a file, this will be apparent
|
|
813 when the browser tries to display the file and fails. If the user does
|
|
814 not have write permission to the class source file, the standard
|
|
815 @var{br-edit-file-function} may display the file in a read-only mode
|
|
816 (indicated by two percent signs, %%, at the front of the buffer mode
|
|
817 line). This is a warning that one should not attempt to edit the file.
|
|
818 In some cases, one really wants to try to edit such a file; in those
|
|
819 cases, the buffer may be toggled between read-only and read-write modes
|
|
820 via the Emacs command, @code{(toggle-read-only)}, usually bound to
|
|
821 @{@kbd{C-x C-q}@}.
|
|
822
|
|
823 @kindex SPC
|
|
824 @findex br-viewer-scroll-up
|
|
825 @kindex DEL
|
|
826 @findex br-viewer-scroll-down
|
|
827 @cindex scrolling viewer
|
|
828 @cindex viewer, scrolling
|
|
829 Once a class has been displayed for viewing, @{@key{SPC}@} will scroll its
|
|
830 source text up (forward) almost a windowful; @{@key{DEL}@} will scroll it
|
|
831 down (backward) almost a windowful. In fact, this is a general means
|
|
832 for scrolling the OO-Browser viewer window whenever point, as shown by
|
|
833 the Emacs cursor, is in a listing window. When a class is
|
|
834 selected for editing, @{@kbd{C-v}@} will scroll up, @{@kbd{M-v}@} will
|
|
835 scroll down, assuming the standard Emacs key bindings.
|
|
836
|
|
837 @kindex C-c C-v
|
|
838 @findex br-to-from-viewer
|
|
839 @cindex movement, to or from viewer
|
|
840 Sometimes one needs to quickly switch back and forth between the viewer
|
|
841 window and the current listing window. The normal Emacs window
|
|
842 movement commands often are cumbersome in such instances. Instead
|
|
843 @code{(br-to-from-viewer)} bound to @{@kbd{C-c C-v}@}, allows the
|
|
844 desired back and forth movement. It acts as a toggle switch,
|
|
845 alternately moving between the buffer in the viewer window and the prior
|
|
846 listing buffer.
|
|
847
|
|
848 @cindex class, narrowing view to
|
|
849 @vindex br-narrow-view-to-class
|
|
850 @cindex classes, others same file
|
|
851 @kindex C-x n w
|
|
852 @kindex C-x w
|
|
853 @findex widen
|
|
854 By default, the OO-Browser displays class definition files in their
|
|
855 entirety. If there are multiple classes in a file, you will be able to
|
|
856 scroll through all of them. If you prefer that only the selected class
|
|
857 be visible, enable the @code{br-narrow-view-to-class} option flag. When
|
|
858 set to a non-nil value, this flag narrows the source buffer so that only
|
|
859 the class of interest and its preceding comments are visible. To
|
|
860 examine other classes in the same file, you must execute a @{@kbd{C-x n
|
|
861 w}@} @code{(widen)} command when in the narrowed buffer. (Use
|
|
862 @{@kbd{C-x w}@} under Emacs 18.)
|
|
863
|
|
864 @kindex 1 (one)
|
|
865 @findex br-view-full-frame
|
|
866 @kindex C-x 1
|
|
867 @findex delete-other-windows
|
|
868 @cindex viewer, full frame
|
|
869 If the browser is used on a small screen, it may be helpful to use the
|
|
870 a full frame to view or edit a buffer of source code. If point is in a
|
|
871 listing buffer, pressing @{@kbd{1}@}, the number one, will expand the
|
|
872 viewer window buffer to the full frame. When the browser is
|
|
873 re-invoked, it will look just as it did before. If point is in the
|
|
874 viewer window, @{@kbd{C-x 1}@} @code{(delete-other-windows)}, will do
|
|
875 practically the same thing, except that when the browser is re-invoked
|
|
876 it will not look precisely as it did before.
|
|
877
|
|
878 @kindex C-c C-k
|
|
879 @findex br-kill
|
|
880 @kindex C-x k
|
|
881 @findex kill-buffer
|
|
882 @cindex viewer, killing displayed buffer
|
|
883 If point is in a listing window, the buffer displayed in the
|
|
884 viewer window may be killed with the @{@kbd{C-c C-k}@} @code{(br-kill)}
|
|
885 command. (A killed buffer is removed from the current Emacs session.)
|
|
886
|
|
887 If point is in the viewer window, as it will be after editing a class
|
|
888 buffer, use the standard Emacs command @{@kbd{C-x k}@}
|
|
889 @code{(kill-buffer)} instead.
|
|
890
|
|
891 @node Browsing Elements, Browsing Categories, Viewing and Editing, Usage
|
|
892 @section Browsing Elements
|
|
893 @cindex element
|
|
894 @cindex browsing elements
|
|
895 @cindex element browsing
|
|
896 @cindex instance browsing
|
|
897 @cindex feature
|
|
898 @cindex routine
|
|
899 @cindex attribute
|
|
900 @cindex Common Lisp
|
|
901 @cindex CLOS
|
|
902 A @dfn{feature} of a class is either a routine or attribute defined in
|
|
903 the class. An @dfn{element} is either a feature or an instance of a
|
|
904 class. A number of OO-Browser languages support feature browsing, as
|
|
905 documented in @ref{Languages}. Instance browsing is only supported
|
|
906 in very limited form, for class instances which exist within the code
|
|
907 itself. For example, under Common Lisp and CLOS, a default class called
|
|
908 @code{[function]} is defined whose instances are all named functions
|
|
909 defined within the environment. A @dfn{default class} is a class
|
|
910 created to categorize elements of the Environment for browsing; default
|
|
911 classes are not specified within the Environment source code.
|
|
912
|
|
913 @kindex f
|
|
914 @kindex r
|
|
915 @findex br-features
|
|
916 Use @{@kbd{f}@} to display a listing of the features or elements
|
|
917 of the class at point, including inherited features.
|
|
918 Generally, this includes only routines. Use @{@kbd{M-0 f}@} to turn off
|
|
919 the display of inherited features; use the same command again to
|
|
920 re-enable display of inherited features.
|
|
921
|
|
922 If inherited features are off and there are no feature definitions for
|
|
923 the class, the class definition is displayed instead, so that its
|
|
924 feature declarations may be browsed.
|
|
925
|
|
926 Use @{@kbd{C-u f}@} to display a listing of the features or elements of
|
|
927 all classes in the present listing window. Prior versions of the
|
|
928 OO-Browser used @{@kbd{r}@} to display features. This key remains for
|
|
929 backward compatibility but may be used for another purpose in the
|
|
930 future.
|
|
931
|
|
932 @kindex e
|
|
933 @findex br-edit-entry
|
|
934 @cindex edit element
|
|
935 @kindex v
|
|
936 @findex br-view-entry
|
|
937 @cindex view element
|
|
938 @kindex F
|
|
939 @findex br-feature-signature
|
|
940 @cindex signature
|
|
941 @cindex feature
|
|
942 Move point to an element name and use @{@kbd{v}@} to view its source
|
|
943 definition or @{@kbd{e}@} to edit its source. Use @{@kbd{F}@} to see
|
|
944 the full signature tag of an element, which includes its argument names
|
|
945 and types, if any. @{@kbd{C-u F}@} lists the signatures of all elements
|
|
946 in the current listing. This is handy when several elements from the
|
|
947 same class have the same name but differ in signature.
|
|
948
|
|
949 @xref{Using the Mouse}, for how the Action and Assist Keys may be used
|
|
950 for browsing elements.
|
|
951
|
|
952 @node Browsing Categories, Browsing Protocols, Browsing Elements, Usage
|
|
953 @section Browsing Categories
|
|
954
|
|
955 @cindex category
|
|
956 @cindex class category
|
|
957 The definition of a @dfn{category} is language-specific. Some languages such
|
|
958 as Smalltalk use categories to group related classes together. The
|
|
959 OO-Browser does not yet support this kind of category.
|
|
960
|
|
961 A set of Objective-C categories segments a single class into groupings
|
|
962 of related features. When a class category is defined, the category
|
|
963 name appears within a set of parentheses, so the OO-Browser displays
|
|
964 category names with parentheses around them to distinguish them from
|
|
965 classes. The aggregation of all of the categories defined by a class
|
|
966 and its ancestors represents the complete class definition. The
|
|
967 OO-Browser does support this kind of category.
|
|
968
|
|
969 @kindex C
|
|
970 Use the @{@kbd{C}@} key when point is on a class listing entry to obtain
|
|
971 a list of the categories defined for the class within the Environment
|
|
972 source code (this excludes inherited categories). Use @{@kbd{C-u C}@}
|
|
973 to list the categories for all classes in the current listing. Thus, to
|
|
974 see the full set of categories for a class, use @{@kbd{a}@} to list the
|
|
975 ancestors of the current class and then @{@kbd{C-u C}@} to show all
|
|
976 direct and inherited categories of the class.
|
|
977
|
|
978 @cindex implementor, category
|
|
979 @kindex v
|
|
980 @kindex e
|
|
981 Use @{@kbd{v}@} or @{@kbd{e}@} to view or edit the class category
|
|
982 definition associated with a category entry at point. @xref{Browsing
|
|
983 Implementors}, for an explanation of how to browse the classes that
|
|
984 directly implement a category.
|
|
985
|
|
986 @kindex f
|
|
987 Use @{@kbd{f}@} with point on the default @code{[category]} class to
|
|
988 list all categories defined in the Environment.
|
|
989
|
|
990 @node Browsing Protocols, Browsing Implementors, Browsing Categories, Usage
|
|
991 @section Browsing Protocols
|
|
992
|
|
993 @cindex protocol
|
|
994 @cindex class protocol
|
|
995 @cindex conformance to protocol
|
|
996 @cindex formal protocol
|
|
997 The definition of a @dfn{protocol} is language-specific.
|
|
998 It generally refers to an interface specification to which a class is
|
|
999 said to conform. A class conforms to a protocol by implementing the set
|
|
1000 of features defined in the protocol.
|
|
1001
|
|
1002 Presently, the OO-Browser support protocols only under Objective-C.
|
|
1003 Objective-C protocols are sometimes called @emph{formal protocols}.
|
|
1004 Protocol interfaces are specified in a manner similar to classes but their
|
|
1005 features are only implemented in conforming classes. A single protocol
|
|
1006 can inherit from any number of other protocols; thus, any conforming
|
|
1007 class must conform to all of its ancestor protocols.
|
|
1008
|
|
1009 Class definitions list the protocols to which they directly conform,
|
|
1010 within a set of angle brackets. So the OO-Browser displays protocol
|
|
1011 names with angle brackets around them to distinguish them from classes.
|
|
1012
|
|
1013 @kindex P
|
|
1014 Use the @{@kbd{P}@} key when point is on a class listing entry to obtain
|
|
1015 a list of the protocols to which the class directly conforms
|
|
1016 (this excludes inherited protocols). Use @{@kbd{C-u P}@}
|
|
1017 to list the direct protocols for all classes in the current listing.
|
|
1018 There is not yet a way to show the complete set of protocols to which a
|
|
1019 class conforms, which includes all protocols inherited from other
|
|
1020 protocols and all protocols inherited from ancestor classes.
|
|
1021
|
|
1022 @kindex v
|
|
1023 @kindex e
|
|
1024 If you use @{@kbd{P}@} when point is on a class' protocol entry, the
|
|
1025 specification of the protocol will be displayed. Use @{@kbd{v}@} or
|
|
1026 @{@kbd{e}@} to view or edit the class or class category definition
|
|
1027 associated with a protocol entry at point.
|
|
1028
|
|
1029 @cindex implementor, protocol
|
|
1030 Use standard class browsing keys when on a protocol entry to examine its
|
|
1031 parents, children, ancestors or descendants. @xref{Browsing
|
|
1032 Implementors}, for an explanation of how to browse the classes that
|
|
1033 directly conform to a protocol.
|
|
1034
|
|
1035 @kindex f
|
|
1036 Use @{@kbd{f}@} with point on the default @code{[protocol]} class to
|
|
1037 list all protocols defined in the Environment.
|
|
1038
|
|
1039 @node Browsing Implementors, Exiting a Listing, Browsing Protocols, Usage
|
|
1040 @section Browsing Implementors
|
|
1041
|
|
1042 @cindex implementor
|
|
1043 @cindex element
|
|
1044 @kindex I
|
|
1045 @findex br-implementors
|
|
1046 @kindex e
|
|
1047 @kindex v
|
|
1048 @kindex F
|
|
1049 @cindex signature
|
|
1050 Sometimes it is important to see the list of classes that define a
|
|
1051 particular element name. These are called the element's
|
|
1052 @dfn{implementors}. With point on an element listing, @{@kbd{I}@} will
|
|
1053 compute and display the element's implementor list. @{@kbd{C-u I}@} will
|
|
1054 do the same for all elements in the present listing.
|
|
1055
|
|
1056 Move point to an implementor class name and then use @{@kbd{v}@} or
|
|
1057 @{@kbd{e}@} to view or edit the element associated with the class. If an
|
|
1058 element name is defined with different signatures in a single class, the
|
|
1059 class will be listed as an implementor multiple times. Each class entry
|
|
1060 can be used to display a different element. @{@kbd{C-u F}@} will
|
|
1061 display the element signature associated with each class entry in the
|
|
1062 same order as the class entries in the present listing buffer.
|
|
1063
|
|
1064 @node Exiting a Listing, Quitting and Refreshing, Browsing Implementors, Usage
|
|
1065 @section Exiting a Listing
|
|
1066
|
|
1067 @kindex x
|
|
1068 @findex br-exit-level
|
|
1069 @cindex exiting a listing level
|
|
1070 When done with a browser listing buffer, one should clear and exit
|
|
1071 from the buffer's display with @{@kbd{x}@}. This command also displays
|
|
1072 the previous listing level, if any, and moves point to its
|
|
1073 previous position within this buffer.
|
|
1074
|
|
1075 In this way, the command provides a quick and clean way to exit back to a
|
|
1076 previous listing level; you may exit a single level at a time or all the way
|
|
1077 back to the top-level listing buffer through repeated invocation of the
|
|
1078 command or by sending a prefix argument value to the command.
|
|
1079
|
|
1080 There is no need to exit from listing buffers to quit from the browser. You
|
|
1081 may quit, perform other actions, and then re-invoke the browser at the same
|
|
1082 point from which you left.
|
|
1083
|
|
1084 @node Quitting and Refreshing, Using the Mouse, Exiting a Listing, Usage
|
|
1085 @section Quitting and Refreshing the OO-Browser
|
|
1086
|
|
1087 @kindex q
|
|
1088 @findex br-quit
|
|
1089 @cindex quitting, temporarily
|
|
1090 @cindex quitting, permanently
|
|
1091 @{@kbd{q}@} quits from the browser temporarily. The same command with a
|
|
1092 prefix argument quits from the browser permanently and kills all
|
|
1093 non-modified browser buffers. It will not kill any of the class source
|
|
1094 buffers.
|
|
1095
|
|
1096 @kindex C-c C-r
|
|
1097 @findex br-refresh
|
|
1098 @cindex refreshing the browser display
|
|
1099 If you are familiar with Emacs windowing, you may quickly alter the window
|
|
1100 configuration of the frame while in the browser, either intentionally or
|
|
1101 more likely unintentionally. If you execute non-browser Emacs commands while
|
|
1102 in the browser, you may find other buffers have taken the place of your
|
|
1103 browser buffers. In either case, you may refresh the browser display and
|
|
1104 restore it to the way it was when you originally invoked it, by using
|
|
1105 @{@kbd{M-x br-refresh @key{RET}}@} or with @{@kbd{C-c C-r}@} when in a
|
|
1106 browser listing buffer.
|
|
1107
|
|
1108 @node Using the Mouse, Getting Help, Quitting and Refreshing, Usage
|
|
1109 @section Using the Mouse
|
|
1110
|
|
1111 @cindex mouse control
|
|
1112 @kindex H
|
|
1113 @findex br-help-ms
|
|
1114 @cindex Action Key
|
|
1115 @cindex Assist Key
|
|
1116 @kindex Action Key
|
|
1117 @kindex Assist Key
|
|
1118 @cindex XEmacs
|
|
1119 @cindex Emacs 19
|
|
1120 @cindex InfoDock
|
|
1121 @cindex Menu Key
|
|
1122 Once configured, mouse control within the OO-Browser is helpful and easy
|
|
1123 to use. Under InfoDock, XEmacs and Emacs 19, the right mouse button,
|
|
1124 called the Menu Key, pops up a menu of OO-Browser commands when clicked
|
|
1125 within an OO-Browser listing buffer. Under XEmacs and Emacs 19, the
|
|
1126 same menu is added to the menubar used in listing buffers. Under
|
|
1127 InfoDock with mode-specific menus turned on, the menubar is devoted to
|
|
1128 OO-Browser commands.
|
|
1129
|
|
1130 Even if the above features are not available to you, if you have mouse
|
|
1131 support in your Emacs, the following features are available. A single
|
|
1132 mouse button, called the @dfn{Action Key}, is used for most purposes.
|
|
1133 The Action Key is bound to the shift-middle mouse button under standard
|
|
1134 Emacs, to the middle mouse button under InfoDock, or to the shift-left
|
|
1135 button on a two-button mouse.
|
|
1136
|
|
1137 A second button, called the @dfn{Assist Key}, is used for help and other
|
|
1138 ancillary functions. The Assist Key is bound to the shift-right button.
|
|
1139 The @file{br-help-ms} file uses a table format to summarize mouse
|
|
1140 control within the browser, it may be displayed within the browser via
|
|
1141 the @{@kbd{H}@} @code{(br-help-ms)} command.
|
|
1142
|
|
1143 Within an empty listing buffer, clicking the Action Key displays the
|
|
1144 browser command menu; the Assist Key displays a menu listing
|
|
1145 language-specific source files. Within this menu, the Action Key
|
|
1146 selects a buffer for display, the Assist Key marks the buffer for
|
|
1147 deletion. To perform the deletes, click the Action Key after the last
|
|
1148 line of the menu. If the Assist Key is clicked after the last line, the
|
|
1149 deletes are undone and a list of all current editor buffers is shown,
|
|
1150 allowing you to select buffers other than those containing classes.
|
|
1151
|
|
1152 The mouse buttons can be used to scroll the viewer window a page at a
|
|
1153 time by clicking after the end of any line. The Action Key scrolls the
|
|
1154 window up (forward) a windowful and the Assist Key scrolls it down
|
|
1155 (backward) a windowful.
|
|
1156
|
|
1157 The Action Key acts as follows when in an OO-Browser listing buffer. If
|
|
1158 the button is pressed:
|
|
1159
|
|
1160 @itemize @bullet
|
|
1161 @item
|
|
1162 on a blank line following all entries or in a blank listing buffer, the
|
|
1163 browser command help menu is displayed in the viewer window
|
|
1164 exited;@refill
|
|
1165 @item
|
|
1166 at the beginning of a (non-single character) class name, the class'
|
|
1167 ancestors are listed;@refill
|
|
1168 @item
|
|
1169 at the end of an entry line, the listing is scrolled up;@refill
|
|
1170 @item
|
|
1171 on the `...', following a class name, point is moved to the class
|
|
1172 descendency expansion;@refill
|
|
1173 @item
|
|
1174 before an element name, the implementor classes of the name are listed;@refill
|
|
1175 @item
|
|
1176 anywhere else on an entry line (i.e. on the entry), the entry's source
|
|
1177 is displayed for editing.@refill
|
|
1178 @end itemize
|
|
1179
|
|
1180 The Assist Key acts as follows when in a listing buffer. If it is pressed:
|
|
1181
|
|
1182 @itemize @bullet
|
|
1183 @item
|
|
1184 in a blank buffer, a selection list of buffer files is displayed;@refill
|
|
1185 @item
|
|
1186 at the beginning of a (non-single character) class, the class'
|
|
1187 descendants are listed;@refill
|
|
1188 @item
|
|
1189 at the end of an entry line, the listing is scrolled down;@refill
|
|
1190 @item
|
|
1191 on the `...', following a class name, point is moved to the class
|
|
1192 expansion;@refill
|
|
1193 @item
|
|
1194 anywhere else on a class line, the class' elements are listed;@refill
|
|
1195 @item
|
|
1196 anywhere else on an element line, the element's implementor classes are
|
|
1197 listed;@refill
|
|
1198 @item
|
|
1199 on a blank line following all entries, the current listing buffer is
|
|
1200 exited.@refill
|
|
1201 @end itemize
|
|
1202
|
|
1203 @node Getting Help, Locating Entries, Using the Mouse, Usage
|
|
1204 @section Getting Help
|
|
1205
|
|
1206 @kindex h
|
|
1207 @findex br-help
|
|
1208 The OO-Browser is very intuitive to operate, but help is always a key or
|
|
1209 button press away when needed. Besides the online and printed versions
|
|
1210 of this manual, there is an online quick reference built into the
|
|
1211 OO-Browser. Once the browser windows appear, press @{@kbd{h}@} at any
|
|
1212 time to bring up a buffer full of command help.
|
|
1213
|
|
1214 @kindex C-h k
|
|
1215 @findex describe-key
|
|
1216 For more extensive documentation on each browser key, use the Emacs command
|
|
1217 @{@kbd{C-h k @var{key-sequence}}@}.
|
|
1218
|
|
1219 @node Locating Entries, Filtering Entries, Getting Help, Usage
|
|
1220 @section Locating Entries
|
|
1221
|
|
1222 @kindex w
|
|
1223 @findex br-where
|
|
1224 @cindex class, source file
|
|
1225 @cindex class, where is
|
|
1226 @cindex element, source file
|
|
1227 @cindex element, where is
|
|
1228 @cindex entry, where is
|
|
1229 The @{@kbd{w}@} @code{(br-where)} command can be used to locate the
|
|
1230 source file associated with a listing entry. It prints the full
|
|
1231 pathname of the source file in the minibuffer window.
|
|
1232 A prefix argument as in, @{@kbd{C-u w}@}, causes the command to prompt
|
|
1233 for the class or element name to locate. Full completion is
|
|
1234 provided. @xref{Completing Names}.@refill
|
|
1235
|
|
1236 @kindex m
|
|
1237 @findex br-match
|
|
1238 @cindex classes, matching names
|
|
1239 @cindex classes, finding
|
|
1240 @cindex matching to class names
|
|
1241 @cindex finding classes
|
|
1242 @cindex locating classes
|
|
1243
|
|
1244 The @{@kbd{m}@} @code{(br-match)} command provides a quick mechanism for
|
|
1245 locating any classes in the Environment whose names match to an
|
|
1246 expression in part or in whole. The browser will prompt for the
|
|
1247 expression to use. All matching names are displayed in ascending order.
|
|
1248
|
|
1249 By default the expression is treated as a regular expression. A prefix
|
|
1250 argument sent to the command tells it to treat the expression as a string.
|
|
1251
|
|
1252 After each search, the command reports the number of matching classes
|
|
1253 found and displays them in the current listing window. It then prompts
|
|
1254 for another expression to key on. The selected set is then filtered
|
|
1255 once again. This cycle continues until the @{@key{RET}@} is pressed
|
|
1256 without giving an expression. This process allows for easy location of
|
|
1257 desired classes.
|
|
1258
|
|
1259 When the command is invoked (first time through the loop), if the
|
|
1260 @{@key{RET}@} key is pressed without giving a match expression, the search
|
|
1261 will match to all classes referenced in the Environment.
|
|
1262
|
|
1263 If you want a regular expression to match to whole class names
|
100
|
1264 exclusively, begin it with a `^' and end it with a `$' character which
|
0
|
1265 match to beginning of name and end of name, respectively. Thus, "^....$"
|
|
1266 would match to class names with exactly four characters. A string
|
|
1267 match always matches to any class name that contains the matching
|
|
1268 string.
|
|
1269
|
|
1270 @node Filtering Entries, Ordering Entries, Locating Entries, Usage
|
|
1271 @section Filtering Entries
|
|
1272
|
|
1273 @kindex M
|
|
1274 @findex br-match-entries
|
|
1275 @cindex entries, matching names
|
|
1276 @cindex matching to listing entries
|
|
1277 @cindex filtering entries
|
|
1278 @cindex locating Entries
|
|
1279
|
|
1280 The @{@kbd{M}@} @code{(br-match-entries)} command works much like the
|
|
1281 @code{(br-match}) command described in, @ref{Locating Entries}, except
|
|
1282 that it matches only to entries in the current listing buffer. It thus
|
|
1283 allows you to filter a listing to just those entries that you care to
|
|
1284 browse. It prompts you for a regular expression of entries to match
|
|
1285 and then deletes entries that don't match. A prefix argument sent to
|
|
1286 the command tells it to treat the match expression as a string.
|
|
1287
|
|
1288 After each search, the command reports the number of matching entries
|
|
1289 found and displays them in the current listing window. It then prompts
|
|
1290 for another expression to match. The selected set is then filtered
|
|
1291 once again. This cycle continues until the @{@key{RET}@} is pressed
|
|
1292 without giving an expression. This process allows for easy incremental
|
|
1293 filtering of listings.
|
|
1294
|
|
1295 When the command is invoked (first time through the loop), if the
|
|
1296 @{@key{RET}@} key is pressed without giving a match expression, the search
|
|
1297 will match to all entries in the listing, so no filtering will be done.
|
|
1298
|
|
1299 If you want a regular expression to match to whole entries
|
100
|
1300 exclusively, begin it with a `^' and end it with a `$' character which
|
0
|
1301 match to beginning of line and end of line, respectively. Thus, "^....$"
|
|
1302 would match to entry lines with exactly four characters. A string
|
|
1303 match always matches to any entry that contains the matching string.
|
|
1304
|
|
1305
|
|
1306 @node Ordering Entries, Statistics, Filtering Entries, Usage
|
|
1307 @section Ordering Entries
|
|
1308
|
|
1309 @kindex o
|
|
1310 @findex br-order
|
|
1311 @cindex entries, ordering
|
|
1312 @cindex ordering listings
|
|
1313 @cindex sorting listings
|
|
1314 Once you have a desired set of names in a browser listing window, you
|
|
1315 may want to re-order. For a simple ascending order sort by
|
|
1316 name, use @{@kbd{o}@}. To sort the lines in the current listing window
|
|
1317 accounting for leading whitespace, use a positive prefix argument. To sort
|
|
1318 the lines in descending order accounting for leading whitespace, use a
|
|
1319 negative prefix argument. Note that all of the top-level class display
|
|
1320 commands automatically order their output lists. @xref{Top-Level Classes,,
|
|
1321 Displaying Top-Level Classes}.@refill
|
|
1322
|
|
1323 To sort in descending order, first sort into ascending order with
|
|
1324 @{@kbd{o}@} to strip any leading whitespace and then use a negative
|
|
1325 prefix argument to sort the names into descending order.
|
|
1326
|
|
1327
|
|
1328 @node Statistics, Class Info, Ordering Entries, Usage
|
|
1329 @section Environment and Class Summaries
|
|
1330
|
|
1331 @kindex #
|
|
1332 @findex br-count
|
|
1333 @cindex number of classes
|
|
1334 @cindex class count
|
|
1335 The @{@kbd{#}@} @code{(br-count)} command displays in the minibuffer the
|
|
1336 number of entries in the present listing buffer.
|
|
1337
|
|
1338 @kindex M-c
|
|
1339 @findex br-class-stats
|
|
1340 @cindex class info
|
|
1341 @cindex class statistics
|
|
1342 The @{@kbd{M-c}@} @code{(br-class-stats)} command displays in the
|
|
1343 minibuffer window the number of parents and children for the selected
|
|
1344 class; with a prefix argument, it prompts for the class name to use.
|
|
1345
|
|
1346 @kindex M-e
|
|
1347 @findex br-env-stats
|
|
1348 @cindex Environment statistics
|
|
1349 @cindex Environment spec summary
|
|
1350 The @{@kbd{M-e}@} @code{(br-env-stats)} command displays the
|
|
1351 specification for the current Environment along with a few Environment
|
|
1352 statistics (OO-Browser version used to build the Environment, total
|
|
1353 classes, number of System and Library classes, number of duplicate and
|
|
1354 undefined classes) in the viewer window. With a prefix argument, it
|
|
1355 displays in the minibuffer window the basic statistics only, leaving the
|
|
1356 contents of the viewer window intact.
|
|
1357
|
|
1358 @node Class Info, Adding and Deleting Classes, Statistics, Usage
|
|
1359 @section Language-Specific Class Information
|
|
1360
|
|
1361 @kindex i
|
|
1362 @findex br-entry-info
|
|
1363 @cindex entry attributes
|
|
1364 @cindex parents
|
|
1365 @cindex attributes
|
|
1366 @cindex routine calls
|
|
1367 @cindex Eiffel, info
|
|
1368 Presently, this feature is available only for Eiffel browsing.
|
|
1369
|
|
1370 With point on a class name in a listing buffer, the command,
|
|
1371 @{@kbd{i}@} @code{(br-entry-info)}, displays the class' parents,
|
|
1372 attributes and routines with routine call summaries. This is its
|
|
1373 default behavior.
|
|
1374
|
|
1375 @cindex Eiffel, short
|
|
1376 @cindex Eiffel, flat
|
|
1377 @{@kbd{M-x eif-info-use-short}@} will instead cause the
|
100
|
1378 @code{(br-entry-info)} command to run the Eiffel `short' command on a
|
0
|
1379 class, thereby displaying its specification.
|
|
1380 @{@kbd{M-x eif-info-use-flat}@}, will cause the command to run
|
100
|
1381 the Eiffel `flat' command on a class, thereby displaying its complete
|
0
|
1382 feature set. Use @{@kbd{M-x eif-info-use-calls}@} to reset this command
|
|
1383 to its default behavior.
|
|
1384
|
|
1385
|
|
1386 @node Adding and Deleting Classes, Completing Names, Class Info, Usage
|
|
1387 @section Adding and Deleting Classes
|
|
1388
|
|
1389 @kindex C-c ^
|
|
1390 @findex br-add-class-file
|
|
1391 @cindex class, adding to Environment
|
|
1392 @cindex class, replacing in Environment
|
|
1393 @cindex Environment, adding classes
|
|
1394 @cindex Environment, replacing classes
|
|
1395 @cindex initialization file
|
|
1396 A file containing class definitions may be added to the Environment with
|
|
1397 the @{@kbd{C-c ^}@} @code{(br-add-class-file)} command. This will
|
|
1398 prompt for the file name, scan the file, and then update the
|
|
1399 Environment. If a class defined in the file is already in the
|
|
1400 Environment, its information will be replaced with the information
|
|
1401 gathered from the file; otherwise, the class will be added to the
|
|
1402 Environment. This command does not update the browser display; one
|
|
1403 must issue a browser command after the add command in order to see any
|
|
1404 change.
|
|
1405
|
|
1406 @cindex Environment, adding individual classes
|
|
1407 To add a single class from a file containing multiple classes, read the
|
|
1408 file into an Emacs buffer, narrow the buffer to the desired class and
|
|
1409 then execute the add command. @xref{Narrowing,,Narrowing, emacs, The
|
|
1410 Gnu Emacs Manual}.@refill
|
|
1411
|
|
1412 @{@kbd{C-c ^}@} is normally globally bound in the OO-Browser
|
|
1413 initialization file, @file{br-init.el}, so that it may be used outside
|
|
1414 of the browser when editing classes.
|
|
1415
|
|
1416 @kindex C-c C-d
|
|
1417 @findex br-delete
|
|
1418 @cindex class, deleting from Environment
|
|
1419 @cindex Environment, deleting classes
|
|
1420 To delete a class from the Environment, display the class name in a
|
|
1421 listing window using the @{@kbd{m}@} @code{(br-match)} command if
|
|
1422 necessary. (@xref{Locating Entries}.) Move point to the desired class
|
|
1423 name and hit @{@kbd{C-c C-d}@} @code{(br-delete)} to delete the class.
|
|
1424 This will remove the class name at point after the class is deleted from
|
|
1425 the Environment.@refill
|
|
1426
|
|
1427
|
|
1428 @node Completing Names, Graphical Browsing, Adding and Deleting Classes, Usage
|
|
1429 @section Completing Names
|
|
1430
|
|
1431 Whenever the browser prompts for a name and an Environment has already
|
|
1432 been loaded or built, one may use the browser's identifier name
|
|
1433 completion facilities to help in entering the name. These features
|
|
1434 allow you to type as much of the name as you know and then have the
|
|
1435 browser fill in what it can. The relevant keys are:
|
|
1436
|
|
1437 @table @key
|
|
1438 @item @{TAB@}
|
|
1439 complete as much as possible of a class or element name
|
|
1440 @item @{SPC@}
|
|
1441 complete up to one word of the class or element name
|
|
1442 @item @{@kbd{?}@}
|
|
1443 show all possible completions for class or element name
|
|
1444 @end table
|
|
1445
|
|
1446 You may also use the browser's completion facilities outside of the browser,
|
|
1447 for example, when editing code. @xref{Standalone, ,Using Standalone
|
|
1448 OO-Browser Features}, and the description of
|
|
1449 @code{(br-complete-type)}.@refill
|
|
1450
|
|
1451 @node Graphical Browsing, , Completing Names, Usage
|
|
1452 @section Graphical OO-Browser Interfaces
|
|
1453
|
|
1454 @cindex xoobr
|
|
1455 @cindex NEXTSTEP OO-Browser
|
|
1456 @cindex graphical browsing
|
|
1457 The X interface to the OO-Browser is called, @dfn{xoobr}. It provides a
|
|
1458 simple but effective means of navigating through OO-Browser hierarchy
|
|
1459 and element relations. (The NEXTSTEP OO-Browser is very similar to the
|
100
|
1460 X version, so the documentation herein also applies to it.)
|
0
|
1461
|
|
1462 Any number of xoobr sessions may be established at the same time. Each
|
|
1463 one is used to gain a particular view on an Environment. The textual
|
|
1464 OO-Browser is used to filter a set of classes for display in an xoobr
|
|
1465 process. For this reason, xoobr is invoked from within the textual
|
|
1466 OO-Browser.
|
|
1467
|
|
1468 @page
|
|
1469 @cindex X OO-Browser picture
|
|
1470 @cindex xoobr picture
|
|
1471 @iftex
|
|
1472 Here is a picture of the X OO-Browser.
|
|
1473 @sp 2
|
|
1474 @centerline{@psfig{figure=im/oobr-x.ps}}
|
|
1475 @end iftex
|
|
1476 @ifinfo
|
|
1477 If running under the X window system, Action Key click on the following
|
100
|
1478 filename to view a picture of the X OO-Browser: @file{im/oobr-x.xwd}.
|
0
|
1479 @end ifinfo
|
|
1480
|
100
|
1481 @kindex M-f
|
|
1482 @findex br-tree-features-toggle
|
|
1483 @cindex xoobr, displaying features
|
|
1484 @cindex descendancy view
|
|
1485 @{@kbd{M-f}@} @code{(br-tree-features-toggle)} or the menu item,
|
|
1486 @emph{Options/Graphical-Add-Features}, is used before creating a
|
|
1487 graphical descendency view to determine whether or not to include the
|
|
1488 features of each class in the listing as child nodes of the class.
|
|
1489 It toggles between showing features and not showing them in descendancy
|
|
1490 views. The setting applies across all OO-Browser languages. The
|
|
1491 default setting is not to add features to the view.
|
|
1492
|
0
|
1493 @kindex M-g
|
|
1494 @findex br-tree-graph
|
|
1495 @cindex xoobr, graphical view
|
|
1496 @{@kbd{M-g}@} @code{(br-tree-graph)} displays the current listing
|
|
1497 buffer's entries in a graphical form. It ignores the show
|
|
1498 features setting so that you can capture the current listing without
|
|
1499 the need to alter that setting.
|
|
1500
|
|
1501 @kindex M-d
|
|
1502 @findex br-tree
|
|
1503 @cindex xoobr, descendants
|
|
1504 @{@kbd{M-d}@} @code{(br-tree)} selects the current class and displays
|
|
1505 its descendancy graph in tree-form by starting a new xoobr session.
|
100
|
1506 With a prefix argument, @{@kbd{C-u M-d}@}, it displays descendancy trees
|
0
|
1507 for all classes at the current browser level. They are all grouped
|
100
|
1508 under an imaginary root node so as to maintain the concept of one
|
0
|
1509 tree per xoobr view.
|
|
1510
|
|
1511 @cindex xoobr, view
|
|
1512 Xoobr views are meant to complement the textual browser interface.
|
|
1513 Therefore, the two most common actions used in the text browser are
|
|
1514 performed in a similar manner within an xoobr view. A click on a node with
|
|
1515 the left mouse button highlights the node and then displays the appropriate
|
|
1516 class text in the chosen editor, ready for editing. A click of the
|
|
1517 middle button performs similarly but displays the associated class for
|
|
1518 viewing only.
|
|
1519
|
|
1520 @cindex xoobr, node menu
|
|
1521 [The right mouse button is disable in this release of the X OO-Browser
|
|
1522 because of an inability to debug a problem in limiting its use to tree
|
|
1523 nodes.] The right mouse button when depressed over a node displays a
|
|
1524 short menu of commands that may be applied to the node. The only ones
|
|
1525 of real interest at this point are the collapse and expand entries which
|
|
1526 let you hide and then restore the display of a node's subtree. This
|
|
1527 allows you precise control over the amount of detail you receive in
|
|
1528 various parts of the hierarchy.
|
|
1529
|
|
1530 @cindex xoobr, help
|
|
1531 The Help button in the upper right of the an xoobr session window when
|
|
1532 selected displays a few pages of help text regarding the program itself.
|
|
1533
|
|
1534 @kindex M-k
|
|
1535 @findex br-tree-kill
|
|
1536 @cindex xoobr, terminating
|
|
1537 @cindex xoobr, killing
|
|
1538 The @{@kbd{M-k}@} @code{(br-tree-kill)} command will prompt to see if
|
|
1539 you want to terminate all xoobr sessions started from within the current
|
|
1540 editor session. If you answer affirmatively, all such processes
|
|
1541 disappear, as your screen will quickly indicate.
|
|
1542
|
|
1543 @cindex xoobr, quitting
|
|
1544 @kindex C-u q
|
|
1545 @findex br-quit
|
|
1546 The upper left of a session window contains a set of buttons which
|
|
1547 display menus. The only menu entry you need be concerned with at all is
|
|
1548 found under the file menu, labelled "Quit". xoobr processes may also be
|
|
1549 terminated by issuing the kill command mentioned just before. A third
|
|
1550 menas of killing such processes is by sending the permanent
|
|
1551 @code{(br-quit)} command, @{@kbd{C-u q}@}, to the textual browser. You
|
|
1552 will then be prompted as to whether you want to terminate all xoobr
|
|
1553 sessions started from within the current editor session.
|
|
1554
|
|
1555 @node Options, Customization, Usage, Top
|
|
1556 @chapter OO-Browser Options
|
|
1557
|
|
1558 @menu
|
|
1559 * External Viewing:: Using An External Viewer or Editor
|
100
|
1560 * Inherited Features:: Toggling Inherited Features Display
|
|
1561 * Graphical Add Features:: Add Features to a Graphical View
|
0
|
1562 * Keep Viewed Classes::
|
|
1563 * Inhibit Version:: Inhibit Version Screen
|
|
1564 * Invert Ancestors:: Invert Ancestor Trees
|
|
1565 * Save All:: Save All Lookup Tables
|
|
1566 * Use Children:: Build Children Lookup Table
|
|
1567 * Sort Options:: Controlling Class Listing Order
|
|
1568 @end menu
|
|
1569
|
100
|
1570 @node External Viewing, Inherited Features, Options, Options
|
0
|
1571 @comment node-name, next, previous, up
|
|
1572 @section Using an External Viewer or Editor
|
|
1573
|
|
1574 @cindex editing, externally
|
|
1575 @cindex viewing, externally
|
|
1576 The OO-Browser allows you to select your desired editor and viewer
|
|
1577 programs when you use a multi-windowed display. By default, both of
|
|
1578 these tasks are handled by Emacs so that the browser works on text
|
|
1579 terminals. If you choose an external editor or viewer, Emacs will still
|
|
1580 automatically be used whenever you invoke the browser from a text
|
|
1581 terminal.
|
|
1582
|
|
1583 @vindex br-editor-cmd
|
|
1584 @cindex vi
|
|
1585 If you wish to edit classes displayed by the browser in an editor other
|
|
1586 than Emacs, set the @var{br-editor-cmd} variable to the command with
|
|
1587 which you wish to edit. Arguments to the command should be placed in
|
|
1588 the variables named @var{br-ed[1-9]}, with one string argument per
|
|
1589 variable. Unused variables should have the value @code{nil}. Bear in
|
|
1590 mind that the command must generate a new window under your window
|
|
1591 system. For example, the vi editor under UNIX does not create its own
|
|
1592 window, it runs within the window in which it is created. Under X one
|
|
1593 would create a new xterm window and then invoke vi. The command line
|
|
1594 would be @emph{xterm -e vi}, the settings in your personal
|
|
1595 initialization file would then be:
|
|
1596
|
|
1597 @display
|
|
1598 @code{
|
|
1599 (setq br-editor-cmd "xterm" br-ed1 "-e" br-ed2 "vi"
|
|
1600 br-ed3 nil br-ed4 nil br-ed5 nil
|
|
1601 br-ed6 nil br-ed7 nil br-ed8 nil br-ed9 nil)}
|
|
1602 @end display
|
|
1603
|
|
1604 @vindex window-system
|
|
1605 This editor will only be used when the browser is run under a window
|
|
1606 system external to Emacs, like X. (In such a case, the Emacs variable
|
|
1607 @var{window-system} will be non-nil).
|
|
1608
|
|
1609 @vindex br-viewer-cmd
|
|
1610 @cindex xmore
|
|
1611 If you want to view classes in a read-only fashion outside of Emacs, set the
|
|
1612 following @var{br-viewer-cmd} and @var{br-vw[1-9]} variables in a similar
|
|
1613 manner as you did for the editor variables above.
|
|
1614
|
|
1615 For example, to use @file{xmore}, an X-compatible version of @file{more}, as
|
|
1616 your viewer, use the following settings (assuming all the @var{br-vw}
|
|
1617 variables are already null):
|
|
1618
|
|
1619 @display
|
|
1620 @code{(setq br-viewer-cmd "xmore")}
|
|
1621 @end display
|
|
1622
|
|
1623
|
100
|
1624 @node Inherited Features, Graphical Add Features, External Viewing, Options
|
|
1625 @comment node-name, next, previous, up
|
|
1626 @section Toggling Inherited Features Display
|
|
1627
|
|
1628 @cindex inherited features
|
|
1629 @cindex feature options
|
|
1630 By default, when the OO-Browser lists features of a class, it shows both
|
|
1631 the ones lexically defined within the class source text and the ones
|
|
1632 inherited from ancestor classes. Each feature is listed below the class
|
|
1633 in which it is originally defined, for clarity. Sometimes it is useful
|
|
1634 to see only the lexically defined features of a class. In such cases,
|
|
1635 the menu item, @emph{Options/Show-Inherited-Features}, toggles this
|
|
1636 setting. If you want this on by default, you can add the following
|
|
1637 line to a personal initialization file:
|
|
1638
|
|
1639 @display
|
|
1640 @code{(setq br-inherited-features-flag nil)}
|
|
1641 @end display
|
|
1642
|
|
1643
|
|
1644 @node Graphical Add Features, Keep Viewed Classes, Inherited Features, Options
|
|
1645 @comment node-name, next, previous, up
|
|
1646 @section Add Features to a Graphical View
|
|
1647
|
|
1648 @xref{Graphical Browsing, , Graphical OO-Browser Interfaces}.
|
|
1649
|
|
1650
|
|
1651 @node Keep Viewed Classes, Inhibit Version, Graphical Add Features, Options
|
0
|
1652 @comment node-name, next, previous, up
|
|
1653 @section Keep Viewed Classes
|
|
1654
|
|
1655 @vindex br-keep-viewed-classes
|
|
1656 The @var{br-keep-viewed-classes} flag is turned off by default,
|
|
1657 indicating that each time a class is viewed immediately after another
|
|
1658 one, the prior one is deleted. If it is set to any non-nil value, all
|
|
1659 viewed classes are left around for selection.
|
|
1660
|
|
1661 In typical use, the burden of having to manage all viewed classes is
|
|
1662 greater than the benefit of leaving them in memory. This is why the
|
|
1663 flag is off by default. The class buffer menu can be used to delete
|
|
1664 buffers when you want to trim down the number with which you are dealing.
|
|
1665 @xref{Using the Mouse}, for details on this technique.
|
|
1666
|
|
1667 @findex br-toggle-keep-viewed
|
|
1668 @vindex br-keep-viewed-classes
|
100
|
1669 The value of the @var{br-keep-viewed-classes} flag may be easily toggled
|
|
1670 with the @code{(br-toggle-keep-viewed)} command or with the menu item,
|
|
1671 @emph{Options/Keep-Viewed-Classes}.
|
0
|
1672
|
|
1673
|
|
1674 @node Inhibit Version, Invert Ancestors, Keep Viewed Classes, Options
|
|
1675 @section Inhibit Version Screen
|
|
1676
|
|
1677 @vindex br-inhibit-version
|
100
|
1678 After you are familiar with the opening OO-Browser version and credits
|
|
1679 screen, you may want to disable its display each time the browser is
|
|
1680 started. This is done by setting @var{br-inhibit-version} non-nil, as
|
|
1681 in the following line that would go in your personal OO-Browser
|
|
1682 initialization file:
|
0
|
1683
|
|
1684 @example
|
|
1685 @code{(setq br-inhibit-version t)}
|
|
1686 @end example
|
|
1687
|
|
1688 @kindex C-c #
|
|
1689 @findex br-version
|
|
1690 @cindex version, browser
|
|
1691 @cindex support
|
|
1692 @noindent
|
|
1693 This option has no effect on the display of the help screen which
|
100
|
1694 is displayed after the version screen. Even with this option set, you
|
|
1695 may display the version screen at any time from within a browser listing
|
0
|
1696 window by using @{@kbd{C-c #}@} @code{(br-version)}.
|
|
1697
|
|
1698
|
|
1699 @node Invert Ancestors, Save All, Inhibit Version, Options
|
|
1700 @section Invert Ancestor Trees
|
|
1701
|
|
1702 @xref{Descendants and Ancestors,,Browsing Descendants and Ancestors},
|
|
1703 for more information.@refill
|
|
1704
|
|
1705 This is a global OO-Browser option, it affects all Environments.
|
|
1706
|
|
1707 Ancestor trees are normally shown to emphasize how the trees branch out
|
|
1708 from their origin. An initialization file line such as:
|
|
1709
|
|
1710 @example
|
|
1711 @code{(setq br-invert-ancestors t)}
|
|
1712 @end example
|
|
1713
|
|
1714 @noindent
|
|
1715 will cause the display of ancestor trees to be inverted such that the further
|
|
1716 ancestors appear as roots of the trees and parents (the nearest ancestors)
|
|
1717 appear as leaves in the trees. This ensures that all listing displays
|
|
1718 reflect the class inheritance structure with children below parents.
|
|
1719
|
|
1720
|
|
1721 @node Save All, Use Children, Invert Ancestors, Options
|
|
1722 @section Save All Lookup Tables
|
|
1723
|
|
1724 This is an Environment-specific option set during Environment
|
|
1725 specification. @xref{Creating Environments}.@refill
|
|
1726
|
|
1727 Half of the browser lookup tables can be built whenever an Environment
|
|
1728 is loaded. If this option is set, these tables will be stored in the
|
|
1729 Environment file instead. This will speed Environment loading somewhat,
|
|
1730 at the cost of doubling the file size per saved Environment.
|
|
1731
|
|
1732 @node Use Children, Sort Options, Save All, Options
|
|
1733 @section Build Children Lookup Table
|
|
1734
|
|
1735 This is an Environment-specific option set during Environment
|
|
1736 specification. @xref{Creating Environments}.@refill
|
|
1737
|
|
1738 This is a highly recommended option that allows for fast descendant
|
|
1739 lookups. The only time one would turn off this option would be when a
|
|
1740 file system is extremely short of space.
|
|
1741
|
|
1742 @node Sort Options, , Use Children, Options
|
|
1743 @section Controlling Class Listing Order
|
|
1744
|
|
1745 @vindex br-sort-options
|
|
1746 @cindex listing order
|
|
1747 @cindex sorting options
|
|
1748 @cindex listing options
|
|
1749 The OO-Browser normally orders classes and elements in listing windows
|
|
1750 according to the ASCII character set. This sort order is controlled by the
|
|
1751 @var{br-sort-options} variable which specifies the command line options
|
|
1752 sent to the system @code{sort} command. (Under any Emacs 19 variant,
|
|
1753 this variable is not used by the @code{br-order} command, bound to
|
|
1754 @{@kbd{o}@}.)
|
|
1755
|
|
1756 The value of this variable should be a single string of options such as
|
|
1757 @code{-fu} (the default) or @code{nil} for no options. The @code{-f}
|
|
1758 option folds upper and lower case to the same character for sort
|
|
1759 comparisons. The @code{-u} option leaves only unique elements in the
|
|
1760 listing by eliminating any duplicate entries.
|
|
1761
|
|
1762 @node Customization, Standalone, Options, Top
|
|
1763 @chapter Personal Customization
|
|
1764
|
|
1765 @vindex br-skip-dir-regexps
|
|
1766 @cindex scanning, skip directories
|
|
1767 @cindex directory scanning
|
|
1768 The @var{br-skip-dir-regexps} variable is a list of regular expressions
|
|
1769 which match directory names that the OO-Browser will not descend when
|
|
1770 scanning source code trees.
|
|
1771
|
|
1772 @vindex br-file-dir-regexp
|
|
1773 The @var{br-file-dir-regexp} variable specifies a regular expression
|
|
1774 that matches to file and directory names that the OO-Browser should
|
|
1775 scan. Any others, including those matched by @var{br-skip-dir-regexps},
|
|
1776 are ignored.
|
|
1777
|
|
1778 @cindex initialization file
|
|
1779 @cindex personal initialization
|
|
1780 @vindex file, .br-init.el
|
|
1781 The following hook variables are provided so that one may customize what
|
|
1782 happens each time the OO-Browser is invoked. Set them as you would any
|
|
1783 other Emacs Lisp hook variables in a personal OO-Browser initialization
|
|
1784 file, @file{~/.br-init.el}. They all default to null operations.
|
|
1785
|
|
1786 @vindex br-mode-hook
|
|
1787 If you want a set of actions to occur each time after the OO-Browser is
|
|
1788 invoked, attach them to @var{br-mode-hook}. For language-specific
|
|
1789 actions, a language-specific hook such as @var{br-eif-mode-hook},
|
|
1790 or @var{br-c++-mode-hook} is run after @var{br-mode-hook}.
|
|
1791
|
|
1792 @vindex br-class-list-hook
|
|
1793 If you want a set of actions to occur after each time that a new browser
|
|
1794 listing buffer is created, set @var{br-class-list-hook}.
|
|
1795
|
|
1796
|
|
1797 @node Standalone, Languages, Customization, Top
|
|
1798 @chapter Using Standalone OO-Browser Features
|
|
1799
|
|
1800 A number of browser features may be used independently of the browser
|
|
1801 user interface, assuming that a site-wide or personal OO-Browser
|
|
1802 initialization file has been loaded into your current Emacs session.
|
|
1803
|
|
1804 @kindex C-c C-o
|
|
1805 First, an Environment must be selected and loaded into the OO-Browser
|
|
1806 via @{@kbd{C-c C-o}@}. When the browser user interface is displayed,
|
|
1807 use @{@kbd{q}@} to quit.
|
|
1808
|
|
1809 @findex br-env-load
|
|
1810 Alternatively, you can load an Environment without invoking the browser
|
|
1811 user interface by using @{@kbd{M-x br-env-load @key{RET}}@}. The
|
|
1812 standalone browser features will use the newly loaded Environment.
|
|
1813
|
|
1814 @noindent
|
|
1815 The commands that are available for standalone use include:
|
|
1816 @table @code
|
|
1817 @findex br-add-class-file
|
|
1818 @item br-add-class-file
|
|
1819 Add a file of classes to the current Environment. @xref{Adding and
|
|
1820 Deleting Classes}.@refill
|
|
1821
|
|
1822 @item br-find
|
|
1823 @findex br-find
|
|
1824 Interactively complete class or ELEMENT name and jump to its definition.
|
|
1825
|
|
1826 @findex br-find-class
|
|
1827 @item br-find-class
|
|
1828 Display file of class text matching CLASS-NAME in VIEW-ONLY mode if non-nil.
|
|
1829
|
|
1830 @findex br-complete-type
|
|
1831 @item br-complete-type
|
|
1832 Perform in-buffer completion of a type or element identifier before point.
|
|
1833
|
|
1834 @findex br-class-path
|
|
1835 @item br-class-path
|
|
1836 Return full path, if any, to CLASS-NAME.
|
|
1837 With optional prefix argument INSERT non-nil, insert path at point.
|
|
1838 @end table
|
|
1839
|
|
1840 All of these commands provide full completion. @xref{Completing Names},
|
|
1841 based upon the current OO-Browser Environment.@refill
|
|
1842
|
|
1843 @findex br-find
|
|
1844 @cindex finding an element
|
|
1845 @cindex searching for an element
|
|
1846 When editing and debugging code, one often wants to look at a class or
|
|
1847 element definition without having to invoke the browser to locate it.
|
|
1848 The @code{(br-find)} command does exactly that by prompting for a name
|
|
1849 and then displaying for editing the class or element definition given by
|
|
1850 that name.
|
|
1851
|
|
1852 @findex br-find-class
|
|
1853 @cindex finding a class
|
|
1854 @cindex searching for a class
|
|
1855 The @code{(br-find-class)} command is similar. It prompts for a class name
|
|
1856 and then displays its source file in a viewable, read-only mode. To
|
|
1857 display a class file in an editable mode, send a prefix argument to this
|
|
1858 command.
|
|
1859
|
|
1860 @findex br-complete-type
|
|
1861 When writing code and entering class attribute definitions (variable
|
|
1862 definitions), one often has to repetitively enter class names as the
|
|
1863 static types for the attributes. The @code{(br-complete-type)} command
|
|
1864 completes and inserts a class name at point in the current buffer.
|
|
1865 The traditional key to bind such a command to is @{@kbd{M-@key{TAB}}@}.
|
|
1866 The following example illustrates its usage.
|
|
1867 @display
|
|
1868 my_list: LIN<-- (point is here)
|
|
1869
|
|
1870 @{@kbd{M-@key{TAB}}@} is hit:
|
|
1871
|
|
1872 my_list: LINKED_LIST
|
|
1873 @end display
|
|
1874
|
|
1875 @findex br-class-path
|
|
1876 The @code{(br-class-path)} command prompts for a class name and
|
|
1877 displays the full path of the associated class source file in the
|
|
1878 minibuffer. With a prefix argument, it inserts the path name at point
|
|
1879 in the current buffer.
|
|
1880
|
|
1881 The following key bindings are recommended when using these standalone
|
|
1882 features:
|
|
1883
|
|
1884 @kindex C-M-i
|
|
1885 @kindex M-TAB
|
|
1886 @kindex C-c C-f
|
|
1887 @kindex C-c C-w
|
|
1888 @example
|
|
1889 @code{(define-key eiffel-mode-map "\C-c\C-f" 'br-find)}
|
|
1890 @code{(define-key c++-mode-map "\C-c\C-f" 'br-find)}
|
|
1891 @code{(define-key lisp-mode-map "\C-c\C-f" 'br-find)}
|
|
1892 @code{(define-key objc-mode-map "\C-c\C-f" 'br-find)}
|
|
1893 @code{(define-key smalltalk-mode-map "\C-c\C-f" 'br-find)}
|
|
1894
|
|
1895 ;; @{@kbd{C-M-i}@} means @{@kbd{M-@key{TAB}}@}.
|
|
1896 @code{(define-key eiffel-mode-map "\C-\M-i" 'br-complete-type)}
|
|
1897 @code{(define-key c++-mode-map "\C-\M-i" 'br-complete-type)}
|
|
1898 @code{(define-key lisp-mode-map "\C-\M-i" 'br-complete-type)}
|
|
1899 @code{(define-key objc-mode-map "\C-\M-i" 'br-complete-type)}
|
|
1900 @code{(define-key smalltalk-mode-map "\C-\M-i" 'br-complete-type)}
|
|
1901
|
|
1902 @code{(define-key eiffel-mode-map "\C-c\C-w" 'br-class-path)}
|
|
1903 @code{(define-key c++-mode-map "\C-c\C-w" 'br-class-path)}
|
|
1904 @code{(define-key lisp-mode-map "\C-c\C-w" 'br-class-path)}
|
|
1905 @code{(define-key objc-mode-map "\C-c\C-w" 'br-class-path)}
|
|
1906 @code{(define-key smalltalk-mode-map "\C-c\C-w" 'br-class-path)}.
|
|
1907 @end example
|
|
1908
|
|
1909 @xref{Eiffel Specifics}, for an Eiffel-specific standalone browser
|
|
1910 feature.@refill
|
|
1911
|
|
1912 @node Languages, Features, Standalone, Top
|
|
1913 @chapter Language-Specific Notes
|
|
1914
|
|
1915 @menu
|
|
1916 * C Specifics::
|
|
1917 * C++ Specifics::
|
|
1918 * CLOS Specifics::
|
|
1919 * Eiffel Specifics::
|
|
1920 * Java Specifics::
|
|
1921 * Objective-C Specifics::
|
|
1922 * Python Specifics::
|
|
1923 @end menu
|
|
1924
|
|
1925 @node C Specifics, C++ Specifics, Languages, Languages
|
|
1926 @section C Specifics
|
|
1927
|
|
1928 @vindex br-c-tags-flag
|
|
1929 @findex br-toggle-c-tags
|
|
1930 The @var{br-c-tags-flag} variable controls whether or not C constructs
|
|
1931 are included within C and C-based language Environments. By default,
|
|
1932 this flag is true. Use @code{M-x br-toggle-c-tags RET} to toggle its
|
|
1933 value. If you set it false before building an Environment, then C
|
|
1934 constructs will not be included in the Environment. (Note that C
|
|
1935 functions are always included in C++ Environments, regardless of this
|
|
1936 flag value.)
|
|
1937
|
|
1938 If you wish to build an Environment whose source code is entirely C,
|
|
1939 ensure that the @var{br-c-tags-flag} is enabled and then select C++ when
|
|
1940 asked for the language to browse. In the future, a language setting for
|
|
1941 C will probably be added.
|
|
1942
|
|
1943 C constructs are grouped into default classes for browsing. The
|
|
1944 elements of each default class are the instances of the associated
|
|
1945 construct within the Environment. Use normal element/feature commands
|
|
1946 to browse each instance.
|
|
1947
|
|
1948 @example
|
|
1949 DEFAULT CLASS C CONSTRUCT
|
|
1950 --------------------------------------
|
|
1951 [constant] #define constant
|
|
1952 [enumeration] enum @{@}
|
|
1953 [function] non-member function()
|
|
1954 [macro] #define macro()
|
|
1955 [structure] struct @{@}
|
|
1956 [type] typedef @{@}
|
|
1957 [union] union @{@}
|
|
1958 @end example
|
|
1959
|
|
1960 @node C++ Specifics, CLOS Specifics, C Specifics, Languages
|
|
1961 @section C++ Specifics
|
|
1962
|
|
1963 @xref{C Specifics}, for details on C-specific support within C++
|
|
1964 Environments.
|
|
1965
|
|
1966 @menu
|
|
1967 * C++ Element Selection:: Source Code Element Selection
|
|
1968 * C++ Settings::
|
|
1969 @end menu
|
|
1970
|
|
1971 @node C++ Element Selection, C++ Settings, C++ Specifics, C++ Specifics
|
|
1972 @subsection Source Code Element Selection
|
|
1973
|
|
1974 @cindex C++ feature listings
|
|
1975 @cindex pure virtual function
|
|
1976 @cindex function, pure virtual
|
|
1977 @cindex deferred function
|
|
1978 C++ pure virtual function declarations, which specify method interfaces
|
|
1979 but no implementation, appear in class feature listings. The function
|
|
1980 name is preceded by the @code{"> "} string to identify the function as a
|
|
1981 pure virtual (deferred) function. Pure virtuals may be treated like any
|
|
1982 other member functions within the browser. Since there is no definition
|
|
1983 for such a function within the class in which it is listed, its
|
|
1984 declaration will be shown instead, when requested.
|
|
1985
|
|
1986 @cindex friend
|
|
1987 @cindex function, friend
|
|
1988 @cindex class, friend
|
|
1989 @findex br-view-friend
|
|
1990 @kindex V
|
|
1991 Friend functions and friend classes give members of another class
|
|
1992 access to the private parts of the current class. They appear
|
|
1993 in class feature listings preceded by the @code{"% "} string.
|
|
1994 The keys, @{@kbd{v}@} or @{@kbd{e}@}, display the friend declaration
|
|
1995 within the current class. Use @{@kbd{V}@}, @code{(br-view-friend)} to
|
|
1996 view the definition of the friend class or function.
|
|
1997
|
|
1998 @cindex constructor
|
|
1999 @cindex destructor
|
|
2000 @cindex operator new
|
|
2001 @cindex operator delete
|
|
2002 Methods and operators associated with creating and destroying objects
|
|
2003 are preceded by the @code{"+ "} string in listing buffers. All other
|
|
2004 method listing entries are preceded by the @code{"- "} string.
|
|
2005
|
|
2006 @cindex C++
|
|
2007 One can jump from a C++ declaration to its definition by clicking the
|
|
2008 Action Key when within the declaration. Most importantly, once a class
|
|
2009 header file is displayed, simply click on a method declaration to see
|
|
2010 its corresponding definition. Each feature declaration should be
|
|
2011 terminated with a semicolon to ensure accurate scanning. If the method
|
|
2012 is inherited from another class, a message at the bottom of the frame
|
|
2013 will describe which class the method is defined in once the browser
|
|
2014 displays the method definition.
|
|
2015
|
|
2016 Parent classes may be browsed in a similar manner by clicking on their
|
|
2017 names in an inheritance or declaration clause. It is therefore
|
|
2018 important to click on the method name part of a declaration when that is
|
|
2019 the element desired.
|
|
2020
|
|
2021 @vindex c++-include-dirs
|
|
2022 @cindex #include
|
|
2023 @cindex include files
|
|
2024 Include files may be browsed by selecting their inclusion declarations
|
|
2025 (#include ...) within a source file. Include files delimited by double
|
|
2026 quotes are searched for in the following places: first, the directory of
|
|
2027 the current source file, then the directories listed in the variable
|
|
2028 @var{c++-include-dirs}, and then in any directories included in the
|
|
2029 current environment.
|
|
2030
|
|
2031 @vindex c++-cpp-include-dirs
|
|
2032 Include files delimited by angle brackets are searched for in the
|
|
2033 following places: first, the directories listed in the variable
|
|
2034 @var{c++-include-dirs}, then the directories listed in the variable
|
|
2035 @var{c++-cpp-include-dirs}, and then in any directories included in the
|
|
2036 current environment. The variable @var{c++-cpp-include-dirs} should
|
|
2037 hold a list of the standard directories searched by your C++ pre-processor.
|
|
2038 Each directory entry must end with a directory separator. On UNIX
|
100
|
2039 systems, this is the `/' character.
|
0
|
2040
|
|
2041 @node C++ Settings, , C++ Element Selection, C++ Specifics
|
|
2042 @subsection C++ Settings
|
|
2043 @vindex c++-class-keyword
|
|
2044 @cindex class definition keywords
|
|
2045 By default, @code{class}, @code{struct} and @code{union} definitions all
|
|
2046 constitute class definitions to the C++ OO-Browser. If you prefer some
|
|
2047 other criteria, you will need to modify the definition of
|
|
2048 @var{c++-class-keyword} in @file{br-c++.el}.
|
|
2049
|
|
2050 @vindex c++-src-file-regexp
|
|
2051 @cindex file suffixes
|
|
2052 If you find that the browser is not scanning some of your C++ source
|
|
2053 files, you may be using file suffixes which it does not recognize.
|
|
2054 Examine the value of @var{c++-src-file-regexp} and add any special file
|
|
2055 suffixes you use to it.@refill
|
|
2056
|
|
2057 @node CLOS Specifics, Eiffel Specifics, C++ Specifics, Languages
|
|
2058 @section CLOS Specifics
|
|
2059
|
|
2060 @menu
|
|
2061 * CLOS Method Handling:: Method Handling
|
|
2062 * CLOS Settings::
|
|
2063 @end menu
|
|
2064
|
|
2065 @node CLOS Method Handling, CLOS Settings, CLOS Specifics, CLOS Specifics
|
|
2066 @subsection Method Handling
|
|
2067 @cindex CLOS methods
|
|
2068 @cindex CLOS types
|
|
2069 @cindex specialized parameters
|
|
2070 @cindex methods, specialized parameters
|
|
2071 In CLOS, methods may have typed parameters of the form,
|
|
2072 @code{(<parameter-name> <class>)}; these are called @dfn{specialized
|
|
2073 parameters}. Each such parameter defines the method within
|
|
2074 @code{<class>}. Thus, a single method definition can generate methods
|
|
2075 associated with many classes. The OO-Browser lets you navigate to a
|
|
2076 method definition from any of the classes for which it is defined, since
|
|
2077 a method is included as an element of each of its constituent classes.
|
|
2078
|
|
2079 CLOS permits compile-time computation of the @code{<class>} of a
|
|
2080 specialized parameter, through use of the expression, @code{(eql
|
|
2081 <form>)}. Since the OO-Browser cannot perform this computation, it
|
|
2082 treats such a parameter as non-specialized.
|
|
2083
|
|
2084 @cindex CLOS, the class t
|
|
2085 Methods may also contain non-specialized parameters of the form,
|
|
2086 @code{<parameter-name>}. The type of each such parameter defaults to
|
|
2087 the default root class @code{t} in CLOS. But a method is only included
|
|
2088 in the class @code{t} by the OO-Browser if none of its parameters are
|
|
2089 specialized. Otherwise, methods with more specific types which happened
|
|
2090 to include one or more non-specialized parameters would appear to not
|
|
2091 have a more specific type than @code{t}.
|
|
2092
|
|
2093 @node CLOS Settings, , CLOS Method Handling, CLOS Specifics
|
|
2094 @subsection CLOS Settings
|
|
2095 The OO-Browser automatically works with CLOS class and method
|
|
2096 definitions. But Lisp contains many other standard object types such as
|
|
2097 functions, macros and variables which you may wish to browse. These are
|
|
2098 handled through a configuration variable as explained below.
|
|
2099
|
|
2100 @vindex clos-element-type-alist
|
|
2101 @cindex default class
|
|
2102 @cindex element type
|
|
2103 The @var{clos-element-type-alist} variable determines the Lisp definition
|
|
2104 constructs that the browser looks for and the associated default class
|
|
2105 under which instances of each construct type are grouped. Each element
|
|
2106 in the association list is a cons cell whose first part is the function
|
|
2107 name string that defines an instance of a particular type,
|
|
2108 e.g@. @code{"defun"}.
|
|
2109
|
|
2110 The second part is a default class name, a string, under which to assign
|
|
2111 each instance of the type, e.g@. @code{"function"}. The OO-Browser
|
|
2112 always displays default class names with square brackets around them,
|
|
2113 e.g@. @code{[function]}, to distinguish them from classes defined within
|
|
2114 the Environment.
|
|
2115
|
|
2116 @noindent
|
|
2117 Here is the default @var{clos-element-type-alist} setting:
|
|
2118
|
|
2119 @example
|
|
2120 '(("defconstant" . "constant")
|
|
2121 ("defconst" . "constant")
|
|
2122 ("defun" . "function")
|
|
2123 ("defgeneric" . "generic")
|
|
2124 ("defmacro" . "macro")
|
|
2125 ("defpackage" . "package")
|
|
2126 ("defparameter" . "parameter")
|
|
2127 ("defsetf" . "setfunction")
|
|
2128 ("defstruct" . "structure")
|
|
2129 ("deftype" . "type")
|
|
2130 ("defvar" . "variable")
|
|
2131 ("fset" . "function"))
|
|
2132 @end example
|
|
2133
|
|
2134 @vindex clos-def-form-with-args-regexp
|
|
2135 The @var{clos-def-form-with-args-regexp} is a regular expression which
|
|
2136 includes a subset of the definition symbol names from
|
|
2137 @var{clos-element-type-alist}, namely those which require an argument
|
|
2138 list to uniquely distinguish them from other elements, e.g@. functions.
|
|
2139
|
|
2140
|
|
2141 @node Eiffel Specifics, Java Specifics, CLOS Specifics, Languages
|
|
2142 @section Eiffel Specifics
|
|
2143
|
|
2144 Eiffel support has now been updated to Eiffel version 3, to the best
|
|
2145 of our knowledge. If you find any problems, please report them
|
100
|
2146 to <oo-browser@@infodock.com> (this is a public mailing list).
|
0
|
2147
|
|
2148 @menu
|
|
2149 * Eiffel Listings::
|
|
2150 * Eiffel Element Selection:: Source Code Element Selection
|
|
2151 * Eiffel Settings::
|
|
2152 @end menu
|
|
2153
|
|
2154 @node Eiffel Listings, Eiffel Element Selection, Eiffel Specifics, Eiffel Specifics
|
|
2155 @subsection Eiffel Listings
|
|
2156
|
|
2157 Eiffel entities are categorized when shown within OO-Browser listing
|
|
2158 buffers. Classes are shown by name, without any prefix. Features
|
|
2159 are shown by name but are preceded by a special character that indicates
|
|
2160 the kind of feature. The following table describes each prefix.
|
|
2161
|
|
2162 @table @code
|
|
2163 @item -
|
|
2164 precedes regular routines;
|
|
2165 @item =
|
|
2166 precedes attributes;
|
|
2167 @item 1
|
|
2168 precedes once routines, which create shared objects;
|
|
2169 @item >
|
|
2170 precedes deferred features, which are specified but not defined within
|
|
2171 this class;
|
|
2172 @item /
|
|
2173 precedes external features, which are defined in a non-Eiffel language.
|
|
2174 @end table
|
|
2175
|
|
2176 @node Eiffel Element Selection, Eiffel Settings, Eiffel Listings, Eiffel Specifics
|
|
2177 @subsection Source Code Element Selection
|
|
2178 @cindex Eiffel
|
|
2179 One can jump from an Eiffel element reference to its definition by
|
|
2180 clicking the Action Key when within the reference. Selection of a
|
|
2181 feature name in an export clause displays the feature definition, even
|
|
2182 if it is renamed several times within ancestors. Parent classes may be
|
|
2183 browsed in a similar manner by clicking on their names in an inheritance
|
|
2184 or declaration clause.
|
|
2185
|
|
2186 The following example of locating a renamed feature is taken from an
|
|
2187 actual set of Eiffel library classes:
|
|
2188
|
|
2189 @example
|
|
2190 User selects feature @code{subwindow} of @code{POPUP_MENU}
|
|
2191 inherited from @code{WINDOW} which renames @code{child} as @code{subwindow}
|
|
2192 inherited from @code{TWO_WAY_TREE} which renames @code{active} as @code{child}
|
|
2193 inherited from @code{TWO_WAY_LIST}
|
|
2194 inherited from @code{LINKED_LIST} which defines @code{active}.
|
|
2195 @end example
|
|
2196
|
|
2197 The browser would display the feature @code{active} and explain to the
|
|
2198 user that feature @code{subwindow} of class @code{POPUP_MENU} is
|
|
2199 inherited from feature @code{active} of class @code{LINKED_LIST}.
|
|
2200 Location of this sort of feature definition would be incredibly tedious
|
|
2201 without programmatic support.
|
|
2202
|
|
2203 The algorithm used to locate features is dynamic, so if another class
|
|
2204 were inserted into the inheritance structure given above, the feature
|
|
2205 definition would still be located properly.
|
|
2206
|
|
2207 @node Eiffel Settings, , Eiffel Element Selection, Eiffel Specifics
|
|
2208 @subsection Eiffel Settings
|
|
2209
|
|
2210 @findex eif-get-parents-from-source
|
100
|
2211 Be sure that the `inherit' and `feature' clauses in your classes begin in
|
0
|
2212 column 0; otherwise the browser parser will not work properly. If you prefer
|
|
2213 some other indentation style, you will need to slightly alter
|
|
2214 @code{(eif-get-parents-from-source)} in @file{br-eif.el}; specifically,
|
100
|
2215 the lines that contain `^inherit' and `^feature'.
|
0
|
2216
|
|
2217 @cindex Eiffel, error parsing
|
|
2218 @cindex error parsing
|
|
2219 Emacs has a feature called error parsing which lets one quickly jump to
|
|
2220 the line of code that supposedly triggered an error.
|
|
2221 (@xref{Compilation, ,Compilation Errors, emacs, The Gnu Emacs Manual},
|
|
2222 for information on error parsing.) Some object-oriented language
|
|
2223 compilers display the name of the class and line number with each error
|
|
2224 message but do not include the filename containing the class source
|
|
2225 code. Emacs then has no way of parsing the error message. The browser
|
|
2226 class location facilities enable one to perform error parsing across any
|
|
2227 set of classes in a single Environment, given only this type of
|
|
2228 message. Interactive Software Engineering's Eiffel compiler is an
|
|
2229 example of a compiler that produces this type of error. The code for
|
|
2230 parsing these Eiffel error messages is included in
|
|
2231 @file{eif-ise-err.el}.@refill
|
|
2232
|
|
2233 @node Java Specifics, Objective-C Specifics, Eiffel Specifics, Languages
|
|
2234 @section Java Specifics
|
|
2235
|
|
2236 @cindex Java feature listings
|
100
|
2237 @cindex Java attribute
|
|
2238 @cindex attribute, Java
|
|
2239 Java attribute names are precededed by @code{"= "} in feature listings.
|
|
2240
|
0
|
2241 @cindex abstract method
|
|
2242 @cindex method, abstract
|
|
2243 @cindex deferred function
|
|
2244 Java abstract method declarations, which specify method interfaces
|
|
2245 but no implementation, appear in class feature listings. The method
|
|
2246 name is preceded by the @code{"> "} string to identify the method as an
|
|
2247 abstract (deferred) method. Abstract methods may be treated like any
|
|
2248 other methods within the browser. Since there is no definition
|
|
2249 for such a method within the class in which it is listed, its
|
|
2250 declaration will be shown instead, when requested.
|
|
2251
|
|
2252 @cindex native method
|
|
2253 @cindex method, native
|
|
2254 Native methods are like abstract methods in that only their interfaces
|
|
2255 are specified in Java. Unlike abstract methods, their method bodies are
|
|
2256 defined in external languages such as C to allow for machine-specific
|
|
2257 dependencies. Native methods are listed in the browser prefixed by the
|
|
2258 @code{"/ "} string, indicating that they are divided between Java and
|
|
2259 another language.
|
|
2260
|
|
2261 @cindex constructor
|
|
2262 @cindex destructor
|
|
2263 Methods associated with creating and destroying objects
|
|
2264 are preceded by the @code{"+ "} string in listing buffers. All other
|
|
2265 method listing entries are preceded by the @code{"- "} string.
|
|
2266
|
|
2267 @vindex Java-class-keyword
|
|
2268 @cindex class definition keywords
|
|
2269 Java interface specifications, which specify protocols to which classes
|
|
2270 must conform, are treated just like class definitions in browser
|
|
2271 listings. All the methods of such interfaces are abstract, however.
|
|
2272
|
|
2273 @node Objective-C Specifics, , Java Specifics, Languages
|
|
2274 @section Objective-C Specifics
|
|
2275
|
|
2276 @xref{C Specifics}, for details on C-specific support within Objective-C
|
|
2277 Environments.
|
|
2278
|
|
2279 The OO-Browser supports browsing Objective-C classes, methods,
|
|
2280 categories and formal protocols. Earlier sections of this manual explain
|
|
2281 how to browse these entities. This section documents Objective-C
|
|
2282 language specifics, including variable settings.
|
|
2283
|
|
2284 Objective-C entities are categorized when shown within OO-Browser listing
|
|
2285 buffers. Classes are shown by name, without any prefix. Methods
|
|
2286 are shown by name but are preceded by a special character that indicates
|
|
2287 the kind of method. The following table describes each prefix.
|
|
2288
|
|
2289 @table @code
|
|
2290 @item -
|
|
2291 precedes instance methods;
|
|
2292 @item +
|
|
2293 precedes class (factory) methods that affect the factory object for the
|
|
2294 class.
|
|
2295 @end table
|
|
2296
|
|
2297 @menu
|
|
2298 * Objective-C Categories::
|
|
2299 * Objective-C Protocols::
|
|
2300 * Objective-C Element Selection:: Source Code Element Selection
|
|
2301 * Objective-C Settings::
|
|
2302 @end menu
|
|
2303
|
|
2304 @node Objective-C Categories, Objective-C Protocols, Objective-C Specifics, Objective-C Specifics
|
|
2305 @subsection Objective-C Categories
|
|
2306 @cindex category
|
|
2307 @cindex Objective-C category
|
|
2308 An @dfn{Objective-C category} is an internal class grouping that
|
|
2309 specifies and implements a set of related class features. The
|
|
2310 aggregation of all of the categories defined by a class and its
|
|
2311 ancestors represents the complete class definition.
|
|
2312
|
|
2313 The OO-Browser can list and browse the source for: the categories of a
|
|
2314 class, all class categories in an Environment, and the classes which
|
|
2315 implement a category. @xref{Browsing Categories}, for details.
|
|
2316
|
|
2317 @node Objective-C Protocols, Objective-C Element Selection, Objective-C Categories, Objective-C Specifics
|
|
2318 @subsection Objective-C Protocols
|
|
2319 @cindex protocol
|
|
2320 @cindex Objective-C protocol
|
|
2321 An @dfn{Objective-C protocol} is an interface specification to which a
|
|
2322 class may conform. The protocol includes a set of method signatures
|
|
2323 which any conforming class must implement. One protocol may inherit
|
|
2324 from a list of other protocols, and thus expand the set of methods which
|
|
2325 a conforming class must implement. The OO-Browser can list and browse
|
|
2326 the source for: the protocols to which a class conforms, all protocols
|
|
2327 in an Environment, and the implementors of a protocol. @xref{Browsing
|
|
2328 Protocols}, for details.
|
|
2329
|
|
2330 @node Objective-C Element Selection, Objective-C Settings, Objective-C Protocols, Objective-C Specifics
|
|
2331 @subsection Source Code Element Selection
|
|
2332 @cindex Objective-C
|
|
2333 One can jump from an Objective-C declaration to its definition by
|
|
2334 clicking the Action Key when within the declaration. Most importantly,
|
|
2335 once a class header file is displayed, simply click on a method
|
|
2336 declaration to see its corresponding definition. If the method is
|
|
2337 inherited from another class, a message at the bottom of the frame will
|
|
2338 describe which class the method is defined in once the browser displays
|
|
2339 the method definition.
|
|
2340
|
|
2341 Parent classes may be browsed in a similar manner by clicking on their
|
|
2342 names in an inheritance or declaration clause. It is therefore
|
|
2343 important to click on the method name part of a declaration when that is
|
|
2344 the element desired.
|
|
2345
|
|
2346 @vindex objc-include-dirs
|
|
2347 @cindex #import
|
|
2348 @cindex include files
|
|
2349 Include files may be browsed by selecting their inclusion declarations
|
|
2350 (#import ...) within a source file. Include files delimited by double
|
|
2351 quotes are searched for in the following places: first, the directory of
|
|
2352 the current source file, then the directories listed in the variable
|
|
2353 @var{objc-include-dirs}, and then in any directories included in the
|
|
2354 current environment.
|
|
2355
|
|
2356 @vindex objc-cpp-include-dirs
|
|
2357 Include files delimited by angle brackets are searched for in the
|
|
2358 following places: first, the directories listed in the variable
|
|
2359 @var{objc-include-dirs}, then the directories listed in the variable
|
|
2360 @var{objc-cpp-include-dirs}, and then in any directories included in the
|
|
2361 current environment. The variable @var{objc-cpp-include-dirs} should
|
|
2362 hold a list of the standard directories searched by your Objective-C
|
|
2363 pre-processor. Each directory entry must end with a directory
|
100
|
2364 separator. On UNIX systems, this is the `/' character.
|
0
|
2365
|
|
2366 @node Objective-C Settings, Python Specifics, Objective-C Element Selection, Objective-C Specifics
|
|
2367 @subsection Objective-C Settings
|
|
2368 @vindex objc-class-keyword
|
|
2369 @cindex class definition keywords
|
|
2370 By default, the @code{@@interface} keyword indicates a class definition to the
|
|
2371 Objective-C OO-Browser. If you prefer some other criteria, you will need to
|
|
2372 modify the definition of @var{objc-class-keyword} in @file{br-objc.el}.
|
|
2373
|
|
2374 @vindex objc-src-file-regexp
|
|
2375 @cindex file suffixes
|
|
2376 If you find that the browser is not scanning some of your Objective-C
|
|
2377 source files, you may be using file suffixes which it does not
|
|
2378 recognize. Examine the value of @var{objc-src-file-regexp} and add any
|
|
2379 special file suffixes you use to it.@refill
|
|
2380
|
|
2381
|
|
2382 @node Python Specifics, Python Module Lookup, Objective-C Settings, Languages
|
|
2383 @section Python Specifics
|
|
2384
|
100
|
2385 @cindex Python doc strings
|
|
2386 The OO-Browser supports browsing Python classes and methods.
|
|
2387 Documentation strings for classes or methods may be displayed
|
|
2388 from a listing buffer with the @{@kbd{i}@} key.
|
|
2389
|
|
2390 Python method names are preceded by the @code{"- "} string in listing
|
|
2391 buffers.
|
|
2392
|
|
2393 @cindex Python functions
|
|
2394 Global functions are grouped under the default class @code{[function]} to
|
0
|
2395 distinguish them from classes or class methods.
|
|
2396
|
100
|
2397 Nested classes are not recognized by the browser, nor are run-time
|
|
2398 modifications to classes.
|
0
|
2399
|
|
2400 @menu
|
|
2401 * Python Module Lookup:: Source Code Element Selection
|
|
2402 * Python Settings::
|
|
2403 @end menu
|
|
2404
|
|
2405 @node Python Module Lookup, Python Settings , Python Specifics, Python Specifics
|
|
2406 @subsection Python Module Lookup
|
|
2407
|
100
|
2408 The @file{br-help-ms} file summarizes mouse key operation within the
|
|
2409 browser. Use @{@kbd{H}@}, the @code{(br-help-ms)} command, to display
|
|
2410 this help when point is within a listing window.
|
|
2411
|
|
2412 @cindex Python import statement
|
|
2413 An Action Key press on a module name within a Python import statement
|
|
2414 will display the source for the module, if it is found within the
|
|
2415 current Environment.
|
0
|
2416
|
|
2417 @node Python Settings, , Python Module Lookup, Python Specifics
|
|
2418 @subsection Python Settings
|
100
|
2419
|
0
|
2420 @vindex python-import-dirs
|
100
|
2421 A press of the Action Key on an import statement, tries to display the
|
|
2422 module to be imported. First, the module is looked up within the
|
|
2423 current Environment directories. If not found, the path
|
|
2424 @file{/usr/local/lib/python} is searched. Modify
|
|
2425 the variable, @var{python-import-dirs}, to alter the set of paths
|
|
2426 searched after the Environment directories..
|
|
2427
|
0
|
2428
|
|
2429 @c ***************************
|
|
2430 @c Appendices
|
|
2431 @c ***************************
|
|
2432
|
|
2433
|
|
2434 @node Features, Commands, Languages, Top
|
|
2435 @c node-name, next, previous, up
|
|
2436 @appendix OO-Browser Features
|
|
2437
|
|
2438 @itemize @bullet
|
|
2439
|
|
2440 @item
|
100
|
2441 Support for C, C++, Common Lisp and its Object System (CLOS), Eiffel,
|
|
2442 Java, Objective-C, Python and Smalltalk class browsing is included.
|
|
2443 Additionally, support for browsing large amounts of material in Info
|
|
2444 format by node name (a popular online documentation format with cross
|
|
2445 references and hierarchical structure) is included. All languages
|
|
2446 provide class browsing via either a textual or a graphical interface.
|
0
|
2447
|
|
2448 @item
|
100
|
2449 Method and typically attribute browsing is supported for all languages
|
|
2450 except Smalltalk. CLOS supports browsing all elements defined with
|
|
2451 (def* constructs. In-source feature browsing is also supported for all
|
|
2452 of these languages. One simply selects a feature name to jump to its
|
|
2453 corresponding source. Method name overloading in C++ and inherited
|
|
2454 feature renaming in Eiffel are fully supported.
|
0
|
2455
|
|
2456 @item
|
|
2457 C code browsing is supported for C++, Objective-C and C source code.
|
100
|
2458
|
0
|
2459 @item
|
|
2460 Objective-C category and formal protocol browsing are supported.
|
|
2461
|
|
2462 @item
|
|
2463 C++ parameterized template classes and methods are supported.
|
|
2464
|
|
2465 @item
|
100
|
2466 Java abstract and native (externally defined) methods are supported.
|
|
2467
|
|
2468 @item
|
0
|
2469 Building Environments is fast compared to many other tools and browser
|
|
2470 startup once an Environment has been built is very fast. Response times
|
|
2471 on workstations are excellent; for example, in one test case, less than
|
|
2472 two real seconds were required to display a set of complex inheritance
|
|
2473 graphs involving over 400 classes.
|
|
2474
|
|
2475 @item
|
|
2476 Class inheritance networks may be displayed. Either a single
|
|
2477 inheritance level (parents or children) or the entire inheritance
|
|
2478 network (ancestors or descendants) for a set of classes may be shown.
|
|
2479
|
|
2480 @cindex multiple inheritance
|
|
2481 @item
|
|
2482 Multiple inheritance support is built-in, where applicable.
|
|
2483
|
|
2484 @item
|
|
2485 The user need not know the location of class source; the browser will display
|
|
2486 or edit a class source based solely upon its class name.
|
|
2487
|
|
2488 @item
|
|
2489 Immediate switching among languages is allowed. One can switch from Eiffel
|
|
2490 browsing to C++ browsing in an instant, if so desired. Or simply run two
|
|
2491 browsers side by side.
|
|
2492
|
|
2493 @item
|
|
2494 Class files may be added, replaced or deleted one at a time or as a
|
|
2495 group by specifying a root directory below which all class files are
|
|
2496 found, including those in subdirectories.
|
|
2497
|
|
2498 @item
|
100
|
2499 The OO-Browser uses class source code only, hence no compiler is
|
|
2500 necessary for proper browser operation. This allows one to explore
|
|
2501 class libraries without the need for additional tools.
|
0
|
2502
|
|
2503 @item
|
|
2504 Library (stable) and System (in development) classes may be maintained and
|
|
2505 listed separately or together. Any number of Libraries and Systems may be
|
|
2506 combined for listing in a single Environment. There are no fixed limits
|
|
2507 on the number of classes per Environment nor on the number of
|
|
2508 Environments that may be browsed.
|
|
2509
|
|
2510 @item
|
|
2511 The number of listing windows is limited only by the frame width and
|
|
2512 the width setting used for listing windows.
|
|
2513
|
|
2514 @item
|
|
2515 Statistics on classes and Environments may be displayed.
|
|
2516
|
|
2517 @item
|
|
2518 Language-specific class information may be shown. Presently this feature is
|
|
2519 supported only for Eiffel. A listing of class parents, attributes,
|
|
2520 routines and best guess (highly accurate) list of routine calls may be
|
100
|
2521 displayed. Outputs from the Eiffel `short' and `flat' commands may also be
|
0
|
2522 shown.
|
|
2523
|
|
2524 @item
|
|
2525 Machine-independent mouse support is included along with an extremely
|
|
2526 intuitive point and click interface. The OO-Browser is pre-configured
|
|
2527 for use with the X window system, NEXTSTEP, Sunview or Apollo's DM
|
|
2528 window system under InfoDock, Emacs V19, XEmacs, Epoch, and Emacs V18.
|
100
|
2529 Online mouse usage help is always one key away. (Don't try that level
|
|
2530 of platform independence with Java!)
|
|
2531
|
|
2532 @item
|
|
2533 X and NEXTSTEP hierarchy display browsers are included. They provide
|
|
2534 views of class inheritance structure and lexically included elements,
|
|
2535 which allows for quick random access to entire Environments. A click on
|
|
2536 a class or element name immediately jumps to it in the editor, providing
|
|
2537 rapid, visual browsing. One can pop up several graphical browsers to
|
|
2538 gain several views of classes in the same or in multiple environments.
|
|
2539 All graphical browsers can communicate with a single textual browser, so
|
|
2540 one can quickly display and edit classes from different environments
|
|
2541 (even different languages). Multiple inheritance is handled through
|
|
2542 repetition of nodes throughout the tree; repeated nodes are followed by
|
|
2543 ellipses to indicate multiple inheritance.
|
0
|
2544
|
|
2545 @item
|
|
2546 Popup and pulldown command menus are available under InfoDock, Emacs V19
|
|
2547 and XEmacs.
|
|
2548
|
|
2549 @item
|
|
2550 All browser outputs are text which may be edited as desired or saved to
|
|
2551 files.
|
|
2552
|
|
2553 @item
|
|
2554 A single key provides ASCII ordering of class names, ascending or
|
|
2555 descending, including those from inheritance trees. Classes may be
|
|
2556 easily located by matching a regular expression or string to the set of
|
|
2557 class names in an Environment, with repeated searches incrementally
|
|
2558 narrowing the selected set.
|
|
2559
|
|
2560 @item
|
|
2561 Browser functions may be used standalone within the editor without using
|
|
2562 the multi-windowed browser interface. One useful example is to point to
|
|
2563 a class name such as a parent class in the text of another class and
|
|
2564 have the parent's source appear in an editable fashion. An alternative
|
|
2565 editor and viewer may be selected to adapt the browser to personal
|
|
2566 taste.
|
|
2567
|
|
2568 @cindex CLOS
|
|
2569 @item
|
|
2570 The browser is adaptable to any class-based object-oriented language.
|
|
2571 It works best with languages that focus on static class creation such as
|
|
2572 Eiffel and C++. Those that use dynamic (runtime) class creation such as
|
|
2573 CLOS must be interfaced to the browser so that classes created at runtime
|
|
2574 are added to the browser's Environment.
|
|
2575
|
|
2576 @cindex GNU Emacs
|
|
2577 @cindex UNIX
|
|
2578 @item
|
|
2579 The OO-Browser is integrated with the powerful GNU Emacs editor; it works on
|
|
2580 any UNIX system display supported by Emacs. Most browser commands may
|
|
2581 be executed by direct selection, providing a very natural interface.
|
|
2582
|
|
2583 @cindex source code
|
|
2584 @item
|
|
2585 All source code, over 400 kilobytes, is included and is heavily documented.
|
|
2586 @end itemize
|
|
2587
|
|
2588
|
|
2589 @node Commands, Glossary, Features, Top
|
|
2590 @appendix OO-Browser Command Descriptions
|
|
2591
|
|
2592 @c Call {M-x doc} to insert documentation in table.
|
|
2593 @c Call (br-cmd-doc t) to remove documentation from table.
|
|
2594
|
|
2595 @cindex arguments
|
|
2596 @cindex formal arguments
|
|
2597 @cindex programming
|
|
2598 The following documentation is meant for programmers who want to modify
|
|
2599 the OO-Browser but is included here since some users of the OO-Browser
|
|
2600 may find it useful. All commands that are bound to keys and that are
|
|
2601 specific to the OO-Browser are listed here. Within each command
|
|
2602 description, identifiers shown in all capitals are the names of the
|
|
2603 command's formal arguments; all formal arguments are presented in the
|
|
2604 order in which they are required by the command. If a command takes
|
|
2605 optional arguments, the first optional argument is labeled
|
|
2606 @emph{optional}; all following arguments are assumed to be optional.
|
|
2607
|
|
2608 @cindex command documentation
|
|
2609 @cindex OO-Browser commands
|
|
2610 @table @code
|
|
2611
|
|
2612 @findex br-add-class-file
|
|
2613 @item br-add-class-file @{@kbd{C-c ^}@}
|
|
2614 Adds a file of classes to the current Environment. Interactively or
|
|
2615 when optional CLASS-PATH is nil, defaults to current buffer file as
|
|
2616 CLASS-PATH. If optional LIB-TABLE-P is non-nil, add to Library
|
|
2617 Environment, otherwise add to System Environment. If optional SAVE-FILE
|
|
2618 is t, the Environment is then stored to the filename given by
|
|
2619 @var{br-env-file}. If SAVE-FILE is non-nil and not t, its string value
|
|
2620 is used as the file to which to save the Environment.
|
|
2621
|
|
2622 @findex br-ancestors
|
|
2623 @item br-ancestors @{@kbd{a}@}
|
|
2624 Display ancestor tree whose root is the current class. With optional
|
|
2625 prefix ARG, display all ancestor trees whose roots are visible classes
|
|
2626 at the current level. ARG = -1 inverts current class ancestry tree.
|
|
2627 That is, it shows branches going down towards the root class, so that
|
|
2628 parents appear above children. ARG < -1 inverts all ancestry trees.
|
|
2629
|
|
2630 @findex br-at
|
|
2631 @item br-at @{@kbd{@@}@}
|
|
2632 Display current class location in the inheritance graph.
|
|
2633 The class is displayed among both its ancestors and descendants.
|
|
2634 With optional prefix ARG, display location for all visible classes at the
|
|
2635 current level.
|
|
2636
|
|
2637 @findex br-buffer-menu
|
|
2638 @item br-buffer-menu @{@kbd{b}@}
|
|
2639 Display selection list of buffers with attached files in viewer window.
|
|
2640
|
|
2641 @findex br-children
|
|
2642 @item br-children @{@kbd{c}@}
|
|
2643 Display children of current class. With optional prefix ARG, display
|
|
2644 children of all visible classes at the current level.
|
|
2645
|
|
2646 @findex br-class-stats
|
|
2647 @item br-class-stats @{@kbd{M-c}@}
|
|
2648 Display statistics summary for current class. Optional prefix arg
|
|
2649 PROMPT means prompt for class name.
|
|
2650
|
|
2651 @findex br-copyright
|
|
2652 @item br-copyright
|
|
2653 @cindex copyright
|
|
2654 Display browser copyright information in viewer window.
|
|
2655
|
|
2656 @findex br-count
|
|
2657 @item br-count @{@kbd{#}@}
|
|
2658 Count number of classes visible in current listing buffer. Print
|
|
2659 text result in minibuffer when called interactively.
|
|
2660
|
|
2661 @findex br-delete
|
|
2662 @item br-delete @{@kbd{C-c C-d}@}
|
|
2663 Delete class from current Environment. Optional prefix arg PROMPT means
|
|
2664 prompt for class name.
|
|
2665
|
|
2666 @findex br-descendants
|
|
2667 @item br-descendants @{@kbd{d}@}
|
|
2668 Display descendant tree whose root is the current class. With optional
|
|
2669 prefix ARG, display all descendant trees whose roots are visible classes
|
|
2670 at the current level.
|
|
2671
|
|
2672 @findex br-edit-entry
|
|
2673 @item br-edit-entry @{@kbd{e}@}
|
|
2674 Edits source for any browser listing entry, such as a class or a feature.
|
|
2675 Optional prefix arg PROMPT means prompt for entry name.
|
|
2676
|
|
2677 @findex br-env-create
|
|
2678 @item br-env-create @{@kbd{C-c C-c}@}
|
|
2679 Create and save the specification of a new OO-Browser Environment.
|
|
2680 Interactively prompt for the Environment file name or use optional
|
|
2681 ENV-FILE. Interactively prompt for the Environment language to use or
|
|
2682 use optional LANG-PREFIX as language indicator. Return the name of the
|
|
2683 Envir spec file created. Do not build the Environment. Use
|
100
|
2684 `br-env-build' to construct an Environment from its specification.
|
0
|
2685
|
|
2686 @findex br-env-load
|
|
2687 @item br-env-load @{@kbd{C-c C-l}@}
|
100
|
2688 Load browser Environment or spec from optional ENV-FILE or `br-env-file'.
|
0
|
2689 Non-nil PROMPT means prompt user before building tables.
|
|
2690 Non-nil NO-BUILD means skip build of Environment entirely.
|
|
2691 Return t if load is successful, else nil.
|
|
2692
|
|
2693 @findex br-env-rebuild
|
|
2694 @item br-env-rebuild @{@kbd{C-c C-e}@}
|
|
2695 Rescan System and Library sources associated with the current Environment.
|
|
2696
|
|
2697 @findex br-env-save
|
|
2698 @item br-env-save @{@kbd{C-c C-s}@}
|
|
2699 Save changed Environment to file given by optional SAVE-FILE or
|
100
|
2700 `br-env-file'.
|
0
|
2701
|
|
2702 @findex br-env-stats
|
|
2703 @item br-env-stats @{@kbd{M-e}@}
|
|
2704 Display summary for current Environment in viewer window.
|
|
2705 With optional prefix ARG, display class totals in minibuffer.
|
|
2706
|
|
2707 @findex br-exit-level
|
|
2708 @item br-exit-level @{@kbd{x}@}
|
|
2709 Return to prefix ARGth previous inheritance level listing.
|
|
2710 The command is ignored with ARG < 1.
|
|
2711
|
|
2712 @findex br-find
|
|
2713 @item br-find
|
|
2714 Interactively completes class or feature ELEMENT-NAME and jumps to its definition.
|
|
2715 Returns ELEMENT-NAME or signals an error.
|
|
2716
|
|
2717 @findex br-feature-signature
|
|
2718 @item br-feature-signature @{@kbd{F}@}
|
|
2719 Show full feature signature in the view window.
|
|
2720 With optional prefix ARG, display signatures of all features from the
|
|
2721 current buffer.
|
|
2722
|
|
2723 @findex br-help
|
|
2724 @item br-help @{@kbd{h}@}
|
|
2725 Display browser operation help information in viewer window.
|
|
2726
|
|
2727 @findex br-help-ms
|
|
2728 @item br-help-ms @{@kbd{H}@}
|
|
2729 Display browser mouse usage help information in viewer window.
|
|
2730
|
|
2731 @findex br-entry-info
|
|
2732 @item br-entry-info @{@kbd{i}@}
|
|
2733 Display attributes of the current entry in the viewer window.
|
|
2734
|
|
2735 @findex br-implementors
|
|
2736 @item br-implementors @{@kbd{I}@}
|
|
2737 Display hierarchy of classes that define current feature. Ignore
|
|
2738 inherited features. With optional prefix ARG, display implementors of
|
|
2739 all features at the current level.
|
|
2740
|
|
2741 @findex br-kill
|
|
2742 @item br-kill @{@kbd{C-c C-k}@}
|
|
2743 Kill buffer in viewer window and redisplay help text.
|
|
2744
|
|
2745 @findex br-lib-top-classes
|
|
2746 @item br-lib-top-classes @{@kbd{l}@}
|
|
2747 Display list of top level Library classes. With prefix ARG, display all
|
|
2748 Library classes.
|
|
2749
|
|
2750 @findex br-lib-rebuild
|
|
2751 @item br-lib-rebuild @{@kbd{L}@}
|
|
2752 Rescan Library components of the current Environment.
|
|
2753
|
|
2754 @findex br-match
|
|
2755 @item br-match @{@kbd{m}@}
|
|
2756 Show all class names in current Environment that contain optional EXPR.
|
|
2757 Nil value of EXPR means prompt for a value. With optional prefix ARG, EXPR
|
|
2758 is treated as a string. By default, it is treated as a regular expresion.
|
|
2759 AGAIN non-nil shows the number of classes MATCHED from the last search,
|
|
2760 allowing repeated narrowing of the search set. Empty EXPR when AGAIN is nil
|
|
2761 matches to all classes in the Environment.
|
|
2762
|
|
2763 @findex br-match-entries
|
|
2764 @item br-match-entries @{@kbd{M}@}
|
|
2765 Show all entries in current listing that contain optional EXPR.
|
|
2766 Nil value of EXPR means prompt for a value. With optional prefix ARG, EXPR
|
|
2767 is treated as a string. By default, it is treated as a regular expresion.
|
|
2768 AGAIN non-nil means show the number of entries MATCHED from last search,
|
|
2769 allowing repeated narrowing of the search set. Empty EXPR when AGAIN is nil
|
|
2770 matches to all entries in the listing.
|
|
2771
|
|
2772 @findex br-next-entry
|
|
2773 @item br-next-entry @{@kbd{C-n}@}
|
|
2774 Move point vertically down prefix ARG number of lines in listing
|
|
2775 buffer.
|
|
2776
|
|
2777 @findex br-order
|
|
2778 @item br-order @{@kbd{o}@}
|
|
2779 Order current browser listing window entries.
|
|
2780 With prefix ARG other than 1 (the default), don't remove leading space from
|
|
2781 entry lines before ordering. Negative ARG means order in descending Ascii
|
|
2782 sequence, otherwise order in ascending sequence.
|
|
2783
|
|
2784 @findex br-parents
|
|
2785 @item br-parents @{@kbd{p}@}
|
|
2786 Display parents of current class. With optional prefix ARG, display
|
|
2787 parents of all visible classes at the current level.
|
|
2788
|
|
2789 @findex br-prev-entry
|
|
2790 @item br-prev-entry @{@kbd{C-p}@}
|
|
2791 Move point vertically up prefix ARG number of lines in listing
|
|
2792 buffer.
|
|
2793
|
|
2794 @findex br-quit
|
|
2795 @item br-quit @{@kbd{q}@}
|
|
2796 Quit browser. With optional prefix ARG, delete window configurations
|
|
2797 and listing buffers associated with the browser.
|
|
2798
|
|
2799 @findex br-refresh
|
|
2800 @item br-refresh @{@kbd{C-c C-r}@}
|
|
2801 Restore OO-Browser to its state upon startup.
|
|
2802
|
|
2803 @findex br-resize-narrow
|
|
2804 @item br-resize-narrow @{@kbd{C-x -}@}
|
|
2805 Resize listing windows so are narrower by 10 characters.
|
|
2806
|
|
2807 @findex br-resize-widen
|
|
2808 @item br-resize-widen @{@kbd{C-x +}@}
|
|
2809 Resize listing windows so are wider by 10 characters.
|
|
2810
|
|
2811 @findex br-features
|
|
2812 @vindex br-inherited-features-flag
|
|
2813 @item br-features @{@kbd{f}@}
|
|
2814 Display features/elements of the current class (prefix ARG = 1) or of
|
|
2815 the current listing if ARG is other than 0 or 1.
|
|
2816
|
|
2817 With ARG = 0, the value of the variable, @var{br-inherited-features-flag},
|
|
2818 is toggled and no other action is taken.
|
|
2819
|
|
2820 If @var{br-inherited-features-flag} is @code{t}, all features of each
|
|
2821 class are shown. If @code{nil}, only lexically included features are
|
|
2822 shown and if the features of a single class are requested and none are
|
|
2823 defined, the class definition is displayed so that its feature
|
|
2824 declarations may be browsed.
|
|
2825
|
|
2826 @findex br-sys-rebuild
|
|
2827 @item br-sys-rebuild @{@kbd{S}@}
|
|
2828 Rescan System components of the current Environment.
|
|
2829
|
|
2830 @findex br-sys-top-classes
|
|
2831 @item br-sys-top-classes @{@kbd{s}@}
|
|
2832 Display list of top level System classes.
|
|
2833 With prefix ARG, display all System classes.
|
|
2834
|
|
2835 @findex br-to-from-viewer
|
|
2836 @item br-to-from-viewer @{@kbd{C-c C-v}@}
|
|
2837 Move point to viewer window or back to last recorded listing
|
|
2838 window.
|
|
2839
|
|
2840 @findex br-toggle-keep-viewed
|
|
2841 @vindex br-keep-viewed-classes
|
|
2842 @item br-toggle-keep-viewed
|
|
2843 Toggle the value of the @var{br-keep-viewed-classes} flag.
|
|
2844
|
|
2845 @findex br-top-classes
|
|
2846 @item br-top-classes @{@kbd{t}@}
|
|
2847 Display list of top level classes.
|
|
2848 With prefix ARG, display all Environment classes.
|
|
2849
|
|
2850 @findex br-unique
|
|
2851 @item br-unique @{@kbd{u}@}
|
|
2852 Eliminate adjacent duplicate entry names from the current listing window.
|
|
2853 If two adjacent entries look the same one is eliminated, even if they refer
|
|
2854 to different class elements.
|
|
2855
|
|
2856 @findex br-version
|
|
2857 @item br-version @{@kbd{C-c #}@}
|
|
2858 Display browser version number.
|
|
2859
|
|
2860 @findex br-view-entry
|
|
2861 @item br-view-entry @{@kbd{v}@}
|
|
2862 Displays source for any browser listing entry.
|
|
2863 Optional prefix arg PROMPT means prompt for entry name.
|
|
2864
|
|
2865 @findex br-view-friend
|
|
2866 @item br-view-friend @{@kbd{V}@}
|
|
2867 With point on a friend listing entry, view its source code definition.
|
|
2868 With optional OTHER-WIN non-nil, display in another window.
|
|
2869 With optional SIG-AT-POINT-FLAG non-nil, assume point is within a friend
|
|
2870 signature in a source buffer.
|
|
2871
|
|
2872 @findex br-view-full-frame
|
|
2873 @item br-view-full-frame @{@kbd{1}@}
|
|
2874 Use full frame to display contents of viewer window.
|
|
2875
|
|
2876 @findex br-viewer-scroll-down
|
|
2877 @item br-viewer-scroll-down @{@kbd{DEL}@}
|
|
2878 Scroll viewer window downward ARG lines or a windowful if no ARG.
|
|
2879
|
|
2880 @findex br-viewer-scroll-up
|
|
2881 @item br-viewer-scroll-up @{@kbd{SPC}@}
|
|
2882 Scroll viewer window upward ARG lines or a windowful if no ARG.
|
|
2883
|
|
2884 @findex br-where
|
|
2885 @item br-where @{@kbd{w}@}
|
|
2886 Display in minibuffer and return full path of a browser listing entry.
|
|
2887 Optional prefix arg PROMPT means prompt for entry name."
|
|
2888
|
|
2889 @findex br-write-buffer
|
|
2890 @item br-write-buffer @{@kbd{C-c C-w}@}
|
|
2891 Write narrowed portion of current browser buffer to a file.
|
|
2892
|
|
2893 @findex br-tree
|
|
2894 @item br-tree @{@kbd{M-d}@}
|
|
2895 Start the @file{xbr} application with descendency tree of current class.
|
|
2896 With optional prefix ARG, a descendency tree for each class in current
|
|
2897 buffer.
|
|
2898
|
|
2899 @findex br-tree-graph
|
|
2900 @item br-tree-graph @{@kbd{M-g}@}
|
|
2901 Start the appropriate tree application with the tree from current
|
|
2902 listing buffer.
|
|
2903
|
|
2904 @findex br-tree-kill
|
|
2905 @item br-tree-kill @{@kbd{M-k}@}
|
|
2906 Prompt user whether to kill all @file{xbr} sub-processes.
|
|
2907
|
|
2908 @findex br-tree-features-toggle
|
|
2909 @item br-tree-features-toggle @{@kbd{M-f}@}
|
|
2910 Toggle between showing features and hiding them when @code{br-tree} is
|
|
2911 invoked to display descendants graphically.
|
|
2912
|
|
2913 @end table
|
|
2914
|
|
2915
|
|
2916 @c ***************************
|
|
2917 @c Unnumbered Chapters
|
|
2918 @c ***************************
|
|
2919
|
|
2920 @node Glossary, References, Commands, Top
|
|
2921 @unnumbered Glossary
|
|
2922
|
|
2923 Concepts pertinent to operational usage of the OO-Browser are defined here.
|
|
2924
|
|
2925 If some GNU Emacs terms are unfamiliar to you, see @cite{[Stallman 87]}.
|
|
2926
|
|
2927 @table @code
|
|
2928 @item Ancestors
|
|
2929 All classes above a class in the inheritance hierarchy.@refill
|
|
2930
|
|
2931 @item Category
|
|
2932 Under most languages, a logical grouping of related classes. The
|
|
2933 OO-Browser does not yet have any support for this kind of category.
|
|
2934
|
|
2935 Under Objective-C, a partial class definition that implements a related
|
|
2936 set of methods. The full class definitions is formed from the
|
|
2937 conjunction of all of the class' categories. The OO-Browser supports
|
|
2938 Objective-C category browsing.@refill
|
|
2939
|
|
2940 @item Children
|
|
2941 First level of classes below a class in the inheritance hierarchy. Those
|
|
2942 that directly inherit from a class.@refill
|
|
2943
|
|
2944 @item Class
|
|
2945 A category from which object instances are created. The OO-Browser
|
|
2946 can display classes along with their elements, categories and formal
|
|
2947 protocols.
|
|
2948
|
|
2949 @item Class at Point
|
|
2950 Class name in a listing buffer whose name appears on the same line as
|
|
2951 point.@refill
|
|
2952
|
|
2953 @item Declaration
|
|
2954 A specification of a programatic entity, for reference by other parts of
|
|
2955 a program. See also @code{Definition}. The declaration of a method
|
|
2956 specifies its signature but not its body.@refill
|
|
2957
|
|
2958 @item Default Class
|
|
2959 A class that the OO-Browser creates to simplify browsing a particular
|
|
2960 category of objects such as class protocols or global functions.
|
|
2961 Default class names begin and end with square bracket delimiters, as in
|
|
2962 @code{[protocol]}.@refill
|
|
2963
|
|
2964 @item Definition
|
|
2965 Programmatic definition of an entity, e.g@. defining the body of a
|
|
2966 method.
|
|
2967
|
|
2968 @item Completion
|
|
2969 The act of filling in the non-ambiguous part of a requested item, such
|
|
2970 as a class name or a file name.@refill
|
|
2971
|
|
2972 @item Decendants
|
|
2973 All classes below a class in the inheritance hierarchy.@refill
|
|
2974
|
|
2975 @item Element
|
|
2976 A feature or an instance of a class.
|
|
2977
|
|
2978 @item Environment
|
|
2979 A series of browser lookup tables and control variables that specify the set
|
|
2980 of classes and inter-class relationships with which the browser works.@refill
|
|
2981
|
|
2982 @item Environment File
|
|
2983 A file used to store browser Environments.@refill
|
|
2984
|
|
2985 @item Environment Specification
|
|
2986 Unambiguously tells the browser what to include in the construction of
|
|
2987 an Environment.@refill
|
|
2988
|
|
2989 @item Feature
|
100
|
2990 An method, attribute, or other component of a class. Features may be
|
|
2991 public or private and in some languages, non-inheritable.
|
0
|
2992
|
|
2993 @item Formal Protocol
|
|
2994 See @code{Protocol}.@refill
|
|
2995
|
|
2996 @item Implementor
|
|
2997 A class in which a particular element is defined. This does not include
|
|
2998 classes which inherit an element.
|
|
2999
|
|
3000 @item Initialization File
|
|
3001 See @code{Personal Initialization File}.@refill
|
|
3002
|
|
3003 @item Instance
|
|
3004 An object which has a particular class as its type. The class serves as
|
|
3005 a template for instance creation.
|
|
3006
|
|
3007 @item Library Classes
|
|
3008 Stable, seldomly changed classes that have been released for general
|
|
3009 usage.@refill
|
|
3010
|
|
3011 @item Listing Window
|
|
3012 One of a number of browser windows used to display lists of classes.
|
|
3013 Inheritance relations are shown by class name indentation and by the class
|
|
3014 level numbers in the listing buffer mode lines.@refill
|
|
3015
|
|
3016 @item Lookup Table
|
|
3017 A store used to help the browser quickly determine inter-class
|
|
3018 relationships.@refill
|
|
3019
|
|
3020 @item Member
|
|
3021 See @code{Feature}.
|
|
3022
|
|
3023 @item Method
|
|
3024 A callable function defined within one or more classes.
|
|
3025
|
|
3026 @item Minibuffer Window
|
|
3027 The single line window at the bottom of an Emacs frame. It is used to
|
|
3028 interact with the user by displaying messages and prompting for
|
|
3029 input.@refill
|
|
3030
|
|
3031 @item Parents
|
|
3032 First level of classes above a class in the inheritance hierarchy. Those
|
|
3033 from which a class directly inherits.@refill
|
|
3034
|
|
3035 @vindex file, .br-init.el
|
|
3036 @item Personal Initialization File
|
|
3037 The optional file, @file{~/.br-init.el}, which sets user-specific
|
|
3038 options affecting operation of the OO-Browser, thereby configuring the
|
|
3039 browser for personal use.@refill
|
|
3040
|
|
3041 @item Point
|
|
3042 The point in the current buffer in front of the character which the Emacs
|
|
3043 cursor is over but after any prior character.@refill
|
|
3044
|
|
3045 @item Protocol
|
|
3046 An interface specification to which a class conforms. Some languages
|
|
3047 use abstract classes for this purpose. Under Objective-C, one may also
|
|
3048 define formal protocols which include a set of method signatures which a
|
|
3049 class must implement if it conforms to the protocol. Also under
|
|
3050 Objective-C, one protocol may inherit from a list of other protocols,
|
|
3051 and thus expand the set of methods which a conforming class must
|
|
3052 implement.
|
|
3053
|
|
3054 @item Routine
|
|
3055 See @code{Method}.
|
|
3056
|
|
3057 @item Signature
|
|
3058 An interface specification for a method. It includes the method's
|
|
3059 class, type of return value and the types of its formal parameters.
|
|
3060
|
|
3061 @item Smart System
|
|
3062 The Smart System is another handy program that helps you to work smarter
|
|
3063 and faster. It consists of two parts, the Smart Key System, a direct
|
|
3064 manipulation keyboard interface that gives you control of most GNU Emacs
|
|
3065 subsystems by using only two keys, and the Smart Menu System. This
|
|
3066 provides a hierarchy of menus within Emacs that you use instead of
|
|
3067 keyboard commands. Just point and click on a menu entry. One of its
|
|
3068 uses is to invoke the OO-Browser on any desired language Environment.
|
|
3069 (The Smart Key System is included with the Smart Menu System.)@refill
|
|
3070
|
|
3071 @item Smart Menu System
|
|
3072 See @code{Smart System}.
|
|
3073
|
|
3074 @item System Classes
|
|
3075 Classes still in development whose interfaces are likely to change.
|
|
3076 They are typically part of a specific project and are often not meant to
|
|
3077 be reused elsewhere.@refill
|
|
3078
|
|
3079 @item Top-Level Classes
|
|
3080 Classes without parents. Those at the top of the inheritance tree for a
|
|
3081 given Environment.@refill
|
|
3082
|
|
3083 @item Viewer Window
|
|
3084 The largest, bottom-most window in the browser used for displaying class
|
|
3085 source and help information.@refill
|
|
3086 @end table
|
|
3087
|
|
3088
|
|
3089 @node References, Keys, Glossary, Top
|
|
3090 @unnumbered References
|
|
3091
|
|
3092 @table @b
|
|
3093 @item [Meyer 88]
|
|
3094 Meyer, Bertrand. Object-oriented Software Construction. Prentice Hall
|
|
3095 International: UK, 1988.
|
|
3096
|
|
3097 @item [Meyer 89]
|
|
3098 Meyer, Bertrand. Eiffel: The Language. Interactive Software
|
|
3099 Engineering: Santa Barbara, CA, 1989. (Also being republished by
|
|
3100 Prentice Hall.)
|
|
3101
|
|
3102 @item [Goldberg 83]
|
|
3103 Goldberg, Adele and David Robson. @emph{Smalltalk-80: The Language and
|
|
3104 its Implementation}. Addison-Wesley, 1983.@refill
|
|
3105
|
|
3106 @item [Stallman 87]
|
|
3107 Stallman, Richard. @emph{GNU Emacs Manual}. Free Software Foundation,
|
|
3108 Cambridge: MA, March 1987.@refill
|
|
3109
|
|
3110 @item [Java 95]
|
|
3111 @emph{The Java Language Specification}. Sun Microsystems Computer
|
|
3112 Corporation, Mountain View, CA, February 1, 1995.@refill
|
|
3113 @end table
|
|
3114
|
|
3115
|
|
3116 @c ***************************
|
|
3117 @c Indices
|
|
3118 @c ***************************
|
|
3119
|
|
3120 @node Keys, Command Index, References, Top
|
|
3121 @unnumbered Key Binding Index
|
|
3122
|
|
3123 @printindex ky
|
|
3124
|
|
3125 @node Command Index, Concepts, Keys, Top
|
|
3126 @unnumbered Command and Variable Index
|
|
3127
|
|
3128 @printindex fn
|
|
3129
|
|
3130 @node Concepts, , Command Index, Top
|
|
3131 @unnumbered Concept Index
|
|
3132
|
|
3133 @printindex cp
|
|
3134
|
|
3135 @page
|
|
3136 @page
|
|
3137 @summarycontents
|
|
3138 @contents
|
|
3139 @bye
|
|
3140
|
|
3141 @c Locl Variables: ;;;
|
|
3142 @c eval: (progn (load "cmd-doc") (defun doc () (interactive) (br-cmd-doc) (save-buffer))) ;;;
|
|
3143 @c End: ;;;
|