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