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

1.7.5 (98-Jan-8):
-----------------
Added sub-flag 'F' for -i option to generate tags for filenames.

Added additional extension flag ("enum:").

Changed pseudo-tags to use a prefix of <Esc> instead of "!_", since the
latter did not always guarantee a sort to the top of the file.

Eliminated output of "type:" extension flag into tag file, with the
assumption that a field without a leading "<flag>:" is considered
"type:".

Corrected problem which caused the class name of a method definition to
propogate to later statements, causing them to get an extension flag of
"class:<class>".

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.


1.7.4 (97-Dec-6):
-----------------
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 additional extension flags ("type:", "struct:").

Changed extension flag separator from comma to tab.

Fixed problem of invalid "class:" extension flag in certain cases.

Updated man page.

Added first draft of new FAQ (Frequently Asked Questions).


1.7.3 (97-Nov-2):
-----------------
Added ability to generate tags for structure and class members (disabled
by default).

Added new sub-flag ('m') to the -i option to support member tags.

Added support for C++ template declarations.

Slight source correction to allow compilation under OS/2.

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

Updated man page.

Removed ANNOUNCE file, consolidating it with the README file.


1.7.2 (97-Oct-29):
-----------------
Corrected option initialization error which caused static tags to be
excluded.


1.7.1 (97-Oct-27):
------------------
Added support for C++.

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

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

Slight source correction to allow compilation under DJGPP.

Updated man page.

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
