There are editing commands to operate on them.
* Grinding:: Adjusting indentation to show the nesting.
* Matching:: Insertion of a close-delimiter flashes matching open.
-* Comments:: Inserting, illing and aligning comments.
+* Comments:: Inserting, filling and aligning comments.
* Balanced Editing:: Inserting two matching parentheses at once, etc.
* Lisp Completion:: Completion on symbol names in Lisp code.
* Documentation:: Getting documentation of functions you plan to call.
global variables, data types, and anything else convenient. Each name
recorded is called a @dfn{tag}.
+@cindex C++ class browser, tags
+@cindex tags, C++
+@cindex class browser, C++
+@cindex Ebrowse
+The Ebrowse is a separate facility tailored for C++, with tags and a
+class browser. @xref{,,, ebrowse, Ebrowse User's Manual}.
+
@menu
* Tag Syntax:: Tag syntax for various types of code and text files.
* Create Tags Table:: Creating a tags table with @code{etags}.
* List Tags:: Listing and finding tags defined in a file.
@end menu
-@node Tag Syntax, Create Tags Table, Tags, Tags
+@node Tag Syntax
@subsection Source File Tag Syntax
Here is how tag syntax is defined for the most popular languages:
tag.@refill
Other commands can make tags as well, if you specify them in the
-environment variable @code{TEXTAGS} before invoking @code{etags}. The
+environment variable @env{TEXTAGS} before invoking @code{etags}. The
value of this environment variable should be a colon-separated list of
command names. For example,
@item
In Ada code, functions, procedures, packages, tasks, and types are
-tags. Use the @samp{--packages-only} option to create tags for packages
-only.
+tags. Use the @samp{--packages-only} option to create tags for
+packages only.
+
+With Ada, it is possible to have the same name used for different
+entity kinds (e.g.@: the same name for a procedure and a function). Also,
+for things like packages, procedures and functions, there is the spec
+(i.e.@: the interface) and the body (i.e.@: the implementation). To
+facilitate the choice to the user, a tag value is appended with a
+qualifier:
+
+@table @asis
+@item function
+ @kbd{/f}
+@item procedure
+ @kbd{/p}
+@item package spec
+ @kbd{/s}
+@item package body
+ @kbd{/b}
+@item type
+ @kbd{/t}
+@item task
+ @kbd{/k}
+@end table
+
+So, as an example, @kbd{M-x find-tag bidule/b} will go directly to the
+body of the package @var{bidule} while @kbd{M-x find-tag bidule} will
+just search for any tag @var{bidule}.
@item
In assembler code, labels appearing at the beginning of a line,
In Fortran code, functions, subroutines and blockdata are tags.
@item
+In makefiles, targets are tags.
+
+@item
In Objective C code, tags include Objective C definitions for classes,
class categories, methods, and protocols.
to tag global variables.
@item
-In Postscript code, the tags are the functions.
+In PostScript code, the tags are the functions.
@item
In Prolog code, a tag name appears at the left margin.
generate a tag.
@end itemize
- You can also generate tags based on regexp matching
-(@pxref{Etags Regexps}) to handle other formats and languages.
+ You can also generate tags based on regexp matching (@pxref{Etags
+Regexps}) to handle other formats and languages.
-@node Create Tags Table, Etags Regexps, Tag Syntax, Tags
+@node Create Tags Table
@subsection Creating Tags Tables
@cindex @code{etags} program
a list of all the available @code{etags} options, together with a short
explanation.
-@node Etags Regexps, Select Tags Table, Create Tags Table, Tags
+@node Etags Regexps
@subsection Etags Regexps
The @samp{--regex} option provides a general way of recognizing tags