Exuberant Ctags
===============

2.0.2 (98-Feb-25):
------------------
Cleanup of types which generated compiler warnings on some systems.

Added stripping of installed binary for "install" target.


2.0.1 (98-Feb-19):
------------------
Added support for C++.

Added ability to include tags for each source file to allow jumping to a
source file via ":tag file.c". This is enabled with the "-iF" option.

Added ability to generate tags for class, structure, and union members
(disabled by default).

Added several sub-flags to the -i option, to allow finer specification
of which types of tags to include/exclude.

Ctags now outputs a new extended format for tag files which is backwards
compatible with existing Vi implementations, yet provides extended
information which can be used by supporting editors. This new format
can be disabled via a new --format option. A new configure option
(--disable-extended-format) has been added to allow building ctags with
the extended format disabled by default.

Added configure option (--enable-macro-patterns) to make default
behavior generate patterns instead of line numbers for macro (define)
tags.

Removed support for the -d, -t and -T options which had been deprecated
for some time.

Corrected problem which prevented the use of / as a path separator under
MSDOS and Win 95/NT.

Added code to forever banish the appearance of blank lines in the tag
file, even when none of truncate(), ftruncate() and chsize() were found.

Changed configure option --enable-internal-sort to --disable-external-sort.

Added code to detect declarations within parentheses.

Corrected failure to generate tags for objects within extern "C" blocks.

Corrected problem in source file counts when using --totals option.

Improved detection of macros of the type generated by Microsoft Visual C
when generating source code. These caused subsequent statements to fail
to have tags generated for them. Still not bullet proof, though.

Added explicit suppression of special gcc construct __attribute((..)),
which could lead to incorrect tag generation.

Extended length of tag type field in xref output (-x) to be more verbose.

Removed ANNOUNCE file, consolidating it with the README file.

Corrected option initialization error which caused static tags to be
excluded.

Added ".hh" extension to the default list of files recognized as header
files.

New makefile for OS/2.


1.7 (97-Oct-13):
----------------
Added support for extension flags and documentation pseudo-tags in tag
file (see man page).

Added support for new long options: --excmd, --format, --if0, --sort,
--totals, and --version.

Revamped preprocessor conditional handling algorithm to correct a couple
of deficiencies. You might find that it now rejects a few tags which had
been included previously (e.g within a conditional within a function
block).

Code within an #if 0 is never scanned for non-macro tags (since tags
within that code could conceivably be overridden by more desirable tags
in the #else branch to follow; macro tags are always included). If you
do not like this default behavior, use the --if0=yes option. I agree
that the default setting is arguable. If people really prefer, I can
change the default. Corrected problem which could leave invalid tag
entries in tag file when an internal re-scan of a source file occurred.

Corrected problem with internal sort mechanism when appending tags to
existing file.

Filter out duplicate identical tags lines (including pattern) in
external sorting unless warnings for duplicate tags are enabled.

Added data to emacs style tag entries to more closely match that
produced by the GNU etags.

Removed fixed limits on maximum tag line length.

Correction to Amiga makefile.

Improvements to Win32 portability with changes to Makefile.w32.


1.6 (97-May-13):
----------------

Implemented GNU autoconf to permit automatic host configuration.

Split source code into several smaller modules and functions into
smaller pieces for easier development.

Added support for Emacs style tag files via the -e option and an ETAGS
environment variable.

Added -p option to supply a default path for source files. This is
primarily useful in makefiles.

Removed code which translated form feed and vertical tab characters into
newlines, since this is not the right thing to do and generates wrong
line numbers in the tag file.

Added additional intelligence for parsing of contents within
parentheses. This also corrects problems encountered when ignoring
identifiers followed by a parameter list.

Changed the search patterns generated for #define macros when using -N
option to terminate the pattern with the character following the name
(or "$" if end of line) instead of the "\>" used previously. Some
editors did not support this metacharacter for tag searches.

Removed -u (unique) flag from sort command line invocation to retain
exactly indentical tag patterns in the same file. This is in preparation
for editor support of duplicate tags.

Added simple check to ignore a macro invocation outside of a function
block, where it appears as if it were a function definition which never
ends.

Fixed problem of no tag generated for typedef for function or function
pointer.

Fixed problem of losing sync for strange function declarations (e.g.
"foo(params) saywhat (void);") and when calling macros outside of a
function block. These resulted in no non-macro tags generated beyond
such a line.


1.5 (96-Oct-5):
---------------
Added the ability to specify keywords to ignore on the command line.
**Note: the syntax of the -I option has changed.

Added ability to generate tags for objects inside C++ extern blocks
('extern "C" {...}' construct).

Allowed function definitions to be recognized inside brace-enclosed
("{}") blocks, since theses are allowed inside classes and extern blocks.

Added 'N' option to provide opposite effect of 'n'. The search patterns
for macro definitions are optimized to work even when portions of the
definition line beyond the macro name are changed.

Fixed problem that resulted in no tag generated for files containing a
function-like macro, such as 'MODULE_ID("$Id")', even when ignoring the
keyword. This also corrected a problem that caused tags to be missed for
initialized function pointer definitions.

Redirected error output to stdout for MSDOS version.

Various portability changes.

Updated man page to reflect new features.


1.4 (96-Aug-18):
----------------

Updated man page to reflect new features.

Added ability to recursively parse into class/struct/enum blocks to look
for class/struct/enum tags and enumeration values.

Added -I option to allow a specified list of tokens to be ignored while
parsing the file. This is particularly useful when prototyping macros
appear before the parameter list.

Corrected problem where declaring a pointer const or volatile resulted
in no tag being generated.

Correction to bug causing a function tag to be generated for comma
terminated function declarations.

Various portability changes.


1.3 (96-Jun-16):
----------------

Updated man page.

Corrected problem causing "struct tag;" to be misinterpreted as a variable
definition.

Added -n option to place line numbers into tag file instead of patterns.

Added -? option as synonym for --help.

Couple of other minor cleanup items.


1.2 (96-Jun-5):
---------------

Corrected problem with uninitialized variable introduced in the 1.1 change.

Updated other files to reflect this bug fix.


1.1 (96-Jun-4):
---------------

Corrected bug in reading of header extension list for -h option.

Updated and corrected ANNOUNCE and ctags.lsm files.


1.0a (96-Jun-3):
----------------

Tiny modification to ctags.c and README to add package name.

Slight additions to man page.

Added ctags.lsm to package, an LSM file used for the Linux Software Map.

vim:tw=72
