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