GNU Info

Info Node: (ebrowse)Overview

(ebrowse)Overview


Next: Generating browser files Prev: Top Up: Top
Enter node , (file) or (file)node

Introduction
************

   When working in software projects using C++, I frequently missed
software support for two things:

   * When you get a new class library, or you have to work on source
     code you haven't written yourself (or written sufficiently long
     ago), you need a tool to let you navigate class hierarchies and
     investigate features of the software.  Without such a tool you
     often end up `grep'ing through dozens or even hundreds of files.

   * Once you are productive, it would be nice to have a tool that
     knows your sources and can help you while you are editing source
     code.  Imagine to be able to jump to the definition of an
     identifier while you are editing, or something that can complete
     long identifier names because it knows what identifiers are
     defined in your program....

   The design of Ebrowse reflects these two needs.

   How does it work?

   A fast parser written in C is used to process C++ source files.  The
parser generates a data base containing information about classes,
members, global functions, defines, types etc. found in the sources.

   The second part of Ebrowse is a Lisp program.  This program reads
the data base generated by the parser.  It displays its contents in
various forms and allows you to perform operations on it, or do
something with the help of the knowledge contained in the data base.

   "Navigational" use of Ebrowse is centered around two types of
buffers which define their own major modes:

   "Tree buffers" are used to view class hierarchies in tree form.
They allow you to quickly find classes, find or view class declarations,
perform operations like query replace on sets of your source files, and
finally tree buffers are used to produce the second buffer form--member
buffers.  Note: Tree Buffers.

   Members are displayed in "member buffers".  Ebrowse distinguishes
between six different types of members; each type is displayed as a
member list of its own:

   * Instance member variables;

   * Instance member functions;

   * Static member variables;

   * Static member functions;

   * Friends/Defines.  The list of defines is contained in the friends
     list of the pseudo-class `*Globals*';

   * Types (`enum's, and `typedef's defined with class scope).

   You can switch member buffers from one list to another, or to another
class.  You can include inherited members in the display, you can set
filters that remove categories of members from the display, and most
importantly you can find or view member declarations and definitions
with a keystroke.  Note: Member Buffers.

   These two buffer types and the commands they provide support the
navigational use of the browser.  The second form resembles Emacs' Tags
package for C and other procedural languages.  Ebrowse's commands of
this type are not confined to special buffers; they are most often used
while you are editing your source code.

   To list just a subset of what you can use the Tags part of Ebrowse
for:

   * Jump to the definition or declaration of an identifier in your
     source code, with an electric position stack that lets you easily
     navigate back and forth.

   * Complete identifiers in your source with a completion list
     containing identifiers from your source code only.

   * Perform search and query replace operations over some or all of
     your source files.

   * Show all identifiers matching a regular expression--and jump to
     one of them, if you like.


automatically generated by info2www version 1.2.2.9