143 lines
4.1 KiB
Plaintext
143 lines
4.1 KiB
Plaintext
Cscope Notes:
|
||
|
||
The nvi tags structure has been reworked to handle the notion of multiple
|
||
locations per tag. This supports cscope, which returns multiple locations
|
||
per query. It will hopefully support ctags programs that create databases
|
||
with multiple locations per tag as well.
|
||
|
||
There is now a list of "tag queues" chained from each screen. Each tag
|
||
queue has one or more "tag locations".
|
||
|
||
+----+ +----+ +----+ +----+
|
||
| EP | -> | Q1 | <-- | T1 | <-- | T2 |
|
||
+----+ +----+ --> +----+ --> +----+
|
||
|
|
||
+----+ +----+
|
||
| Q2 | <-- | T1 |
|
||
+----+ --> +----+
|
||
|
|
||
+----+ +----+
|
||
| Q3 | <-- | T1 |
|
||
+----+ --> +----+
|
||
|
||
In the above diagram, each "Q" is a "tag queue", and each "T" is a
|
||
tag location. Generally, the commands:
|
||
|
||
:tag create a new Q
|
||
^[ create a new Q
|
||
:cscope find create a new Q
|
||
:tagnext move to the next T
|
||
:tagprev move to the previous T
|
||
:tagpop discard one or more Q's
|
||
^T discard the most recent Q
|
||
:tagtop discard all Q's
|
||
|
||
More specifically:
|
||
|
||
:cs[cope] a[dd] cscope-dir
|
||
|
||
Attach to the cscope database in cscope-dir.
|
||
|
||
:cs[cope] f[ind] c|d|e|f|g|i|s|t buffer|pattern
|
||
|
||
Query all attached cscopes for the pattern. The pattern is a
|
||
regular expression. If the pattern is a double-quote character
|
||
followed by a valid buffer name (e.g., "t), then the contents
|
||
of the named buffer are used as the pattern.
|
||
|
||
c: find callers of name
|
||
d: find all function calls made from name
|
||
e: find pattern
|
||
f: find files with name as substring
|
||
g: find definition of name
|
||
i: find files #including name
|
||
s: find all uses of name
|
||
t: find assignments to name
|
||
|
||
The find command pushes the current location onto the tags stack,
|
||
and switches to the first location resulting from the query, if
|
||
the query returned at least one result.
|
||
|
||
:cs[cope] h[elp] [command]
|
||
|
||
List the cscope commands, or usage help on one command.
|
||
|
||
:display c[onnections]
|
||
|
||
Display the list of cscope connections
|
||
|
||
:display t[ags]
|
||
|
||
The tags display has been enhanced to display multiple tag
|
||
locations per tag query.
|
||
|
||
:cs[cope] k[ill] #
|
||
|
||
Kill cscope connection number #.
|
||
|
||
:cs[cope] r[eset]
|
||
Kill all attached cscopes. Useful if one got hung but you don't
|
||
know which one.
|
||
|
||
:tagn[ext][!]
|
||
|
||
Move to the next tag resulting from a query.
|
||
|
||
:tagpr[ev][!]
|
||
|
||
Return to the previous tag resulting from a query.
|
||
|
||
:tagp[op], ^T
|
||
|
||
Return to the previous tag group (no change).
|
||
|
||
:tagt[op]
|
||
|
||
Discard all tag groups (no change).
|
||
|
||
Suggested maps:
|
||
|
||
" ^N: move to the next tag
|
||
map ^N :tagnext^M
|
||
" ^P: move to the previous tag
|
||
map ^P :tagprev^M
|
||
|
||
" Tab+letter performs a C-Scope query on the current word.
|
||
" C-Scope 12.9 has a text-string query (type t).
|
||
" C-Scope 13.3 replaces it with an assignment query; hence a==t.
|
||
map <tab>a "tye:csc find t"t
|
||
map <tab>c "tye:csc find c"t
|
||
map <tab>d "tye:csc find d"t
|
||
map <tab>e "tye:csc find e"t
|
||
map <tab>f "tye:csc find f"t
|
||
map <tab>g "tye:csc find g"t
|
||
map <tab>i "tye:csc find i"t
|
||
map <tab>s "tye:csc find s"t
|
||
map <tab>t "tye:csc find t"t
|
||
|
||
To start nvi with an initial set of cscope directories, use the environment
|
||
variable CSCOPE_DIRS. This variable should contain a <blank>-separated
|
||
list of directories containing cscope databases. (This MAY be changed to
|
||
be an edit option, I haven't really decided, yet.)
|
||
|
||
Each cscope directory must contain a file named "cscope.out" which is the
|
||
main cscope database, or nvi will not attempt to connect to a cscope to
|
||
handle requests for that database.
|
||
|
||
The file "cscope.tpath" may contain a colon-separated directory search
|
||
path which will be used to find the files reported by cscope. If this
|
||
cscope.tpath does not exist, then the paths are assumed to be relative to
|
||
the cscope directory itself. This is an extension to the standard cscope,
|
||
but seems important enough to keep.
|
||
|
||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||
Cscope Availability:
|
||
|
||
UNIXWare System V Release 4.0 variants such as Sun Solaris 2.x
|
||
(/opt/SUNWspro/bin) have version 11.5, and UNIXWare System V
|
||
Release 4.1 has version 12.10 with an option for much faster
|
||
searching.
|
||
|
||
You can buy version 13.3 source with an unrestricted license
|
||
for $400 from AT&T Software Solutions by calling +1-800-462-8146.
|