|
From: | Perry Smith |
Subject: | Re: OT:cscope/tags |
Date: | Tue, 5 Dec 2006 21:19:22 -0600 |
On Dec 5, 2006, at 7:32 PM, Hadron Quark wrote:
Perry Smith <pedz@easesoftware.com> writes:On Dec 5, 2006, at 4:39 PM, Hadron Quark wrote:Perry Smith <pedz@easesoftware.com> writes:cscope. To make the db I use -q. To invoke it via emacs, I use -q and -d: -d Do not update the cross-reference. -q Enable fast symbol lookup via an invertedJust for thread completeness, how do you add these options when inviking cscope from emacs? How are you accessing cscope from emacs? Which el package do you use?Well, its a long story. I created my own cscope.el back in 1990. I'mhappy to share itbut it has lots of weird twisted gunk in it. I have the concept of an"inherited buffer". Each buffer has a buffer local variable that points back to its inherited buffer. In this way, different buffers can use different cscope's and not get confused between them. At theCan you expand on this? I dont understand.
I was working on debugging the entire OS. Once at Tandem, the other at IBM. At the time, it was not practical to have one cscope database for the entire OS. So I had separate cscope files for the particular areas I would be working in. So if I was editing a group of files down the path /a/b/c/d which had a cscope database in d, then all the files in d would point back to the cscope buffer using the database in d. At the same time, I might be editing and looking at files down the path /u/v/w/x which would have its own separate cscope db. All the files in x would point back to the cscope buffer using the db in x. I could look at various things in separate files and do symbol lookups, etc. There was also the problem of various build versions of the OS. Again, I could have separate db's in the various directories so foodog.h from build 1 would look at the cscope db file from build 1 while foodog.h from build 2 would look at the cscope db from build 2. This is also where I had "inherited" buffer local variables. So if I did a make in foodog.h of build 1, it
would use the proper commands for build level 1.
Did you try xcscope previously referenced? With auto database update turned off, it works great.
I like what I have very much except that cscope does not actually truly understand C++ so it can not really find me all the references to a particular method of a particular class.
time, there was a lot of other things that were inherited besides justthe cscope information (like build information and that sort of thing). I also have a script called cscope-front (I've appended it to the bottom). I doubt if it will do you much good either except just as a thought of calling cscope via a script and then that script can add and subtract arguments based upon a number ofvariables. This keeps the lisp code simpler -- I was more comfortablewriting shell scripts than lisp code at the time.I create the cscope database via make. The makefile creates a list offiles called cscope.files, (usually based upon various make variables), then it calls cscope as: cscope -q -b(The cscope I'm using defaults to looking in cscope.files for the listof files.)From emacs, I call cscope-front (using my cscope.el routines). As youcan see, the scripthas debug output to /tmp/doggy. Here are some sample lines from doggy:/home/pedz/Eclipse/SATA/src a='' p='/home/pedz/Eclipse/SATA/src' /usr/local/bin/cscope -d -q -l -P /home/pedz/Eclipse/SATA/src -f cscope.out The last line is all the args I use to call cscope with. Hopefully, something in here will be useful to you. #!/usr/local/bin/bash # # First arg is the string to pass to setup, second arg is the # directory where the cscope should behave from # a=$1 p=$( echo $2 | sed -e 's%/$%%' ) CSCOPE=/usr/local/bin/cscope shift shift /bin/pwd >> /tmp/doggy echo "a='$a' p='$p'" >> /tmp/doggy if [ -n "$a" ] ; then source ~/.setup $a fi # # DFS permissions are weird and I can execute things even though the # file system says I can not. So I only check to see if the file # exists or not. # if [ -e cscope/bin/cscope ] ; then CSCOPE=cscope/bin/cscope elif [ -e ../cscope/bin/cscope ] ; then CSCOPE=../cscope/bin/cscope elif [ -e ../../cscope/bin/cscope ] ; then CSCOPE=../../cscope/bin/cscope fi echo $CSCOPE -d -q -l -P "$p" "$@" >> /tmp/doggy exec $CSCOPE -d -q -l -P "$p" "$@" 2>>/tmp/doggy # echo $CSCOPE -q -l -P "'$p'" "$@" >> /tmp/doggy # exec $CSCOPE -q -l -P "'$p'" "$@" 2>> /tmp/doggy # echo $CSCOPE -q -l >> /tmp/doggy # $CSCOPE -q -l 2>> /tmp/doggy # /afs/austin/aix/project/aix41C/cscope/bin/cscope -d -q -l \ # -f /afs/austin/aix/project/aix41C/cscope/bos.db # # -P /afs/austin/aix/project/aix41C/build/base-- _______________________________________________ help-gnu-emacs mailing list help-gnu-emacs@gnu.org http://lists.gnu.org/mailman/listinfo/help-gnu-emacs
Perry Smith ( pedz@easesoftware.com ) Ease Software, Inc. ( http://www.easesoftware.com ) Low cost SATA Disk Systems for IBMs p5, pSeries, and RS/6000 AIX systems
[Prev in Thread] | Current Thread | [Next in Thread] |