help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: OT:cscope/tags


From: Perry Smith
Subject: Re: OT:cscope/tags
Date: Tue, 5 Dec 2006 18:31:53 -0600

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 inverted

Just 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'm happy to share it but 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 the time, there was a lot of other things that were inherited besides just the 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 of variables. This keeps the lisp code simpler -- I was more comfortable writing shell
scripts than lisp code at the time.

I create the cscope database via make. The makefile creates a list of files 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 list of files.)

From emacs, I call cscope-front (using my cscope.el routines). As you can see, the script
has 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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]