When working in software projects using C++, I frequently missed software support for two things:
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. See 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:
typedefs 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. See Member Buffers.
These two buffer types and the commands they provide support the navigational use of the browser. The second form resembles Emacs's 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: