Lugaru's Epsilon

Epsilon User's Manual and Reference
   Commands by Topic
      Getting Help
         Info Mode
         Web-based Epsilon Documentation
      Moving Around
         . . .
         Source Code Browsing Interface
      Changing Text
         Inserting and Deleting
         Killing Text
         Clipboard Access
         . . .
         Hex Mode
      . . .

Previous   Up    Next
Tags  Commands by Topic   Comparing

Epsilon User's Manual and Reference > Commands by Topic > Moving Around >

Source Code Browsing Interface

Epsilon can access source code browsing data generated by some Microsoft compilers. Only the compilers in Visual Studio versions 4.0 through 2008 support this feature; it has been removed from more recent tools.

To set this up, first you must make sure your compiler generates such data, in the form of a .bsc file. From Visual Studio, ensure the "Generate browse info" option (Project/Settings, on the C/C++ tab in the General category) and the "Build browse info file" option (Project/Settings, on the Browse Info tab are both enabled. Or if you build from the command line, compile with the /FR or /Fr flag to generate .sbr files, then use the bscmake utility to combine the .sbr files into a .bsc file.

Next, set up Epsilon to use the generated browser file. To do this, run the Alt-x configure-epsilon command and select the option to install source code browser support. This retrieves the appropriate DLL and installs it.

You can use the browser database only for source code browsing, or you can tell Epsilon to use it for tagging as well, instead of using its own tagging methods. To have Epsilon use the same browser database file for both purposes, use the select-tag-file command on Ctrl-X Alt-<Comma> to select your .bsc file. To use Epsilon's built-in tagging, and utilize the browser database only for source code browsing, select your .bsc file with the select-browse-file command, which sets the browser-file variable.

Once you've set up source code browsing, press Ctrl-<NumSlash> (using the / key on the numeric keypad) to run the browse-symbol command. It will prompt for the name of a symbol (the name of a function, variable, macro, class, or similar), using the symbol at point as the default. Then it will set a temporary bookmark at your old position, just like the set-bookmark command on Alt-/. (After using browse-symbol to navigate to a different part of your code, you can use Alt-J or Ctrl-<NumStar> to move back to your original location.) Finally, it builds a #symbols# buffer showing all available information on the symbol.

The #symbols# buffer contains a header section, followed by one section for each distinct use of the symbol. For instance, if you use the name "cost" for a function, and also use it elsewhere as a local variable name, and as a structure name somewhere else, there will be three sections, one for each use.

Browser File: c:\Project\project.bsc
Symbol: qsort
Filter all but: Var Func Macro Type Class 
Filter all Uses/UsedBy but: Var Func Macro Type Class 

qsort (public function) is defined at:
qsort (public function) is used at:
-    C:\Program Files\Microsoft Visual Studio\VC98\include\stdlib.h(302): 
--     _CRTIMP void   __cdecl qsort(void *, size_t, size_t, int (__cdecl *)
-    prep_env.c(79): qsort(order, cnt, sizeof(char *), env_compare);
-    token.cpp(174): qsort(le, sizeX + sizeY, sizeof(line_entry), hash_cmp);
qsort (public function) is used by:
- make_proc_env (public function)
- tokenize(int *,int *) (static function)

The header section displays the name of the .bsc file used to generate the listing and the symbol being displayed. It also shows the current filters, which may be used to hide certain uses of a symbol.

Next you will see a list of those lines in your source code that define the specified symbol, followed by those lines that reference it. In the example above, qsort(), a library function, isn't defined within the project source code, so its "is defined at" section is empty. It's defined in a standard header file, and called from two places in the project source code. You can position to any of these source code lines and press <Enter>, or double-click the line, and Epsilon will go to the corresponding source file and line.

In the following section, you will see a list of functions that use the qsort() function. You can look up any one of these symbol names with <Enter> or double-clicking, and Epsilon will display the symbol listing for that symbol, replacing the current listing. Afterwards, press the L key to return to viewing the original symbol. Repeated presses go to earlier symbols. With a numeric argument, the L key displays a list of recently-viewed symbols; you can select one and have it displayed again.

If the symbol has a definition within the current project, the next section will show the functions and variables it uses in its definition.

You can set filters, as shown in the header section, to skip over certain kinds of definitions and uses. For instance, if qsort were the name of a macro as well as a function, you could use the first filter to see only the macro uses by pressing f. The second filter controls which symbols appear in the uses/used-by section; press b to set it. You can also set the filters by pressing <Enter> while on the corresponding "Filter:" line in the browser buffer. These set the browser-filter and browser-filter-usedby variables.

The browser-options variable lets you omit some of the above sections, or simplify the data shown in other ways, to make browsing quicker. The browse-current-symbol command is a variation on browse-symbol that doesn't prompt for a symbol name, but uses the name at point without prompting.

Standard bindings:

  Ctrl-<NumSlash>  browse-symbol
 Browse mode only: f  browse-set-filter
 Browse mode only: b  browse-set-usedby-filter

Previous   Up    Next
Tags  Commands by Topic   Comparing

Lugaru Copyright (C) 1984, 2020 by Lugaru Software Ltd. All rights reserved.