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