Freescope Source Code Browser
freescope [-bdfhlVZ] [-f database]
freescope is a source code browser similar to the "cscope" pro
gram. It allows the user to interactively query a symbol database.
The database is built and updated by examining source files speci
fied in the "freescope.files" file. If "freescope.files" is not
found, freescope tries to open the file "cscope.files" and treats
that file as if it was "freescope.files". freescope also parses
recursively all header files that are directly or indirectly
included by the source files listed in freescope.files.
Upon first invocation of freescope , a database is built and saved
under the file "freescope.out". On subsequent execution, freescope
updates its database only for the files that have been modified
since last invocation of the browser.
Currently, freescope can parse C files. It is intended that in the
future, the program parsing capabilities will be extended to other
languages such as C++, Java, Pascal, etc.
Here is a list of options currently supported by freescope:
-b Build the database and exit immediately.
-d Do not update the database on startup.
Open "database" file instead of freescope.out
-h Display a small help message about usage.
-l Start freescope in CLI mode instead of curses. See below.
-V Display the program's version and exit immediately.
-Z Dump database to the standard output. Debugging purpose.
Upon update completion, the user can enter a query under one of
the following categories:
- Symbol: Find any occurence for this symbol
- Global definition: Find global definitions for this symbol
- Functions calling: Find calls to this function
- Text: Find occurences of this text string
- Change text: Substitute given text with a new string
- Regular exp: Find occurences of this regular expression
- File: Find the files matching this regular
- File including: Find places where this file is included
The user can change the type of query using the <UP> or <DOWN>
arrow, or by pressing the <TAB> key.
The program provides symbol completion during input of a symbol.
To use this feature, the user has to press <CTRL>-N to get the
next possible completion and <CTRL>-P to get the previous dis
The user can navigate across results by using the following keys:
j Highlight next result on the current page.
k Highlight previous result on the current page.
l Show next result page if available
h Show previous result page if available
<RETURN> / <SPACE>
Open editor on the selected result
Note that the arrow keys can also be used.
The user switches between browse and query mode by pressing the
<CTRL-W> key. <TAB> key can also be used while in browse mode.
A help panel can be displayed at any time by pressing the ? key.
Other commands are:
<CTRL-D> Exit freescope.
<CTRL-B> Previous query
<CTRL-F> Next query
<CTRL-R> Update database
When selecting the "Change text" query, the user is asked to
select the matches that need to be modified. Navigating the
matches is as described above.
Selection is made by pressing the s key which results in freescope
highlighting the beginning of the result line. Deselecting a
match is done by pressing again the s key.
All matches can be selected using the <CTRL-A> command.
The user confirm his selection by typing <CTRL-D>
It is possible to cancel the changing operation by typing <CTRL-C>
COMMAND LINE INTERFACE
Freescope can be started as a CLI by specifying the -l option. The
implemented commands are similar to the cscope CLI commands.
freescope will prompt the ">>" string when ready to accept input
search pattern must immediately follow. For example:
will find all places where the "printf" function is called.
Each search result is displayed with the following format: file
name, scope name, line number and line text. For example:
main.c main 124 printf("hello world0);
The r command is used for rebuilding the database.
The q command stops freescope.
INTEGRATING VIM AND FREESCOPE
Since version 0.2.0, freescope can be integrated with the vim text
To do so, make sure that vim has been compiled with cscope sup
port. Then, add the following lines in your .vimrc configuration
cs add whatever_directory/freescope.out
You can customize your .vimrc file to your own taste of course.
Have a look at http://freescope.sourceforge.net for useful vim
macros for freescope and cscope.
EDITOR Preferred editor. Default is "vi"
Have a look at the cscope application.