28867
|
1 \input texinfo @c -*-texinfo-*-
|
|
2
|
|
3 @comment %**start of header
|
|
4 @setfilename ../info/ebrowse
|
|
5 @settitle A Class Browser for C++
|
|
6 @setchapternewpage odd
|
29107
|
7 @syncodeindex fn cp
|
28867
|
8 @comment %**end of header
|
|
9
|
|
10 @ifinfo
|
|
11 @direntry
|
|
12 * Ebrowse:: A C++ class browser for Emacs.
|
|
13 @end direntry
|
|
14
|
|
15 This file documents Ebrowse, a C++ class browser for GNU Emacs.
|
|
16
|
|
17 Copyright @copyright{} 1992--1999, 2000 Free Software Foundation, Inc.
|
|
18
|
|
19 Permission is granted to make and distribute verbatim copies of
|
|
20 this manual provided the copyright notice and this permission notice
|
|
21 are preserved on all copies.
|
|
22
|
|
23 @ignore
|
29107
|
24 Permission is granted to process this file through TeX and print the
|
28867
|
25 results, provided the printed document carries copying permission
|
|
26 notice identical to this one except for the removal of this paragraph
|
|
27 (this paragraph not being relevant to the printed manual).
|
|
28
|
|
29 @end ignore
|
|
30 Permission is granted to copy and distribute modified versions of this
|
|
31 manual under the conditions for verbatim copying, provided also that the
|
|
32 sections entitled ``The GNU Manifesto'', ``Distribution'' and ``GNU
|
|
33 General Public License'' are included exactly as in the original, and
|
|
34 provided that the entire resulting derived work is distributed under the
|
|
35 terms of a permission notice identical to this one.
|
|
36
|
|
37 Permission is granted to copy and distribute translations of this manual
|
|
38 into another language, under the above conditions for modified versions,
|
|
39 except that the sections entitled ``The GNU Manifesto'',
|
|
40 ``Distribution'' and ``GNU General Public License'' may be included in a
|
|
41 translation approved by the Free Software Foundation instead of in the
|
|
42 original English.
|
|
43 @end ifinfo
|
|
44
|
29107
|
45 @iftex
|
28867
|
46 @titlepage
|
29107
|
47 @title Ebrowse User's Manual
|
|
48 @sp 4
|
|
49 @subtitle Ebrowse/Emacs 21
|
|
50 @sp 1
|
|
51 @subtitle May 2000
|
|
52 @sp 5
|
|
53 @author Gerd Moellmann
|
|
54 @page
|
28867
|
55
|
29107
|
56 @vskip 0pt plus 1filll
|
|
57 @noindent
|
|
58 Copyright @copyright{} 2000 Free Software Foundation, Inc.
|
28867
|
59
|
29107
|
60 Permission is granted to make and distribute verbatim copies of
|
|
61 this manual provided the copyright notice and this permission notice
|
|
62 are preserved on all copies.
|
28867
|
63 @end titlepage
|
29107
|
64 @page
|
|
65 @end iftex
|
28867
|
66
|
|
67 @node Top, Overview, (dir), (dir)
|
|
68
|
29107
|
69 @ifnottex
|
28867
|
70 You can browse C++ class hierarchies from within Emacs by using
|
|
71 Ebrowse.
|
29107
|
72 @end ifnottex
|
28867
|
73
|
|
74 @menu
|
|
75 * Overview:: What is it and now does it work?
|
|
76 * Generating browser files:: How to process C++ source files
|
|
77 * Loading a Tree:: How to start browsing
|
|
78 * Tree Buffers:: Traversing class hierarchies
|
|
79 * Member Buffers:: Looking at member information
|
|
80 * Tags-like Functions:: Finding members from source files
|
|
81 * Concept Index:: An entry for each concept defined
|
|
82 @end menu
|
|
83
|
|
84
|
|
85
|
|
86
|
|
87 @node Overview, Generating browser files, Top, Top
|
|
88 @chapter Introduction
|
|
89
|
|
90 When working in software projects using C++, I frequently missed
|
|
91 software support for two things:
|
|
92
|
|
93 @itemize @bullet
|
|
94 @item
|
|
95 When you get a new class library, or you have to work on source code you
|
|
96 haven't written yourself (or written sufficiently long ago), you need a
|
|
97 tool letting you navigate through class hierarchies and investigate
|
|
98 features of the software. Without such a tool you often end up grep'ing
|
|
99 through dozens or even hundreds of files.
|
|
100
|
|
101 @item
|
|
102 Once you are productive, it would be nice to have a tool that knows your
|
|
103 sources and can help you while you are editing source code. Imagine to
|
|
104 be able to jump to the definition of an identifier while you are
|
|
105 editing, or something that can complete long identifier names because it
|
|
106 knows what identifiers are defined in your program@dots{}.
|
|
107 @end itemize
|
|
108
|
|
109 The design of Ebrowse reflects these two needs.
|
|
110
|
|
111 How does it work?
|
|
112
|
29107
|
113 @cindex parser for C++ sources
|
28867
|
114 A fast parser written in C is used to process C++ source files.
|
|
115 The parser generates a data base containing information about classes,
|
|
116 members, global functions, defines, types etc. found in the sources.
|
|
117
|
|
118 The second part of Ebrowse is a Lisp program. This program reads
|
|
119 the data base generated by the parser. It displays its contents in
|
|
120 various forms and allows you to perform operations on it, or do
|
|
121 something with the help of the knowledge contained in the data base.
|
|
122
|
29107
|
123 @cindex major modes, of Ebrowse buffers
|
28867
|
124 @dfn{Navigational} use of Ebrowse is centered around two
|
|
125 types of buffers which define their own major modes:
|
|
126
|
29107
|
127 @cindex tree buffer
|
28867
|
128 @dfn{Tree buffers} are used to view class hierarchies in tree form.
|
|
129 They allow you to quickly find classes, find or view class declarations,
|
|
130 perform operations like query replace on sets of your source files, and
|
|
131 finally tree buffers are used to produce the second buffer form---member
|
29107
|
132 buffers. @xref{Tree Buffers}.
|
28867
|
133
|
29107
|
134 @cindex member buffer
|
28867
|
135 Members are displayed in @dfn{member buffers}. Ebrowse
|
|
136 distinguishes between six different types of members; each type is
|
|
137 displayed as a member list of its own:
|
|
138
|
|
139 @itemize @bullet
|
|
140 @item
|
|
141 Instance member variables,
|
|
142
|
|
143 @item
|
|
144 Instance member functions,
|
|
145
|
|
146 @item
|
|
147 Static member variables,
|
|
148
|
|
149 @item
|
|
150 Static member functions,
|
|
151
|
|
152 @item
|
|
153 Friends/Defines, The list of defines is contained in the friends
|
|
154 list of the pseudo-class @samp{*Globals*}.
|
|
155
|
|
156 @item
|
|
157 Types (@code{enum}s, and @code{typedef}s defined with class
|
|
158 scope).@refill
|
|
159 @end itemize
|
|
160
|
|
161 You can switch member buffers from one list to another, or to another
|
|
162 class. You can include inherited members in the display, you can set
|
|
163 filters that remove categories of members from the display, and most
|
|
164 importantly you can find or view member declarations and definitions
|
29107
|
165 with a keystroke. @xref{Member Buffers}.
|
28867
|
166
|
|
167 These two buffer types and the commands they provide support the
|
|
168 navigational use of the browser. The second form resembles Emacs' Tags
|
|
169 package for C and other procedural languages. Ebrowse's commands of
|
|
170 this type are not confined to special buffers; they are most often used
|
|
171 while you are editing your source code.
|
|
172
|
|
173 To list just a subset of what you can use the Tags part of Ebrowse for:
|
|
174
|
|
175 @itemize @bullet
|
|
176 @item
|
|
177 Jump to the definition or declaration of an identifier in your source
|
29107
|
178 code, with an electric position stack that lets you easily navigate
|
28867
|
179 back and forth.
|
|
180
|
|
181 @item
|
|
182 Complete identifiers in your source with a completion list containing
|
|
183 identifiers from your source code only.
|
|
184
|
|
185 @item
|
|
186 Perform search and query replace operations over some or all of your
|
|
187 source files.
|
|
188
|
|
189 @item
|
|
190 Show all identifiers matching a regular expression---and jump to one of
|
|
191 them, if you like.
|
|
192 @end itemize
|
|
193
|
|
194
|
|
195
|
|
196
|
|
197 @node Generating browser files, Loading a Tree, Overview, Top
|
|
198 @comment node-name, next, previous, up
|
|
199 @chapter Processing Source Files
|
|
200
|
29107
|
201 @cindex @command{ebrowse}, the program
|
|
202 @cindex class data base creation
|
28867
|
203 Before you can start browsing a class hierarchy, you must run the parser
|
29107
|
204 @command{ebrowse} on your source files in order to generate a Lisp data
|
28867
|
205 base describing your program.
|
|
206
|
29107
|
207 @cindex command line for @command{ebrowse}
|
|
208 The operation of @command{ebrowse} can be tailored with command line
|
28867
|
209 options. Under normal circumstances it suffices to let the parser use
|
|
210 its default settings. If you want to do that, call it with a command
|
|
211 line like:
|
|
212
|
|
213 @example
|
|
214 ebrowse *.h *.cc
|
|
215 @end example
|
|
216
|
|
217 @noindent
|
29107
|
218 or, if your shell doesn't allow all the file names to be specified on
|
28867
|
219 the command line,
|
|
220
|
|
221 @example
|
|
222 ebrowse --files=@var{file}
|
|
223 @end example
|
|
224
|
|
225 @noindent
|
|
226 where @var{file} contains the names of the files to be parsed, one
|
|
227 per line.
|
|
228
|
29107
|
229 @findex --help
|
|
230 When invoked with option @samp{--help}, @command{ebrowse} prints a list of
|
28867
|
231 available command line options.@refill
|
|
232
|
|
233 @menu
|
|
234 * Input files:: Specifying which files to parse
|
|
235 * Output file:: Changing the output file name
|
|
236 * Structs and unions:: Omitting @code{struct}s and @code{union}s
|
|
237 * Matching:: Setting regular expression lengths
|
|
238 * Verbosity:: Getting feedback for lengthy operations
|
|
239 @end menu
|
|
240
|
|
241
|
|
242
|
|
243
|
|
244 @comment name, next, prev, up
|
|
245 @node Input files, Output file, Generating browser files, Generating browser files
|
|
246 @section Specifying Input Files
|
|
247
|
|
248 @table @samp
|
29107
|
249 @cindex input files, for @command{ebrowse}
|
28867
|
250 @item file
|
29107
|
251 Each file name on the command line tells @command{ebrowse} to parse
|
28867
|
252 that file.
|
|
253
|
29107
|
254 @cindex response files
|
|
255 @findex --files
|
28867
|
256 @item --files=@var{file}
|
|
257 This command line switch specifies that @var{file} contains a list of
|
|
258 file names to parse. Each line in @var{file} must contain one file
|
|
259 name. More than one option of this kind is allowed. You might, for
|
|
260 instance, want to use one file for header files, and another for source
|
|
261 files.
|
|
262
|
29107
|
263 @cindex standard input, specifying input files
|
28867
|
264 @item standard input
|
29107
|
265 When @command{ebrowse} finds no file names on the command line, and no
|
28867
|
266 @samp{--file} option is specified, it reads file names from standard
|
29107
|
267 input. This is sometimes convenient when @command{ebrowse} is used as part
|
28867
|
268 of a command pipe.
|
|
269
|
29107
|
270 @findex --search-path
|
28867
|
271 @item --search-path=@var{paths}
|
|
272 This option let's you specify search paths for your input files.
|
|
273 @var{paths} is a list of directory names, separated from each other by a
|
|
274 either a colon or a semicolon, depending on the operating system.
|
|
275 @end table
|
|
276
|
29107
|
277 @cindex header files
|
|
278 @cindex friend functions
|
28867
|
279 It is generally a good idea to specify input files so that header files
|
|
280 are parsed before source files. This facilitates the parser's work of
|
|
281 properly identifying friend functions of a class.
|
|
282
|
|
283
|
|
284
|
|
285 @comment name, next, prev, up
|
|
286 @node Output file, Structs and unions, Input files, Generating browser files
|
|
287 @section Changing the Output File Name
|
|
288
|
|
289 @table @samp
|
29107
|
290 @cindex output file name
|
|
291 @findex --output-file
|
|
292 @cindex @file{BROWSE} file
|
28867
|
293 @item --output-file=@var{file}
|
29107
|
294 This option instructs @command{ebrowse} to generate a Lisp data base with
|
28867
|
295 name @var{file}. By default, the data base is named @file{BROWSE}, and
|
29107
|
296 is written in the directory in which @command{ebrowse} is invoked.
|
28867
|
297
|
|
298 If you regularly use data base names different from the default, you
|
29107
|
299 might want to add this to your init file:
|
28867
|
300
|
|
301 @lisp
|
|
302 (add-to-list 'auto-mode-alist '(@var{NAME} . ebrowse-tree-mode))
|
|
303 @end lisp
|
|
304
|
|
305 @noindent
|
|
306 where @var{NAME} is the Lisp data base name you are using.
|
|
307
|
29107
|
308 @findex --append
|
|
309 @cindex appending output to class data base
|
28867
|
310 @item --append
|
29107
|
311 By default, each run of @command{ebrowse} erases the old contents of the
|
|
312 output file when writing to it. You can instruct @command{ebrowse} to
|
28867
|
313 append its output to an existing file with this command line option.
|
|
314 @end table
|
|
315
|
|
316
|
|
317
|
|
318
|
|
319 @comment name, next, prev, up
|
|
320 @node Structs and unions, Matching, Output file, Generating browser files
|
|
321 @section Structs and Unions
|
|
322 @cindex structs
|
|
323 @cindex unions
|
|
324
|
|
325 @table @samp
|
29107
|
326 @findex --no-structs-or-unions
|
28867
|
327 @item --no-structs-or-unions
|
|
328 This switch suppresses all classes in the data base declared as
|
|
329 @code{struct} or @code{union} in the output.
|
|
330
|
|
331 This is mainly thought for the case that you are converting an existing
|
|
332 C program to C++, and do not want to see the old C structs in a class
|
|
333 tree.
|
|
334 @end table
|
|
335
|
|
336
|
|
337
|
|
338
|
|
339 @comment name, next, prev, up
|
|
340 @node Matching, Verbosity, Structs and unions, Generating browser files
|
|
341 @section Regular Expressions
|
|
342
|
29107
|
343 @cindex regular expressions, recording
|
|
344 The parser @command{ebrowse} normally writes regular expressions to its
|
|
345 output file that help the Lisp part of Ebrowse to find functions,
|
|
346 variables etc. in their source files.
|
28867
|
347
|
29107
|
348 You can instruct @command{ebrowse} to omit these regular expressions by
|
|
349 calling it with the command line switch @samp{--no-regexps}.
|
28867
|
350
|
|
351 When you do this, the Lisp part of Ebrowse tries to guess, from member
|
|
352 or class names, suitable regular expressions to locate that class or
|
|
353 member in source files. This works fine in most cases, but the
|
|
354 automatic generation of regular expressions can be too weak if unusual
|
|
355 coding styles are used.
|
|
356
|
|
357 @table @samp
|
29107
|
358 @findex --no-regexps
|
28867
|
359 @item --no-regexps
|
|
360 This option turns regular expression recording off.
|
|
361
|
29107
|
362 @findex --min-regexp-length
|
|
363 @cindex minimum regexp length for recording
|
28867
|
364 @item --min-regexp-length=@var{n}
|
|
365 The number @var{n} following this option specifies the minimum length of
|
|
366 the regular expressions recorded to match class and member declarations
|
|
367 and definitions. The default value is set at compilation time of
|
29107
|
368 @command{ebrowse}.
|
28867
|
369
|
|
370 The smaller the minimum length the higher the probability that
|
|
371 Ebrowse will find a wrong match. The larger the value, the
|
|
372 larger the output file and therefore the memory consumption once the
|
|
373 file is read from Emacs.
|
|
374
|
29107
|
375 @findex --max-regexp-length
|
|
376 @cindex maximum regexp length for recording
|
28867
|
377 @item --max-regexp-length=@var{n}
|
|
378 The number following this option specifies the maximum length of the
|
|
379 regular expressions used to match class and member declarations and
|
|
380 definitions. The default value is set at compilation time of
|
29107
|
381 @command{ebrowse}.
|
28867
|
382
|
|
383 The larger the maximum length the higher the probability that the
|
|
384 browser will find a correct match, but the larger the value the larger
|
|
385 the output file and therefore the memory consumption once the data is
|
|
386 read. As a second effect, the larger the regular expression the higher
|
|
387 the probability that it will no longer match after editing the file.
|
|
388 @end table
|
|
389
|
|
390
|
|
391
|
|
392
|
|
393 @node Verbosity, , Matching, Generating browser files
|
|
394 @comment node-name, next, previous, up
|
|
395 @section Verbose Mode
|
29107
|
396 @cindex verbose operation
|
28867
|
397
|
|
398 @table @samp
|
29107
|
399 @findex --verbose
|
28867
|
400 @item --verbose
|
29107
|
401 When this option is specified on the command line, @command{ebrowse} prints
|
28867
|
402 a period for each file parsed, and it displays a @samp{+} for each
|
|
403 class written to the output file.
|
|
404
|
29107
|
405 @findex --very-verbose
|
28867
|
406 @item --very-verbose
|
29107
|
407 This option makes @command{ebrowse} print out the names of the files and
|
28867
|
408 the names of the classes seen.
|
|
409 @end table
|
|
410
|
|
411
|
|
412
|
|
413
|
|
414 @node Loading a Tree, Tree Buffers, Generating browser files, Top
|
|
415 @comment node-name, next, previous, up
|
|
416 @chapter Starting to Browse
|
|
417 @cindex loading
|
|
418 @cindex browsing
|
|
419
|
29107
|
420 You start browsing a class hierarchy parsed by @command{ebrowse} by just
|
28867
|
421 finding the @file{BROWSE} file with @kbd{C-x C-f}.
|
|
422
|
|
423 An example of a tree buffer display is shown below.
|
|
424
|
|
425 @example
|
|
426 | Collection
|
|
427 | IndexedCollection
|
|
428 | Array
|
|
429 | FixedArray
|
|
430 | Set
|
|
431 | Dictionary
|
|
432 @end example
|
|
433
|
29107
|
434 @cindex mouse highlight in tree buffers
|
|
435 When you run Emacs on a display which supports colors and the mouse, you
|
|
436 will notice that that certain areas in the tree buffer are highlighted
|
|
437 when you move the mouse over them. This highlight marks mouse-sensitive
|
|
438 regions in the buffer. Please notice the help strings in the echo area
|
|
439 when the mouse moves over a sensitive region.
|
28867
|
440
|
29107
|
441 @cindex context menu
|
28867
|
442 A click with @kbd{mouse-3} on a mouse-sensitive region opens a context
|
|
443 menu. In addition to this, each buffer also has a buffer-specific menu
|
|
444 that is opened with a click with @kbd{mouse-3} somewhere in the buffer
|
|
445 where no highlight is displayed.
|
|
446
|
|
447
|
|
448
|
|
449 @comment ****************************************************************
|
|
450 @comment ***
|
|
451 @comment *** TREE BUFFERS
|
|
452 @comment ***
|
|
453 @comment ****************************************************************
|
|
454
|
|
455 @node Tree Buffers, Member Buffers, Loading a Tree, Top
|
|
456 @comment node-name, next, previous, up
|
|
457 @chapter Tree Buffers
|
|
458 @cindex tree buffer mode
|
|
459 @cindex class trees
|
|
460
|
|
461 Class trees are displayed in @dfn{tree buffers} which install their own
|
|
462 major mode. Most Emacs keys work in tree buffers in the usual way,
|
|
463 e.g., you can move around in the buffer with the usual @kbd{C-f},
|
|
464 @kbd{C-v} etc., or you can search with @kbd{C-s}.
|
|
465
|
|
466 Tree-specific commands are bound to simple keystrokes, similar to
|
|
467 @code{Gnus}. You can take a look at the key bindings by entering
|
|
468 @kbd{?} which calls @code{M-x describe-mode} in both tree and member
|
|
469 buffers.
|
|
470
|
|
471 @menu
|
|
472 * Source Display:: Viewing and finding a class declaration
|
|
473 * Member Display:: Showing members, switching to member buffers
|
|
474 * Go to Class:: Finding a class
|
|
475 * Quitting:: Discarding and burying the tree buffer
|
|
476 * File Name Display:: Showing file names in the tree
|
|
477 * Expanding and Collapsing:: Expanding and collapsing branches
|
|
478 * Tree Indentation:: Changing the tree indentation
|
|
479 * Killing Classes:: Removing class from the tree
|
|
480 * Saving a Tree:: Saving a modified tree
|
|
481 * Statistics:: Displaying class tree statistics
|
|
482 * Marking Classes:: Marking and unmarking classes
|
|
483 @end menu
|
|
484
|
|
485
|
|
486
|
|
487 @node Source Display, Member Display, Tree Buffers, Tree Buffers
|
|
488 @comment node-name, next, previous, up
|
|
489 @section Viewing and Finding Class Declarations
|
|
490 @cindex viewing, class
|
29107
|
491 @cindex finding a class
|
28867
|
492 @cindex class declaration
|
|
493
|
|
494 You can view or find a class declaration when the cursor is on a class
|
|
495 name.
|
|
496
|
|
497 @table @kbd
|
|
498 @item SPC
|
|
499 This command views the class declaration if the database
|
|
500 contains informations about it. If you don't parse the entire source
|
|
501 you are working on, some classes will only be known to exist but the
|
|
502 location of their declarations and definitions will not be known.@refill
|
|
503
|
|
504 @item RET
|
|
505 Works like @kbd{SPC}, except that it finds the class
|
|
506 declaration rather than viewing it, so that it is ready for
|
|
507 editing.@refill
|
|
508 @end table
|
|
509
|
|
510 The same functionality is available from the menu opened with
|
|
511 @kbd{mouse-3} on the class name.
|
|
512
|
|
513
|
|
514
|
|
515
|
|
516 @node Member Display, Go to Class, Source Display, Tree Buffers
|
|
517 @comment node-name, next, previous, up
|
|
518 @section Displaying Members
|
29107
|
519 @cindex @samp{*Members*} buffer
|
28867
|
520 @cindex @samp{*Globals*}
|
29107
|
521 @cindex freezing a member buffer
|
|
522 @cindex member lists, in tree buffers
|
28867
|
523
|
|
524 Ebrowse distinguishes six different kinds of members, each of
|
|
525 which is displayed as a separate @dfn{member list}: instance variables,
|
|
526 instance functions, static variables, static functions, friend
|
|
527 functions, and types.
|
|
528
|
|
529 Each of these lists can be displayed in a member buffer with a command
|
|
530 starting with @kbd{L} when the cursor is on a class name. By default,
|
|
531 there is only one member buffer named @dfn{*Members*} that is reused
|
|
532 each time you display a member list---this has proven to be more
|
|
533 practical than to clutter up the buffer list with dozens of member
|
|
534 buffers.
|
|
535
|
|
536 If you want to display more than one member list at a time you can
|
|
537 @dfn{freeze} its member buffer. Freezing a member buffer prevents it
|
|
538 from being overwritten the next time you display a member list. You can
|
|
539 toggle this buffer status at any time.
|
|
540
|
|
541 Every member list display command in the tree buffer can be used with a
|
|
542 prefix argument (@kbd{C-u}). Without a prefix argument, the command will
|
|
543 pop to a member buffer displaying the member list. With prefix argument,
|
|
544 the member buffer will additionally be @dfn{frozen}.
|
|
545
|
|
546 @table @kbd
|
29107
|
547 @cindex instance member variables, list
|
28867
|
548 @item L v
|
|
549 This command displays the list of instance member variables.
|
|
550
|
29107
|
551 @cindex static variables, list
|
28867
|
552 @item L V
|
|
553 Display the list of static variables.
|
|
554
|
29107
|
555 @cindex friend functions, list
|
28867
|
556 @item L d
|
|
557 Display the list of friend functions. This list is used for defines if
|
|
558 you are viewing the class @samp{*Globals*} which is a place holder for
|
|
559 global symbols.
|
|
560
|
29107
|
561 @cindex member functions, list
|
28867
|
562 @item L f
|
|
563 Display the list of member functions.
|
|
564
|
29107
|
565 @cindex static member functions, list
|
28867
|
566 @item L F
|
|
567 Display the list of static member functions.
|
|
568
|
29107
|
569 @cindex types, list
|
28867
|
570 @item L t
|
|
571 Display a list of types.
|
|
572 @end table
|
|
573
|
|
574 These lists are also available from the class' context menu invoked with
|
|
575 @kbd{mouse-3} on the class name.
|
|
576
|
|
577
|
|
578
|
|
579
|
|
580 @node Go to Class, Quitting, Member Display, Tree Buffers
|
|
581 @comment node-name, next, previous, up
|
|
582 @section Finding a Class
|
|
583 @cindex locate class
|
|
584 @cindex expanding branches
|
29107
|
585 @cindex class location
|
28867
|
586
|
|
587 @table @kbd
|
29107
|
588 @cindex search for class
|
28867
|
589 @item /
|
|
590 This command reads a class name from the minibuffer with completion and
|
|
591 positions the cursor on the class in the class tree.
|
|
592
|
|
593 If the branch of the class tree containing the class searched for is
|
|
594 currently collapsed, the class itself and all its base classes are
|
29107
|
595 recursively made visible. (See also @ref{Expanding and
|
28867
|
596 Collapsing}.)@refill
|
|
597
|
|
598 This function is also available from the tree buffer's context menu.
|
|
599
|
|
600 @item n
|
|
601 Repeat the last search done with @kbd{/}. Each tree buffer has its own
|
|
602 local copy of the regular expression last searched in it.
|
|
603 @end table
|
|
604
|
|
605
|
|
606
|
|
607
|
|
608 @node Quitting, File Name Display, Go to Class, Tree Buffers
|
|
609 @comment node-name, next, previous, up
|
|
610 @section Burying a Tree Buffer
|
29107
|
611 @cindex burying tree buffer
|
28867
|
612
|
|
613 @table @kbd
|
|
614 @item q
|
|
615 Is a synonym for @kbd{M-x bury-buffer}.
|
|
616 @end table
|
|
617
|
|
618
|
|
619
|
|
620
|
|
621 @node File Name Display, Expanding and Collapsing, Quitting, Tree Buffers
|
|
622 @comment node-name, next, previous, up
|
|
623 @section Displaying File Names
|
|
624
|
|
625 @table @kbd
|
29107
|
626 @cindex file names in tree buffers
|
28867
|
627 @item T f
|
|
628 This command toggles the display of file names in a tree buffer. If
|
|
629 file name display is switched on, the names of the files containing the
|
|
630 class declaration are shown to the right of the class names. If the
|
|
631 file is not known, the string @samp{unknown} is displayed.
|
|
632
|
|
633 This command is also provided in the tree buffer's context menu.
|
|
634
|
|
635 @item s
|
|
636 Display file names for the current line, or for the number of lines
|
|
637 given by a prefix argument.
|
|
638 @end table
|
|
639
|
|
640 Here is an example of a tree buffer with file names displayed.
|
|
641
|
|
642 @example
|
|
643 | Collection (unknown)
|
|
644 | IndexedCollection (indexedcltn.h)
|
|
645 | Array (array.h)
|
|
646 | FixedArray (fixedarray.h)
|
|
647 | Set (set.h)
|
|
648 | Dictionary (dict.h)
|
|
649 @end example
|
|
650
|
|
651
|
|
652
|
|
653
|
|
654 @node Expanding and Collapsing, Tree Indentation, File Name Display, Tree Buffers
|
|
655 @comment node-name, next, previous, up
|
|
656 @section Expanding and Collapsing a Tree
|
29107
|
657 @cindex expand tree branch
|
|
658 @cindex collapse tree branch
|
|
659 @cindex branches of class tree
|
|
660 @cindex class tree, collapse or expand
|
28867
|
661
|
|
662 You can expand and collapse parts of a tree to reduce the complexity of
|
|
663 large class hierarchies. Expanding or collapsing branches of a tree has
|
|
664 no impact on the functionality of other commands, like @kbd{/}. (See
|
29107
|
665 also @ref{Go to Class}.)@refill
|
28867
|
666
|
|
667 Collapsed branches are indicated with an ellipsis following the class
|
|
668 name like in the example below.
|
|
669
|
|
670 @example
|
|
671 | Collection
|
|
672 | IndexedCollection...
|
|
673 | Set
|
|
674 | Dictionary
|
|
675 @end example
|
|
676
|
|
677 @table @kbd
|
|
678 @item -
|
|
679 This command collapses the branch of the tree starting at the class the
|
|
680 cursor is on.
|
|
681
|
|
682 @item +
|
|
683 This command expands the branch of the tree starting at the class the
|
|
684 cursor is on. Both commands for collapsing and expanding branches are
|
|
685 also available from the class' object menu.
|
|
686
|
|
687 @item *
|
|
688 This command expands all collapsed branches in the tree.
|
|
689 @end table
|
|
690
|
|
691
|
|
692
|
|
693
|
|
694 @node Tree Indentation, Killing Classes, Expanding and Collapsing, Tree Buffers
|
|
695 @comment node-name, next, previous, up
|
|
696 @section Changing the Tree Indentation
|
|
697 @cindex tree indentation
|
29107
|
698 @cindex indentation of the tree
|
28867
|
699
|
|
700 @table @kbd
|
|
701 @item T w
|
|
702 This command reads a new indentation width from the minibuffer and
|
|
703 redisplays the tree buffer with the new indentation. It is also
|
|
704 available from the tree buffer's context menu.
|
|
705 @end table
|
|
706
|
|
707
|
|
708
|
|
709
|
|
710 @node Killing Classes, Saving a Tree, Tree Indentation, Tree Buffers
|
|
711 @comment node-name, next, previous, up
|
|
712 @section Removing Classes from the Tree
|
|
713 @cindex killing classes
|
29107
|
714 @cindex class, remove from tree
|
28867
|
715
|
|
716 @table @kbd
|
|
717 @item C-k
|
|
718 This command removes the class the cursor is on and all its derived
|
|
719 classes from the tree. The user is asked for confirmation before the
|
|
720 deletion is actually performed.
|
|
721 @end table
|
|
722
|
|
723
|
|
724
|
|
725
|
|
726 @node Saving a Tree, Statistics, Killing Classes, Tree Buffers
|
|
727 @comment node-name, next, previous, up
|
|
728 @comment node-name, next, previous, up
|
|
729 @section Saving a Tree
|
29107
|
730 @cindex save tree to a file
|
|
731 @cindex tree, save to a file
|
|
732 @cindex class tree, save to a file
|
28867
|
733
|
|
734 @table @kbd
|
|
735 @item C-x C-s
|
|
736 This command writes a class tree to the file it was read from. This is
|
|
737 useful after classes have been deleted from a tree.
|
|
738
|
|
739 @item C-x C-w
|
|
740 Writes the tree to a file whose name is read from the minibuffer.
|
|
741 @end table
|
|
742
|
|
743
|
|
744
|
|
745
|
|
746 @node Statistics, Marking Classes, Saving a Tree, Tree Buffers
|
|
747 @comment node-name, next, previous, up
|
29107
|
748 @cindex statistics for a tree
|
|
749 @cindex tree statistics
|
|
750 @cindex class statistics
|
28867
|
751
|
|
752 @table @kbd
|
|
753 @item x
|
|
754 Display statistics for the tree, like number of classes in it, number of
|
|
755 member functions, etc. This command can also be found in the buffer's
|
|
756 context menu.
|
|
757 @end table
|
|
758
|
|
759
|
|
760
|
|
761
|
|
762 @node Marking Classes, , Statistics, Tree Buffers
|
|
763 @comment node-name, next, previous, up
|
|
764 @cindex marking classes
|
29107
|
765 @cindex operations on marked classes
|
28867
|
766
|
|
767 Classes can be marked for operations similar to the standard Emacs
|
|
768 commands @kbd{M-x tags-search} and @kbd{M-x tags-query-replace} (see
|
|
769 also @xref{Tags-like Functions}.)@refill
|
|
770
|
|
771 @table @kbd
|
29107
|
772 @cindex toggle mark
|
28867
|
773 @item M t
|
|
774 Toggle the mark of the line point is in or for as many lines as given by
|
|
775 a prefix command. This command can also be found in the class' context
|
|
776 menu.
|
|
777
|
29107
|
778 @cindex unmark all
|
28867
|
779 @item M a
|
|
780 Unmark all classes. With prefix argument @kbd{C-u}, mark all classes in
|
|
781 the tree. Since this command operates on the whole buffer, it can also be
|
|
782 found in the buffer's object menu.
|
|
783 @end table
|
|
784
|
|
785 Marked classes are displayed with an @code{>} in column one of the tree
|
|
786 display, like in the following example
|
|
787
|
|
788 @example
|
|
789 |> Collection
|
|
790 | IndexedCollection...
|
|
791 |> Set
|
|
792 | Dictionary
|
|
793 @end example
|
|
794
|
|
795
|
|
796
|
|
797
|
|
798 @c ****************************************************************
|
|
799 @c ***
|
|
800 @c *** MEMBER BUFFERS
|
|
801 @c ***
|
|
802 @c ****************************************************************
|
|
803
|
|
804 @node Member Buffers, Tags-like Functions, Tree Buffers, Top
|
|
805 @comment node-name, next, previous, up
|
|
806 @chapter Member Buffers
|
|
807 @cindex members
|
|
808 @cindex member buffer mode
|
|
809
|
29107
|
810 @cindex class members, types
|
|
811 @cindex types of class members
|
28867
|
812 @dfn{Member buffers} are used to operate on lists of members of a class.
|
|
813 Ebrowse distinguishes six kinds of lists:
|
|
814
|
|
815 @itemize @bullet
|
|
816 @item
|
|
817 Instance variables (normal member variables),
|
|
818 @item
|
|
819 Instance functions (normal member functions),
|
|
820 @item
|
|
821 Static variables,
|
|
822 @item
|
|
823 Static member functions,
|
|
824 @item
|
|
825 Friend functions,
|
|
826 @item
|
|
827 Types (@code{enum}s and @code{typedef}s defined with class scope.
|
|
828 Nested classes will be shown in the class tree like normal classes.
|
|
829 @end itemize
|
|
830
|
|
831 Like tree buffers, member buffers install their own major mode. Also
|
|
832 like in tree buffers, menus are provided for certain areas in the
|
|
833 buffer: members, classes, and the buffer itself.
|
|
834
|
|
835 @menu
|
|
836 * Switching Member Lists:: Choosing which members to display
|
|
837 * Finding/Viewing:: Modifying source code
|
|
838 * Inherited Members:: Display of Inherited Members
|
|
839 * Searching Members:: Finding members in member buffer
|
|
840 * Switching to Tree:: Going back to the tree buffer
|
|
841 * Filters:: Selective member display
|
|
842 * Attributes:: Display of @code{virtual} etc.
|
|
843 * Long and Short Display:: Comprehensive and verbose display
|
|
844 * Regexp Display:: Showing matching regular expressions
|
|
845 * Switching Classes:: Displaying another class
|
|
846 * Killing/Burying:: Getting rid of the member buffer
|
|
847 * Column Width:: Display style
|
|
848 * Redisplay:: Redrawing the member list
|
|
849 * Getting Help:: How to get help for key bindings
|
|
850 @end menu
|
|
851
|
|
852
|
|
853
|
|
854
|
|
855 @node Switching Member Lists, Finding/Viewing, Member Buffers, Member Buffers
|
|
856 @comment node-name, next, previous, up
|
|
857 @section Switching Member Lists
|
29107
|
858 @cindex member lists, in member buffers
|
28867
|
859 @cindex static members
|
|
860 @cindex friends
|
|
861 @cindex types
|
|
862 @cindex defines
|
|
863
|
|
864 @table @kbd
|
29107
|
865 @cindex next member list
|
28867
|
866 @item L n
|
|
867 This command switches the member buffer display to the next member list.
|
|
868
|
29107
|
869 @cindex previous member list
|
28867
|
870 @item L p
|
|
871 This command switches the member buffer display to the previous member
|
|
872 list.
|
|
873
|
|
874 @item L f
|
|
875 Switch to the list of member functions.
|
|
876
|
29107
|
877 @cindex static
|
28867
|
878 @item L F
|
|
879 Switch to the list of static member functions.
|
|
880
|
|
881 @item L v
|
|
882 Switch to the list of member variables.
|
|
883
|
|
884 @item L V
|
|
885 Switch to the list of static member variables.
|
|
886
|
|
887 @item L d
|
|
888 Switch to the list of friends or defines.
|
|
889
|
|
890 @item L t
|
|
891 Switch to the list of types.x
|
|
892 @end table
|
|
893
|
|
894 Both commands cycle through the member list.
|
|
895
|
|
896 Most of the commands are also available from the member buffer's
|
|
897 context menu.
|
|
898
|
|
899
|
|
900
|
|
901
|
|
902 @node Finding/Viewing, Inherited Members, Switching Member Lists, Member Buffers
|
|
903 @comment node-name, next, previous, up
|
|
904 @section Finding and Viewing Member Source
|
29107
|
905 @cindex finding members, in member buffers
|
|
906 @cindex viewing members, in member buffers
|
|
907 @cindex member definitions, in member buffers
|
|
908 @cindex member declarations, in member buffers
|
|
909 @cindex definition of a member, in member buffers
|
|
910 @cindex declaration of a member, in member buffers
|
28867
|
911
|
|
912 @table @kbd
|
|
913 @item RET
|
|
914 This command finds the definition of the member the cursor is on.
|
|
915 Finding involves roughly the same as the standard Emacs tags facility
|
|
916 does---loading the file and searching for a regular expression matching
|
|
917 the member.
|
|
918
|
|
919 @item f
|
|
920 This command finds the declaration of the member the cursor is on.
|
|
921
|
|
922 @item SPC
|
|
923 This is the same command as @kbd{RET}, but views the member definition
|
|
924 instead of finding the member's source file.
|
|
925
|
|
926 @item v
|
|
927 This is the same command as @kbd{f}, but views the member's declaration
|
|
928 instead of finding the file the declaration is in.
|
|
929 @end table
|
|
930
|
|
931 You can install a hook function to perform actions after a member or
|
|
932 class declaration or definition has been found, or when it is not found.
|
|
933
|
|
934 All the commands described above can also be found in the context menu
|
|
935 displayed when clicking @kbd{mouse-2} on a member name.
|
|
936
|
|
937
|
|
938
|
|
939
|
|
940 @node Inherited Members, Searching Members, Finding/Viewing, Member Buffers
|
|
941 @comment node-name, next, previous, up
|
|
942 @section Display of Inherited Members
|
29107
|
943 @cindex superclasses, members
|
|
944 @cindex base classes, members
|
28867
|
945 @cindex inherited members
|
|
946
|
|
947 @table @kbd
|
|
948 @item D b
|
|
949 This command toggles the display of inherited members in the member
|
|
950 buffer. This is also in the buffer's context menu.
|
|
951 @end table
|
|
952
|
|
953
|
|
954
|
|
955
|
|
956 @node Searching Members, Switching to Tree, Inherited Members, Member Buffers
|
|
957 @comment node-name, next, previous, up
|
|
958 @section Searching Members
|
|
959 @cindex searching members
|
|
960
|
|
961 @table @kbd
|
|
962 @item G v
|
|
963 Position the cursor on a member whose name is read from the minibuffer;
|
|
964 only members shown in the current member buffer appear in the completion
|
|
965 list.
|
|
966
|
|
967 @item G m
|
|
968 Like the above command, but all members for the current class appear in
|
|
969 the completion list. If necessary, the current member list is switched
|
|
970 to the one containing the member.
|
|
971
|
|
972 With a prefix argument (@kbd{C-u}), all members in the class tree,
|
|
973 i.e., all members the browser knows about appear in the completion
|
|
974 list. The member display will be switched to the class and member list
|
|
975 containing the member.
|
|
976
|
|
977 @item G n
|
|
978 Repeat the last member search.
|
|
979 @end table
|
|
980
|
|
981 Look into the buffer's context menu for a convenient way to do this with
|
|
982 a mouse.
|
|
983
|
|
984
|
|
985
|
|
986 @node Switching to Tree, Filters, Searching Members, Member Buffers
|
|
987 @comment node-name, next, previous, up
|
|
988 @section Switching to Tree Buffer
|
29107
|
989 @cindex tree buffer, switch to
|
28867
|
990 @cindex buffer switching
|
|
991 @cindex switching buffers
|
|
992
|
|
993 @table @kbd
|
|
994 @item TAB
|
|
995 Pop up the tree buffer to which the member buffer belongs.
|
|
996
|
|
997 @item t
|
|
998 Do the same as @kbd{TAB} but also position the cursor on the class
|
|
999 displayed in the member buffer.
|
|
1000 @end table
|
|
1001
|
|
1002
|
|
1003
|
|
1004
|
|
1005 @node Filters, Attributes, Switching to Tree, Member Buffers
|
|
1006 @comment node-name, next, previous, up
|
|
1007 @section Filters
|
|
1008 @cindex filters
|
|
1009
|
|
1010 @table @kbd
|
29107
|
1011 @cindex @code{public} members
|
28867
|
1012 @item F a u
|
|
1013 This command toggles the display of @code{public} members. The
|
|
1014 @samp{a} stands for `access'.
|
|
1015
|
29107
|
1016 @cindex @code{protected} members
|
28867
|
1017 @item F a o
|
|
1018 This command toggles the display of @code{protected} members.
|
|
1019
|
29107
|
1020 @cindex @code{private} members
|
28867
|
1021 @item F a i
|
|
1022 This command toggles the display of @code{private} members.
|
|
1023
|
29107
|
1024 @cindex @code{virtual} members
|
28867
|
1025 @item F v
|
|
1026 This command toggles the display of @code{virtual} members.
|
|
1027
|
29107
|
1028 @cindex @code{inline} members
|
28867
|
1029 @item F i
|
|
1030 This command toggles the display of @code{inline} members.
|
|
1031
|
29107
|
1032 @cindex @code{const} members
|
28867
|
1033 @item F c
|
|
1034 This command toggles the display of @code{const} members.
|
|
1035
|
29107
|
1036 @cindex pure virtual members
|
28867
|
1037 @item F p
|
|
1038 This command toggles the display of pure virtual members.
|
|
1039
|
29107
|
1040 @cindex remove filters
|
28867
|
1041 @item F r
|
|
1042 This command removes all filters.
|
|
1043 @end table
|
|
1044
|
|
1045 These commands are also found in the buffer's context menu.
|
|
1046
|
|
1047
|
|
1048
|
|
1049
|
|
1050 @node Attributes, Long and Short Display, Filters, Member Buffers
|
|
1051 @comment node-name, next, previous, up
|
|
1052 @section Displaying Member Attributes
|
|
1053 @cindex attributes
|
29107
|
1054 @cindex member attribute display
|
28867
|
1055
|
|
1056 @table @kbd
|
|
1057 @item D a
|
|
1058 Toggle the display of member attributes (default is on).
|
|
1059
|
|
1060 The nine member attributes Ebrowse knows about are are displayed
|
|
1061 as a list a single-characters flags enclosed in angle brackets in front
|
|
1062 the of the member's name. A @samp{-} at a given position means that
|
|
1063 the attribute is false. The list of attributes from left to right is
|
|
1064
|
|
1065 @table @samp
|
29107
|
1066 @cindex @code{template} attribute
|
28867
|
1067 @item T
|
|
1068 The member is a template.
|
|
1069
|
29107
|
1070 @cindex @code{extern "C"} attribute
|
28867
|
1071 @item C
|
|
1072 The member is declared @code{extern "C"}.
|
|
1073
|
29107
|
1074 @cindex @code{virtual} attribute
|
28867
|
1075 @item v
|
|
1076 Means the member is declared @code{virtual}.
|
|
1077
|
29107
|
1078 @cindex @code{inline}
|
28867
|
1079 @item i
|
|
1080 The member is declared @code{inline}.
|
|
1081
|
29107
|
1082 @cindex @code{const} attribute
|
28867
|
1083 @item c
|
|
1084 The member is @code{const}.
|
|
1085
|
29107
|
1086 @cindex pure virtual function attribute
|
28867
|
1087 @item 0
|
|
1088 The member is a pure virtual function.
|
|
1089
|
29107
|
1090 @cindex @code{mutable} attribute
|
28867
|
1091 @item m
|
|
1092 The member is declared @code{mutable}.
|
|
1093
|
29107
|
1094 @cindex @code{explicit} attribute
|
28867
|
1095 @item e
|
|
1096 The member is declared @code{explicit}.
|
|
1097
|
|
1098 @item t
|
|
1099 The member is a function with a throw list.
|
|
1100 @end table
|
|
1101 @end table
|
|
1102
|
|
1103 This command is also in the buffer's context menu.
|
|
1104
|
|
1105
|
|
1106
|
|
1107 @node Long and Short Display, Regexp Display, Attributes, Member Buffers
|
|
1108 @comment node-name, next, previous, up
|
|
1109 @section Long and Short Member Display
|
|
1110 @cindex display form
|
|
1111 @cindex long display
|
|
1112 @cindex short display
|
|
1113
|
|
1114 @table @kbd
|
|
1115 @item D l
|
|
1116 This command toggles the member buffer between short and long display
|
|
1117 form. The short display form displays member names, only:
|
|
1118
|
|
1119 @example
|
|
1120 | isEmpty contains hasMember create
|
|
1121 | storeSize hash isEqual restoreGuts
|
|
1122 | saveGuts
|
|
1123 @end example
|
|
1124
|
|
1125 The long display shows one member per line with member name and regular
|
|
1126 expressions matching the member (if known):
|
|
1127
|
|
1128 @example
|
|
1129 | isEmpty Bool isEmpty () const...
|
|
1130 | hash unsigned hash () const...
|
|
1131 | isEqual int isEqual (...
|
|
1132 @end example
|
|
1133
|
|
1134 Regular expressions will only be displayed when the Lisp database has
|
29107
|
1135 not been produced with the @command{ebrowse} option @samp{--no-regexps}.
|
|
1136 @xref{Matching, --no-regexps, Regular Expressions}.
|
28867
|
1137 @end table
|
|
1138
|
|
1139
|
|
1140
|
|
1141
|
|
1142 @node Regexp Display, Switching Classes, Long and Short Display, Member Buffers
|
|
1143 @comment node-name, next, previous, up
|
|
1144 @section Display of Regular Expressions
|
|
1145 @cindex regular expression display
|
|
1146
|
|
1147 @table @kbd
|
|
1148 @item D r
|
|
1149 This command toggles the long display form from displaying the regular
|
|
1150 expressions matching the member declarations to those expressions
|
|
1151 matching member definitions.
|
|
1152 @end table
|
|
1153
|
|
1154 Regular expressions will only be displayed when the Lisp database has
|
29107
|
1155 not been produced with the @command{ebrowse} option @samp{--no-regexps},
|
|
1156 see @ref{Matching, --no-regexps, Regular Expressions}.
|
28867
|
1157
|
|
1158
|
|
1159
|
|
1160
|
|
1161 @node Switching Classes, Killing/Burying, Regexp Display, Member Buffers
|
|
1162 @comment node-name, next, previous, up
|
|
1163 @section Displaying Another Class
|
29107
|
1164 @cindex base class, display
|
|
1165 @cindex derived class, display
|
|
1166 @cindex superclass, display
|
|
1167 @cindex subclass, display
|
28867
|
1168 @cindex class display
|
|
1169
|
|
1170 @table @kbd
|
|
1171 @item C c
|
|
1172 This command lets you switch the member buffer to another class. It
|
|
1173 reads the name of the new class from the minibuffer with completion.
|
|
1174
|
|
1175 @item C b
|
|
1176 This is the same command as @kbd{C c} but restricts the classes shown in
|
|
1177 the completion list to immediate base classes, only. If only one base
|
|
1178 class exists, this one is immediately shown in the minibuffer.
|
|
1179
|
|
1180 @item C d
|
|
1181 Same as @kbd{C b}, but for derived classes.
|
|
1182
|
|
1183 @item C p
|
|
1184 Switch to the previous class in the class hierarchy on the same level as
|
|
1185 the class currently displayed.
|
|
1186
|
|
1187 @item C n
|
|
1188 Switch to the next sibling of the class in the class tree.
|
|
1189 @end table
|
|
1190
|
|
1191
|
|
1192
|
|
1193
|
|
1194 @node Killing/Burying, Column Width, Switching Classes, Member Buffers
|
|
1195 @comment node-name, next, previous, up
|
|
1196 @section Burying a Member Buffer
|
|
1197 @cindex burying member buffers
|
|
1198
|
|
1199 @table @kbd
|
|
1200 @item q
|
|
1201 This command is a synonym for @kbd{M-x bury-buffer}.
|
|
1202 @end table
|
|
1203
|
|
1204
|
|
1205
|
|
1206
|
|
1207 @node Column Width, Redisplay, Killing/Burying, Member Buffers
|
|
1208 @comment node-name, next, previous, up
|
|
1209 @section Setting the Column Width
|
|
1210 @cindex column width
|
|
1211 @cindex member indentation
|
|
1212 @cindex indentation, member
|
|
1213
|
|
1214 @table @kbd
|
|
1215 @item D w
|
|
1216 This command sets the column width depending on the display form used
|
|
1217 (long or short display).
|
|
1218 @end table
|
|
1219
|
|
1220
|
|
1221
|
|
1222
|
|
1223 @node Redisplay, Getting Help, Column Width, Member Buffers
|
|
1224 @comment node-name, next, previous, up
|
|
1225 @section Forced Redisplay
|
29107
|
1226 @cindex redisplay of member buffers
|
28867
|
1227
|
|
1228 @table @kbd
|
|
1229 @item C-l
|
|
1230 This command forces a redisplay of the member buffer. If the width
|
|
1231 of the window displaying the member buffer is changed this command
|
|
1232 redraws the member list with the appropriate column widths and number of
|
|
1233 columns.
|
|
1234 @end table
|
|
1235
|
|
1236
|
|
1237
|
|
1238
|
|
1239 @node Getting Help, , Redisplay, Member Buffers
|
|
1240 @comment node-name, next, previous, up
|
|
1241 @cindex help
|
|
1242
|
|
1243 @table @kbd
|
|
1244 @item ?
|
|
1245 This key is bound to @code{describe-mode}.
|
|
1246 @end table
|
|
1247
|
|
1248
|
|
1249
|
|
1250
|
|
1251 @comment **************************************************************
|
|
1252 @comment *** TAGS LIKE FUNCTIONS
|
|
1253 @comment **************************************************************
|
|
1254
|
|
1255 @node Tags-like Functions, Concept Index, Member Buffers, Top
|
|
1256 @comment node-name, next, previous, up
|
|
1257 @chapter Tags-like Functions
|
|
1258
|
|
1259 Ebrowse provides tags functions similar to those of the standard
|
|
1260 Emacs Tags facility, but better suited to the needs of C++ programmers.
|
|
1261
|
|
1262 @menu
|
|
1263 * Finding and Viewing:: Going to a member declaration/definition
|
|
1264 * Position Stack:: Moving to previous locations
|
|
1265 * Search & Replace:: Searching and replacing over class tree files
|
|
1266 * Members in Files:: Listing all members in a given file
|
|
1267 * Apropos:: Listing members matching a regular expression
|
|
1268 * Symbol Completion:: Completing names while editing
|
|
1269 * Member Buffer Display:: Quickly display a member buffer for some
|
|
1270 identifier
|
|
1271 @end menu
|
|
1272
|
|
1273
|
|
1274
|
|
1275 @node Finding and Viewing, Position Stack, Tags-like Functions, Tags-like Functions
|
|
1276 @comment node-name, next, previous, up
|
|
1277 @section Finding and Viewing Members
|
29107
|
1278 @cindex finding class member, in C++ source
|
|
1279 @cindex viewing class member, in C++ source
|
28867
|
1280 @cindex tags
|
29107
|
1281 @cindex member definition, finding, in C++ source
|
|
1282 @cindex member declaration, finding, in C++ source
|
|
1283
|
|
1284 The functions in this section are similar to those described in
|
|
1285 @ref{Source Display}, and also in @ref{Finding/Viewing}, except that
|
|
1286 they work in a C++ source buffer, not in member and tree buffers created
|
|
1287 by Ebrowse.
|
28867
|
1288
|
|
1289 @table @kbd
|
|
1290 @item C-c b f
|
|
1291 Find the definition of the member around point. If you invoke this
|
|
1292 function with a prefix argument, the declaration is searched.
|
|
1293
|
|
1294 If more than one class contains a member with the given name you can
|
|
1295 select the class with completion. If there is a scope declaration in
|
|
1296 front of the member name, this class name is used as initial input for
|
|
1297 the completion.
|
|
1298
|
|
1299 @item C-c b F
|
29107
|
1300 Find the declaration of the member around point.
|
28867
|
1301
|
|
1302 @item C-c b v
|
|
1303 View the definition of the member around point.
|
|
1304
|
|
1305 @item C-c b V
|
|
1306 View the declaration of the member around point.
|
|
1307
|
|
1308 @item C-c b 4 f
|
|
1309 Find a member's definition in another window.
|
|
1310
|
|
1311 @item C-c b 4 F
|
|
1312 Find a member's declaration in another window.
|
|
1313
|
|
1314 @item C-c b 4 v
|
|
1315 View a member's definition in another window.
|
|
1316
|
|
1317 @item C-c b 4 V
|
|
1318 View a member's declaration in another window.
|
|
1319
|
|
1320 @item C-c b 5 f
|
|
1321 Find a member's definition in another frame.
|
|
1322
|
|
1323 @item C-c b 5 F
|
|
1324 Find a member's declaration in another frame.
|
|
1325
|
|
1326 @item C-c b 5 v
|
|
1327 View a member's definition in another frame.
|
|
1328
|
|
1329 @item C-c b 5 V
|
|
1330 View a member's declaration in another frame.
|
|
1331 @end table
|
|
1332
|
|
1333
|
|
1334
|
|
1335 @node Position Stack, Search & Replace, Finding and Viewing, Tags-like Functions
|
|
1336 @comment node-name, next, previous, up
|
|
1337 @section The Position Stack
|
|
1338 @cindex position stack
|
|
1339
|
|
1340 When jumping to a member declaration or definition with one of
|
|
1341 Ebrowse's commands, the position from where you performed the
|
|
1342 jump and the position where you jumped to are recorded in a
|
|
1343 @dfn{position stack}. There are several ways in which you can quickly
|
|
1344 move to positions in the stack:@refill
|
|
1345
|
|
1346 @table @kbd
|
29107
|
1347 @cindex return to original position
|
28867
|
1348 @item C-c b -
|
|
1349 This command sets point to the previous position in the position stack.
|
|
1350 Directly after you performed a jump, this will put you back to the
|
|
1351 position where you came from.
|
|
1352
|
|
1353 The stack is not popped, i.e., you can always switch back and forth
|
|
1354 between positions in the stack. To avoid letting the stack grow to
|
|
1355 infinite size there is a maximum number of positions defined. When this
|
|
1356 number is reached, older positions are discarded when new positions are
|
|
1357 pushed on the stack.
|
|
1358
|
|
1359 @item C-c b +
|
|
1360 This command moves forward in the position stack, setting point to
|
|
1361 the next position stored in the position stack.
|
|
1362
|
|
1363 @item C-c b p
|
|
1364 Displays an electric buffer showing all positions saved in the stack.
|
|
1365 You can select a position by pressing @kbd{SPC} in a line. You can
|
|
1366 view a position with @kbd{v}.
|
|
1367 @end table
|
|
1368
|
|
1369
|
|
1370
|
|
1371
|
29107
|
1372 @node Search & Replace, Members in Files, Position Stack, Tags-like Functions
|
28867
|
1373 @comment node-name, next, previous, up
|
|
1374 @section Searching and Replacing
|
29107
|
1375 @cindex searching multiple C++ files
|
|
1376 @cindex replacing in multiple C++ files
|
28867
|
1377 @cindex restart tags-operation
|
|
1378
|
|
1379 Ebrowse allows you to perform operations on all or a subset of the files
|
|
1380 mentioned in a class tree. When you invoke one of the following
|
|
1381 functions and more than one class tree is loaded, you must choose a
|
|
1382 class tree to use from an electric tree menu. If the selected tree
|
|
1383 contains marked classes, the following commands operate on the files
|
|
1384 mentioned in the marked classes only. Otherwise all files in the class
|
|
1385 tree are used.
|
|
1386
|
|
1387 @table @kbd
|
|
1388 @item C-c b s
|
|
1389 This function performs a regular expression search in the chosen set of
|
|
1390 files.
|
|
1391
|
|
1392 @item C-c b u
|
|
1393 This command performs a search for calls of a given member which is
|
|
1394 selected in the usual way with completion.
|
|
1395
|
|
1396 @item C-c b %
|
|
1397 Perform a query replace over the set of files.
|
|
1398
|
|
1399 @item C-c b ,
|
|
1400 All three operations above stop when finding a match. You can restart
|
|
1401 the operation with this command.
|
|
1402
|
|
1403 @item C-c b n
|
|
1404 This restarts the last tags operation with the next file in the list.
|
|
1405 @end table
|
|
1406
|
|
1407
|
|
1408
|
|
1409
|
|
1410 @node Members in Files, Apropos, Search & Replace, Tags-like Functions
|
|
1411 @comment node-name, next, previous, up
|
|
1412 @section Members in Files
|
|
1413 @cindex files
|
29107
|
1414 @cindex members in file, listing
|
|
1415 @cindex list class members in a file
|
28867
|
1416 @cindex file, members
|
|
1417
|
|
1418 The command @kbd{C-c b l}, lists all members in a given file. The file
|
|
1419 name is read from the minibuffer with completion.
|
|
1420
|
|
1421
|
|
1422
|
|
1423
|
|
1424 @node Apropos, Symbol Completion, Members in Files, Tags-like Functions
|
|
1425 @comment node-name, next, previous, up
|
|
1426 @section Member Apropos
|
29107
|
1427 @cindex apropos on class members
|
28867
|
1428 @cindex members, matching regexp
|
|
1429
|
|
1430 The command @kbd{C-c b a} can be used to display all members matching a
|
|
1431 given regular expression. This command can be very useful if you
|
|
1432 remember only part of a member name, and not its beginning.
|
|
1433
|
|
1434 A special buffer is popped up containing all identifiers matching the
|
|
1435 regular expression, and what kind of symbol it is (e.g., a member
|
|
1436 function, or a type). You can then switch to this buffer, and use the
|
|
1437 command @kbd{C-c b f}, for example, to jump to a specific member.
|
|
1438
|
|
1439
|
|
1440
|
|
1441
|
|
1442 @node Symbol Completion, Member Buffer Display, Apropos, Tags-like Functions
|
|
1443 @comment node-name, next, previous, up
|
|
1444 @section Symbol Completion
|
|
1445 @cindex completion
|
|
1446 @cindex symbol completion
|
|
1447
|
|
1448 The command @kbd{C-c b TAB} completes the symbol in front of point.
|
|
1449
|
|
1450
|
|
1451
|
|
1452
|
|
1453 @node Member Buffer Display, , Symbol Completion, Tags-like Functions
|
|
1454 @section Quick Member Display
|
29107
|
1455 @cindex member buffer, for member at point
|
28867
|
1456
|
|
1457 You can quickly display a member buffer containing the member the cursor
|
|
1458 in on with the command @kbd{C-c b m}.
|
|
1459
|
|
1460
|
|
1461 @node Concept Index, , Tags-like Functions, Top
|
|
1462 @unnumbered Concept Index
|
|
1463 @printindex cp
|
|
1464
|
|
1465 @contents
|
|
1466 @bye
|