learning dragonfly or C...
Max Okumoto
okumoto at home
Thu Nov 11 04:32:24 PST 2004
George Georgalis wrote:
[stuff deleted]
When jumping into a block of code that has functions and
declarations, what is an efficient way to to find those definition
amidst all the includes, paths and Makefiles of the whole tree,
without completely losing your place? (eg I'd like to reference
O_RDONLY and fp_close)
[stuff deleted]
If you use vi as your editor you can navigate code using a
tags file, other editors have similar functionality (for
example emacs uses etags).
% man 1 vi
. ..
-t Start editing at the specified tag. (See ctags(1)).
. ..
. ..
<control-]>
Push a tag reference onto the tag stack. In gtagsmode, if at
the first column of line, locate function references otherwise
function definitions.
<control-^>
Switch to the most recently edited file.
. ..
The following command will open the file containing the function
definition for JobCondPassSig.
% vi -t JobCondPassSig
Or when the cursor is on the first character of a function name,
type <ctrl-]>, this should causes the editor to open the file
containing the definition of the function. Typing <ctrl-6> will
return you to the previous file and location.
The tags file is created by running ctags on your source files.
There is also a target in Makefiles that includes 'bsd.prog.mk'
or 'bsd.lib.mk' called ctags.
% cd /usr/src/usr.bin/make
% setenv CTAGS ctags
% make tags
Duplicate entry in file job.c, line 243: MESSAGE
Second entry ignored
Duplicate entry in file job.c, line 262: KILL
Second entry ignored
Duplicate entry in file job.c, line 264: KILL
Second entry ignored
Duplicate entry in file targ.c, line 493: PRINTBIT
Second entry ignored
Duplicate entry in file targ.c, line 494: PRINTDBIT
Second entry ignored
takai.home-2924% vi -t JobCondPassSig
If you are interested in the kernel source then there is a
target in /usr/src/sys/i386/Makefile which will create a tags
file for the whole kernel.
Max
More information about the Kernel
mailing list