Node:etags, Next:Regexp Review, Previous:forward-paragraph, Up:Regexp Search
TAGS
FileThe M-. (find-tag
) command takes you directly to the
source for a function, variable, node, or other source. The function
depends on tags tables to tell it where to go.
You often need to build and install tags tables yourself. They are
not built automatically. A tags table is called a TAGS
file;
the name is in upper case letters.
You can create a TAGS
file by calling the etags
program
that comes as a part of the Emacs distribution. Usually, etags
is compiled and installed when Emacs is built. (etags
is not
an Emacs Lisp function or a part of Emacs; it is a C program.)
To create a TAGS
file, first switch to the directory in which
you want to create the file. In Emacs you can do this with the
M-x cd command, or by visiting a file in the directory, or by
listing the directory with C-x d (dired
). Then run the
compile command, with etags *.el
as the command to execute
M-x compile RET etags *.el RET
to create a TAGS
file.
For example, if you have a large number of files in your
~/emacs
directory, as I do--I have 137 .el
files in it,
of which I load 12--you can create a TAGS
file for the Emacs
Lisp files in that directory.
The etags
program takes all the
usual shell `wildcards'. For example, if you have two directories for
which you want a single TAGS file
, type
etags *.el ../elisp/*.el
,
where ../elisp/
is the second directory:
M-x compile RET etags *.el ../elisp/*.el RET
Type
M-x compile RET etags --help RET
to see a list of the options accepted by etags
as well as a
list of supported languages.
The etags
program handles more than 20 languages, including
Emacs Lisp, Common Lisp, Scheme, C, C++, Ada, Fortran, Java, LaTeX,
Pascal, Perl, Python, Texinfo, makefiles, and most assemblers. The
program has no switches for specifying the language; it recognizes the
language in an input file according to its file name and contents.
etags
is very helpful when you are writing code yourself and
want to refer back to functions you have already written. Just run
etags
again at intervals as you write new functions, so they
become part of the TAGS
file.
If you think an appropriate TAGS
file already exists for what
you want, but do not know where it is, you can use the locate
program to attempt to find it.
Type M-x locate RET TAGS RET and Emacs will list for you the
full path names of all your TAGS
files. On my system, this
command lists 34 TAGS
files. On the other hand, a `plain
vanilla' system I recently installed did not contain any TAGS
files.
If the tags table you want has been created, you can use the M-x
visit-tags-table
command to specify it. Otherwise, you will need to
create the tag table yourself and then use M-x
visit-tags-table
.
The GNU Emacs sources come with a Makefile
that contains a
sophisticated etags
command that creates, collects, and merges
tags tables from all over the Emacs sources and puts the information
into one TAGS
file in the src/
directory below the top
level of your Emacs source directory.
To build this TAGS
file, go to the top level of your Emacs
source directory and run the compile command make tags
:
M-x compile RET make tags RET
(The make tags
command works well with the GNU Emacs sources,
as well as with some other source packages.)
For more information, see Tags.