root/branches/2.1/info/ebrowse

Revision 3212, 46.1 kB (checked in by miyoshi, 5 years ago)

Sync up with Emacs-21.3.

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