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