Brought web site and win32 build directory into CVS and build process.
git-svn-id: svn://svn.code.sf.net/p/ctags/code/trunk@70 c5d04d22-be80-434c-894e-aa346cc9e8e8
This commit is contained in:
parent
4fc3c45b07
commit
080601cde5
|
@ -19,3 +19,4 @@ syntax.vim
|
|||
ctags-[0-9].[0-9]*
|
||||
showtags
|
||||
win32
|
||||
releases
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<!-- $Id$ -->
|
||||
<html>
|
||||
<head>
|
||||
<title>Exuberant Ctags: Adding a new parser</title>
|
||||
|
|
|
@ -43,11 +43,11 @@ REDIR = 2>&1 | tee $(ERRFILE)
|
|||
|
||||
RPM_ROOT= $(HOME)/Rpm
|
||||
CTAGS_DOSDIR = win32
|
||||
WEB_ARCHIVE_DIR = $(HOME)/public_html/archives
|
||||
WEB_CTAGS_DIR = $(HOME)/public_html/ctags
|
||||
WEB_ARCHIVE_DIR = releases
|
||||
CTAGS_WEBSITE = website
|
||||
DEP_DIR = .deps
|
||||
|
||||
CC = gcc
|
||||
CC = gcc3
|
||||
INCLUDE = -I.
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
COMP_FLAGS = $(INCLUDE) $(DEFS) $(CFLAGS)
|
||||
|
@ -198,6 +198,38 @@ cvs-tagcheck-%:
|
|||
cvs-files:
|
||||
@ls -1 $(CVS_FILES)
|
||||
|
||||
#
|
||||
# Web site files
|
||||
#
|
||||
website-%: website-man-% website-index-% $(CTAGS_WEBSITE)/news.html \
|
||||
$(CTAGS_WEBSITE)/EXTENDING.html
|
||||
:
|
||||
|
||||
website-man-%: ctags.1 Makefile
|
||||
@ echo "---------- Generating $(CTAGS_WEBSITE)/ctags.html"
|
||||
man2html $< | sed -e "s/@@VERSION@@/$*/g" \
|
||||
-e 's%<A HREF="mailto:[^"]*">\([^@]*\)@\([^<]*\)</A>%\1\@\2%' \
|
||||
> $(CTAGS_WEBSITE)/ctags.html
|
||||
|
||||
website-index-%: index.html Makefile
|
||||
@ echo "---------- Generating $(CTAGS_WEBSITE)/index.html"
|
||||
sed -e "s/@@VERSION@@/$*/g" \
|
||||
-e "s/@@DOS_VERSION@@/`echo $* | sed 's/\.//g'`/g" \
|
||||
-e "s/@@DATE@@/`date +'%d %B %Y'`/" \
|
||||
$< > $(CTAGS_WEBSITE)/index.html
|
||||
|
||||
$(CTAGS_WEBSITE)/EXTENDING.html: EXTENDING.html
|
||||
@ echo "---------- Generating $(CTAGS_WEBSITE)/EXTENDING.html"
|
||||
ln -s ../$< $@
|
||||
|
||||
$(CTAGS_WEBSITE)/news.html: NEWS Makefile
|
||||
@ echo "---------- Generating $(CTAGS_WEBSITE)/news.html"
|
||||
sed -e 's/</\</g' -e 's/>/\>/g' \
|
||||
-e 's@^Current Version:.*$$@<html><head><title>Exuberant Ctags: Change Notes</title></head><body><h1>Change Notes</h1><pre>@' \
|
||||
-e 's@\(^ctags-.* (.*)\)$$@<b>\1</b>@' \
|
||||
-e 's@^vim:.*$$@</pre><hr><a href="http:index.html">Back to <strong>Exuberant Ctags</strong></a></body></html>@' \
|
||||
$< > $@
|
||||
|
||||
#
|
||||
# Release management
|
||||
#
|
||||
|
@ -237,7 +269,8 @@ dos1-%: $(DOS_FILES)
|
|||
done
|
||||
cd $(CTAGS_DOSDIR); mv makefile makefile.bak; \
|
||||
sed -e 's/^\(VERSION = \).*$$/\1$*
|
||||
/' makefile.bak > makefile
|
||||
/' makefile.bak > makefile ;\
|
||||
rm makefile.bak
|
||||
|
||||
dos2-%: $(DOS_VER_FILES)
|
||||
for file in $^ ;do \
|
||||
|
@ -260,7 +293,7 @@ rpm-%: ctags-%.tar.gz ctags.spec $(RPM_ROOT)/SOURCES $(RPM_ROOT)/SPECS
|
|||
@ echo "---------- Building RPM"
|
||||
cp -p ctags-$*.tar.gz $(RPM_ROOT)/SOURCES/
|
||||
sed -e "s/@@VERSION@@/$*/" ctags.spec > $(RPM_ROOT)/SPECS/ctags-$*.spec
|
||||
(cd $(RPM_ROOT)/SPECS; rpm -ba ctags-$*.spec)
|
||||
(cd $(RPM_ROOT)/SPECS; CC=gcc3 rpm -ba ctags-$*.spec)
|
||||
rm -fr $(RPM_ROOT)/BUILD/ctags-$*
|
||||
|
||||
ctags32-%: ctags-%.tar.gz
|
||||
|
@ -283,11 +316,9 @@ cleanrelease-%:
|
|||
rm -f $(RPM_ROOT)/SRPMS/ctags-$*-1.src.rpm
|
||||
rm -f $(RPM_ROOT)/SPECS/ctags-$*.spec
|
||||
|
||||
internal-release-%: ctags-%.tar.gz ctags-%.tar.Z dos-% rpm-%
|
||||
internal-release-%: ctags-%.tar.gz ctags-%.tar.Z dos-% rpm-% website-%
|
||||
@ echo "---------- Copying files to web archive"
|
||||
cp -p ctags-$*.tar.* $(WEB_ARCHIVE_DIR)
|
||||
cp -p EXTENDING.html $(WEB_CTAGS_DIR)
|
||||
cp -p ctags-$*/ctags.html $(WEB_CTAGS_DIR)/ctags.html
|
||||
cp -p $(RPM_ROOT)/RPMS/i386/ctags-$*-1.i386.rpm $(WEB_ARCHIVE_DIR)
|
||||
cp -p $(RPM_ROOT)/SRPMS/ctags-$*-1.src.rpm $(WEB_ARCHIVE_DIR)
|
||||
cp -p ctags-$*/ctags.lsm $(WEB_ARCHIVE_DIR)/ctags-$*.lsm
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
index.html
|
||||
news.html
|
||||
ctags.html
|
||||
|
|
|
@ -1,338 +0,0 @@
|
|||
<!-- $Id$ -->
|
||||
<html>
|
||||
<head>
|
||||
<title>Exuberant Ctags: Adding a new parser</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>How to Add a New Parser to Exuberant Ctags</h1>
|
||||
|
||||
<b>Exuberant Ctags</b> has been designed to make it very easy to add your own
|
||||
custom language parser.
|
||||
|
||||
<h2>Operational background</h2>
|
||||
As ctags considers each file name, it tries to determine the language of the
|
||||
file by applying the following three tests in order: if the file extension has
|
||||
been mapped to a language, if the file name matches a shell pattern mapped to
|
||||
a language, and finally if the file is executable and its first line specifies
|
||||
an interpreter using the Unix-style "#!" specification (if supported on the
|
||||
platform). If a language was identified, the file is opened and then the
|
||||
appropriate language parser is called to operate on the currently open file.
|
||||
The parser parses through the file and whenever it finds some interesting
|
||||
token, calls a function to define a tag entry.
|
||||
|
||||
<h2>Integrating a new parser</h2>
|
||||
|
||||
Let's assume that I want to add support for my new language, <em>Swine</em>,
|
||||
the successor to Perl (i.e. Perl before Swine <wince>).
|
||||
|
||||
<p>
|
||||
First, I create a new module, <code>swine.c</code>, and add one externally
|
||||
visible function to it, <code>extern parserDefinition *SwineParser(void)</code>,
|
||||
and add its name to the table in <code>parsers.h</code>. The job of this
|
||||
parser definition function is to create an instance of the
|
||||
<code>parserDefinition</code> structure (using <code>parserNew()</code>) and
|
||||
populate it with information defining how files of this language are
|
||||
recognized, what kinds of tags it can locate, and the function used to invoke
|
||||
the parser on the currently open file.
|
||||
|
||||
<p>
|
||||
The structure <code>parserDefinition</code> allows assignment of the following
|
||||
fields:
|
||||
|
||||
<pre>
|
||||
<code>
|
||||
const char *name; /* name of language */
|
||||
kindOption *kinds; /* tag kinds handled by parser */
|
||||
unsigned int kindCount; /* size of `kinds' list */
|
||||
const char *const *extensions; /* list of default extensions */
|
||||
const char *const *patterns; /* list of default file name patterns */
|
||||
parserInitialize initialize; /* initialization routine, if needed */
|
||||
simpleParser parser; /* simple parser (common case) */
|
||||
rescanParser parser2; /* rescanning parser (unusual case) */
|
||||
boolean regex; /* is this a regex parser? */
|
||||
</code>
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
The <code>name</code> field must be set to a non-empty string. Also, unless
|
||||
<code>regex</code> is set true (see below), either <code>parser</code> or
|
||||
<code>parser2</code> must set to point to a parsing routine which will
|
||||
generate the tag entries. All other fields are optional.
|
||||
|
||||
<p>
|
||||
Now all that is left is to implement the parser. In order to do its job, the
|
||||
parser should read the file stream using using one of the two I/O interfaces:
|
||||
either the character-oriented <code>fileGetc()</code>, or the line-oriented
|
||||
<code>fileReadLine()</code>. When using <code>fileGetc()</code>, the parser
|
||||
can put back a character using <code>fileUngetc()</code>. How our Swine parser
|
||||
actually parses the contents of the file is entirely up to the writer of the
|
||||
parser--it can be as crude or elegant as desired. You will note a variety of
|
||||
examples from the most complex (c.c) to the simplest (make.c).
|
||||
|
||||
<p>
|
||||
When the Swine parser identifies an interesting token for which it wants to
|
||||
add a tag to the tag file, it should create a <code>tagEntryInfo</code>
|
||||
structure and initialize it by calling <code>initTagEntry()</code>, which
|
||||
initializes defaults and fills information about the current line number and
|
||||
the file position of the beginning of the line. After filling in information
|
||||
defining the current entry (and possibly overriding the file position or other
|
||||
defaults), the parser passes this structure to <code>makeTagEntry()</code>.
|
||||
|
||||
<p>
|
||||
Instead of writing a character-oriented parser, it may be possible to specify
|
||||
regular expressions which define the tags. In this case, instead of defining a
|
||||
parsing function, <code>SwineParser()</code>, sets <code>regex</code> to true,
|
||||
and points <code>initialize</code> to a function which calls
|
||||
<code>addTagRegex()</code> to install the regular expressions which define its
|
||||
tags. The regular expressions thus installed are compared against each line
|
||||
of the input file and generate a specified tag when matched.
|
||||
|
||||
<p>
|
||||
A regex-based parser is inherently line-oriented (i.e. the entire tag must be
|
||||
recognizable from looking at a single line) and context-insensitive (i.e the
|
||||
generation of the tag is entirely based upon when the regular expression
|
||||
matches a single line). However, a regex-based callback mechanism is also
|
||||
available, installed via the function <code>addCallbackRegex()</code>. This
|
||||
allows a specified function to be invoked whenever a specific regular
|
||||
expression is matched. This allows a character-oriented parser to operate
|
||||
based upon context of what happened on a previous line (e.g. the start or end
|
||||
of a multi-line comment). Note that regex callbacks are called just before the
|
||||
first character of that line can is read via either <code>fileGetc()</code> or
|
||||
using <code>fileGetc()</code>. The effect of this is that before either of
|
||||
these routines return, a callback routine may be invoked because the line
|
||||
matched a regex callback. A callback function to be installed is defined by
|
||||
these types:
|
||||
|
||||
<pre>
|
||||
<code>
|
||||
typedef void (*regexCallback) (const char *line, const regexMatch *matches, unsigned int count);
|
||||
|
||||
typedef struct {
|
||||
off_t start; /* character index in line where match starts */
|
||||
size_t length; /* length of match */
|
||||
} regexMatch;
|
||||
</code>
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
The callback function is passed the line matching the regular expression and
|
||||
an array of <code>count</code> structures defining the subexpression matches
|
||||
of the regular expression, starting from \0 (the entire line).
|
||||
|
||||
<p>
|
||||
This is all there is to it. All other details are specific to the parser and
|
||||
how it wants to do its job. There are some support functions which can take
|
||||
care of some commonly needed parsing tasks, such as keyword table lookups (see
|
||||
keyword.c), which you can make use of if desired (examples of its use can be
|
||||
found in c.c, eiffel.c, and fortran.c). Almost everything is already taken care
|
||||
of automatically for you by the infrastructure. Writing the actual parsing
|
||||
algorithm is the hardest part, but is not constrained by any need to conform
|
||||
to anything in ctags other than that mentioned above.
|
||||
|
||||
<p>
|
||||
There are several different approaches used in the parsers inside <b>Exuberant
|
||||
Ctags</b> and you can browse through these as examples of how to go about
|
||||
creating your own.
|
||||
|
||||
<h2>Examples</h2>
|
||||
|
||||
Below you will find several example parsers demonstrating most of the
|
||||
facilities available. These include three alternative implementations
|
||||
of a Swine parser, which generate tags for lines beginning with
|
||||
"<CODE>def</CODE>" followed by some name.
|
||||
|
||||
<pre>
|
||||
/***************************************************************************
|
||||
* swine.c
|
||||
* Character-based parser for Swine definitions
|
||||
**************************************************************************/
|
||||
/* INCLUDE FILES */
|
||||
#include "general.h" /* always include first */
|
||||
|
||||
#include <string.h> /* to declare strxxx() functions */
|
||||
#include <ctype.h> /* to define isxxx() macros */
|
||||
|
||||
#include "parse.h" /* always include */
|
||||
#include "read.h" /* to define file fileReadLine() */
|
||||
|
||||
/* DATA DEFINITIONS */
|
||||
typedef enum eSwineKinds {
|
||||
K_DEFINE
|
||||
} swineKind;
|
||||
|
||||
static kindOption SwineKinds [] = {
|
||||
{ TRUE, 'd', "definition", "pig definition" }
|
||||
};
|
||||
|
||||
/* FUNCTION DEFINITIONS */
|
||||
|
||||
static void findSwineTags (void)
|
||||
{
|
||||
vString *name = vStringNew ();
|
||||
const unsigned char *line;
|
||||
|
||||
while ((line = fileReadLine ()) != NULL)
|
||||
{
|
||||
/* Look for a line beginning with "def" followed by name */
|
||||
if (strncmp ((const char*) line, "def", (size_t) 3) == 0 &&
|
||||
isspace ((int) line [3]))
|
||||
{
|
||||
const unsigned char *cp = line + 4;
|
||||
while (isspace ((int) *cp))
|
||||
++cp;
|
||||
while (isalnum ((int) *cp) || *cp == '_')
|
||||
{
|
||||
vStringPut (name, (int) *cp);
|
||||
++cp;
|
||||
}
|
||||
vStringTerminate (name);
|
||||
makeSimpleTag (name, SwineKinds, K_DEFINE);
|
||||
vStringClear (name);
|
||||
}
|
||||
}
|
||||
vStringDelete (name);
|
||||
}
|
||||
|
||||
/* Create parser definition stucture */
|
||||
extern parserDefinition* SwineParser (void)
|
||||
{
|
||||
static const char *const extensions [] = { "swn", NULL };
|
||||
parserDefinition* def = parserNew ("Swine");
|
||||
def->kinds = SwineKinds;
|
||||
def->kindCount = KIND_COUNT (SwineKinds);
|
||||
def->extensions = extensions;
|
||||
def->parser = findSwineTags;
|
||||
return def;
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
<pre>
|
||||
/***************************************************************************
|
||||
* swine.c
|
||||
* Regex-based parser for Swine
|
||||
**************************************************************************/
|
||||
/* INCLUDE FILES */
|
||||
#include "general.h" /* always include first */
|
||||
#include "parse.h" /* always include */
|
||||
|
||||
/* FUNCTION DEFINITIONS */
|
||||
|
||||
static void installSwineRegex (const langType language)
|
||||
{
|
||||
addTagRegex (language, "^def[ \t]*([A-Z0-9_]+)", "\\1", "d,definition", NULL);
|
||||
}
|
||||
|
||||
/* Create parser definition stucture */
|
||||
extern parserDefinition* SwineParser (void)
|
||||
{
|
||||
static const char *const extensions [] = { "swn", NULL };
|
||||
parserDefinition* def = parserNew ("Swine");
|
||||
parserDefinition* const def = parserNew ("Makefile");
|
||||
def->patterns = patterns;
|
||||
def->extensions = extensions;
|
||||
def->initialize = installMakefileRegex;
|
||||
def->regex = TRUE;
|
||||
return def;
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
<pre>
|
||||
/***************************************************************************
|
||||
* swine.c
|
||||
* Regex callback-based parser for Swine definitions
|
||||
**************************************************************************/
|
||||
/* INCLUDE FILES */
|
||||
#include "general.h" /* always include first */
|
||||
|
||||
#include "parse.h" /* always include */
|
||||
#include "read.h" /* to define file fileReadLine() */
|
||||
|
||||
/* DATA DEFINITIONS */
|
||||
typedef enum eSwineKinds {
|
||||
K_DEFINE
|
||||
} swineKind;
|
||||
|
||||
static kindOption SwineKinds [] = {
|
||||
{ TRUE, 'd', "definition", "pig definition" }
|
||||
};
|
||||
|
||||
/* FUNCTION DEFINITIONS */
|
||||
|
||||
static void definition (const char *const line, const regexMatch *const matches,
|
||||
const unsigned int count)
|
||||
{
|
||||
if (count > 1) /* should always be true per regex */
|
||||
{
|
||||
vString *const name = vStringNew ();
|
||||
vStringNCopyS (name, matches [1].start, matches [1].length);
|
||||
makeSimpleTag (name, SwineKinds, K_DEFINE);
|
||||
}
|
||||
}
|
||||
|
||||
static void findSwineTags (void)
|
||||
{
|
||||
while (fileReadLine () != NULL)
|
||||
; /* don't need to do anything here since callback is sufficient */
|
||||
}
|
||||
|
||||
static void installSwine (const langType language)
|
||||
{
|
||||
addCallbackRegex (language, "^def +([a-zA-Z0-9_]+)", NULL, definition);
|
||||
}
|
||||
|
||||
/* Create parser definition stucture */
|
||||
extern parserDefinition* SwineParser (void)
|
||||
{
|
||||
static const char *const extensions [] = { "swn", NULL };
|
||||
parserDefinition* def = parserNew ("Swine");
|
||||
def->kinds = SwineKinds;
|
||||
def->kindCount = KIND_COUNT (SwineKinds);
|
||||
def->extensions = extensions;
|
||||
def->parser = findSwineTags;
|
||||
def->initialize = installSwine;
|
||||
return def;
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
<pre>
|
||||
/***************************************************************************
|
||||
* make.c
|
||||
* Regex-based parser for makefile macros
|
||||
**************************************************************************/
|
||||
/* INCLUDE FILES */
|
||||
#include "general.h" /* always include first */
|
||||
#include "parse.h" /* always include */
|
||||
|
||||
/* FUNCTION DEFINITIONS */
|
||||
|
||||
static void installMakefileRegex (const langType language)
|
||||
{
|
||||
addTagRegex (language, "(^|[ \t])([A-Z0-9_]+)[ \t]*:?=", "\\2", "m,macro", "i");
|
||||
}
|
||||
|
||||
/* Create parser definition stucture */
|
||||
extern parserDefinition* MakefileParser (void)
|
||||
{
|
||||
static const char *const patterns [] = { "[Mm]akefile", NULL };
|
||||
static const char *const extensions [] = { "mak", NULL };
|
||||
parserDefinition* const def = parserNew ("Makefile");
|
||||
def->patterns = patterns;
|
||||
def->extensions = extensions;
|
||||
def->initialize = installMakefileRegex;
|
||||
def->regex = TRUE;
|
||||
return def;
|
||||
}
|
||||
</pre>
|
||||
|
||||
<hr>
|
||||
<a href="http:index.html">
|
||||
<img align=left border=0 src="http:../images/return.gif" alt="Return">
|
||||
Back to <strong>Exuberant Ctags</strong>
|
||||
</a>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,226 +0,0 @@
|
|||
<!-- $Id$ -->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.03 [en] (X11; I; Linux 2.0.1.31 i586) [Netscape]">
|
||||
<META NAME="author" CONTENT="Darren Hiebert">
|
||||
<META NAME="description" CONTENT="Distribution site for Exuberant Ctags.">
|
||||
<META NAME="keywords" CONTENT="Darren Hiebert Exuberant Ctags">
|
||||
<TITLE>Exuberant Ctags</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#B0B0B0" TEXT="#000000" ALINK="#0000FF" VLINK="#551A8B">
|
||||
|
||||
<CENTER>
|
||||
<H1>
|
||||
<FONT COLOR="#00FFFF"><FONT SIZE="+4">EXUBERANT CTAGS</FONT></FONT></H1></CENTER>
|
||||
|
||||
<HR>
|
||||
<H2>
|
||||
A multilanguage implementation of CTAGS by Darren Hiebert<SUP>®</SUP></H2>
|
||||
<!--
|
||||
<A HREF="http://work.ucsd.edu:5141/cgi-bin/http_webster?exuberant"><STRONG>ex·u·ber·ant</STRONG>
|
||||
-->
|
||||
<FORM method=post action="http://www.m-w.com/cgi-bin/dictionary">
|
||||
<INPUT type=hidden name=va value="exuberant">
|
||||
<A HREF="http://www.m-w.com/cgi-bin/dictionary"><STRONG><INPUT type=submit value="ex·u·ber·ant"></STRONG></A>
|
||||
: produced in extreme abundance
|
||||
: <FONT SIZE=-1>PLENTIFUL</FONT>
|
||||
<STRONG><EM>synonym</EM></STRONG> see <FONT SIZE=-1>PROFUSE</FONT>
|
||||
</FORM>
|
||||
|
||||
<UL>
|
||||
|
||||
<LI>Now used in at least <STRONG>44</FONT></STRONG>
|
||||
<A HREF="countries.html">countries</A>
|
||||
in <b><i>all 7 continents (now including Antarctica!)</i></b>
|
||||
<!-- <FONT COLOR="#FFFF00"> -->
|
||||
<LI>Supports 25 programming languages
|
||||
<LI>Featured in the book,
|
||||
<A HREF="http://www.oreilly.com/catalog/vi6/chapter/ch08.html#ch08_05.htm">
|
||||
<EM>Learning the vi Editor</EM></A>, a title in the
|
||||
<A HREF="http://www.oreilly.com">O'Reilly</A> series
|
||||
|
||||
<LI>Covered in the March 2001 issue of <A HREF="http://www.cuj.com">C++ Users Journal</A>, "Navigating Linux Source Code".
|
||||
|
||||
<LI>Praised in the <A HREF="lg18-wkndmech.html">Weekend Mechanic column</A>
|
||||
of the July 1997 issue of <A HREF="http://www.ssc.com/lg/">Linux Gazette</A>
|
||||
|
||||
<LI>Freely available under the terms of the
|
||||
<A HREF="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</A>.
|
||||
<LI>Included in the
|
||||
<A HREF="http://www.redhat.com">RedHat</A> and
|
||||
<A HREF="http://www.debian.org">Debian</A> Linux distributions
|
||||
|
||||
<LI>Read users' exuberant <A HREF="quotes.html">feedback</A>
|
||||
|
||||
</UL>
|
||||
|
||||
<B>Ctags</B> is hosted by
|
||||
<A href="http://sourceforge.net">
|
||||
<IMG src="http://sourceforge.net/sflogo.php?group_id=6556&type=1"
|
||||
width="88" height="31" border="0" alt="SourceForge Logo"> </A>
|
||||
|
||||
<P>
|
||||
<A HREF="http://sourceforge.net/projects/ctags"><B>Ctags</B> project page at SourceForge</A>
|
||||
<P>
|
||||
|
||||
<HR>
|
||||
<EM><FONT COLOR="#FF0000">NOTE:</FONT></EM>
|
||||
If you are a satisfied user of <B>Exuberant Ctags</B>, please rate it at
|
||||
<A HREF="http://freshmeat.net/rate/2502">Freshmeat</A> and
|
||||
<A HREF="http://www.icewalkers.com/app_vote.php3?id=1032">IceWalkers</A>
|
||||
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<H2>Download</H2>
|
||||
|
||||
<H3>
|
||||
Version 5.2.1 [<EM><FONT COLOR="#FF0000">25 January 2002</FONT></EM>]:
|
||||
</H3>
|
||||
|
||||
<H3><EM>Now supports the following languages:</EM></H3>
|
||||
<BLOCKQUOTE>
|
||||
<H4><EM>Assembler, AWK, ASP, BETA, Bourne/Korn/Zsh Shell, C, C++, COBOL,
|
||||
Eiffel, Fortran, Java, Lisp, Lua, Make, Pascal, Perl, PHP, Python, REXX,
|
||||
Ruby, S-Lang, Scheme, Tcl, Vim, and YACC.</EM>
|
||||
</H4>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<A HREF="news.html">Change Notes</A>
|
||||
<BR>
|
||||
<BR>
|
||||
<TABLE BORDER>
|
||||
<TR>
|
||||
<TD><STRONG>Contents</STRONG></TD>
|
||||
|
||||
<TD><STRONG>Package</STRONG></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD>Source only distribution (gzipped)</TD>
|
||||
|
||||
<TD><A HREF="http://prdownloads.sourceforge.net/ctags/ctags-5.2.1.tar.gz">ctags-5.2.1.tar.gz</A> </TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD>Source only distribution (compressed)</TD>
|
||||
|
||||
<TD><A HREF="http://prdownloads.sourceforge.net/ctags/ctags-5.2.1.tar.Z">ctags-5.2.1.tar.Z</A> </TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD ALIGN=LEFT>Red Hat source RPM</TD>
|
||||
|
||||
<TD><A HREF="http://prdownloads.sourceforge.net/ctags/ctags-5.2.1-1.src.rpm">ctags-5.2.1-1.src.rpm</A> </TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD ALIGN=LEFT>Red Hat 7.2 binary RPM (libc6, 2.1)</TD>
|
||||
|
||||
<TD><A HREF="http://prdownloads.sourceforge.net/ctags/ctags-5.2.1-1.i386.rpm">ctags-5.2.1-1.i386.rpm</A> </TD>
|
||||
</TR>
|
||||
|
||||
<!--
|
||||
<TR>
|
||||
<TD>Source and binary for 16-bit MS-DOS</TD>
|
||||
|
||||
<TD><A HREF="http://prdownloads.sourceforge.net/ctags/ec34-16.zip">ec34-16.zip</A></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD>Source and binary for MS-DOS with DPMI</TD>
|
||||
|
||||
<TD><A HREF="http://prdownloads.sourceforge.net/ctags/ec34-32.zip">ec34-32.zip</A></TD>
|
||||
</TR>
|
||||
-->
|
||||
|
||||
<TR>
|
||||
<TD>Source and binary for Windows 95/NT</TD>
|
||||
|
||||
<TD><A HREF="http://prdownloads.sourceforge.net/ctags/ec521w32.zip">ec521w32.zip</A></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD>Source and binary for OS/2</TD>
|
||||
|
||||
<TD><A HREF="http://prdownloads.sourceforge.net/ctags/ec52os2.zip">ec52os2.zip</A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
<HR>
|
||||
<H2>Information</H2>
|
||||
Q: <A HREF="whatis.html">What is ctags?</A>
|
||||
<BR>
|
||||
Q: <A HREF="desire.html">What makes this implementation of ctags desirable?</A>
|
||||
<BR>
|
||||
Q: <A HREF="tools.html">Which editors and tools support <STRONG>Exuberant Ctags</STRONG>?</A>
|
||||
<BR>
|
||||
Q: <A HREF="extending.html">How do I add a new parser to <STRONG>Exuberant Ctags</STRONG>?</A>
|
||||
<BR>
|
||||
Q: <A HREF="FORMAT">What is the format of tag files produced by <STRONG>Exuberant Ctags</STRONG>?</A>
|
||||
<BR>
|
||||
<BR>
|
||||
<H3>
|
||||
<A HREF="ctags.html">User Manual</A>
|
||||
</H3>
|
||||
<H3>
|
||||
<A HREF="faq.html">Frequently Asked Questions (FAQ)</A>
|
||||
</H3>
|
||||
<H3>
|
||||
<A HREF="http://freshmeat.net/articles/view/149">How to Report Bugs Effectively</A>
|
||||
</H3>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<H2>Support</H2>
|
||||
<TABLE BORDER>
|
||||
<TR>
|
||||
<TD><STRONG>Item</STRONG></TD>
|
||||
|
||||
<TD><STRONG>Description</STRONG></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD>
|
||||
<LI><A HREF="http://lists.sourceforge.net/mailman/listinfo/ctags-announce">Ctags-announce</A> mailing list
|
||||
</TD>
|
||||
<TD>Release announcements for Exuberant Ctags</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD>
|
||||
<LI><A HREF="http://lists.sourceforge.net/mailman/listinfo/ctags-users">Ctags-users</A> mailing list
|
||||
</TD>
|
||||
<TD>Discussions on using Exuberant Ctags</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD>
|
||||
<LI><A HREF="http://sourceforge.net/bugs/?func=addbug&group_id=6556">Submit
|
||||
bug</A>
|
||||
</TD>
|
||||
<TD>Submit a bug report using SourceForge Bug Tracking</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD>
|
||||
<LI><A HREF="http://sourceforge.net/projects/ctags">General</A>
|
||||
</TD>
|
||||
<TD>Full list of support facilities at SourceForge</TD>
|
||||
</TR>
|
||||
|
||||
</TABLE>
|
||||
|
||||
<HR>
|
||||
Darren Hiebert<SUP>®</SUP> is a registered trademark of Darren
|
||||
Hiebert<SUP>®</SUP> and is used here with my own permission
|
||||
|
||||
<HR>
|
||||
<A HREF="http://DarrenHiebert.com">Home</A>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -1,634 +0,0 @@
|
|||
<!-- $Id$ -->
|
||||
<html>
|
||||
<head>
|
||||
<title>Exuberant Ctags: Change Notes</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Change Notes</h1>
|
||||
<pre>
|
||||
|
||||
<b>ctags-5.2.1 (Sun Jan 20 2002)</b>
|
||||
* Portabilitiy fixes [Mingw32].
|
||||
* Added "RCS" and "CVS" to list of directories excluded by default.
|
||||
* Fixed missing tags for function pointers declared const or volatile
|
||||
[C, Bug #503764].
|
||||
|
||||
<b>ctags-5.2 (Sun Dec 23 2001)</b>
|
||||
* Portabilitiy fixes [HP-UX, Solaris, VMS, OS/2].
|
||||
* Made code compilable by a C++ compiler.
|
||||
* Changed reading of option files to ignore blank lines.
|
||||
* Changed and enhanced interface to readtags library (see readtags.h).
|
||||
* Changed from using addLanguageRegex() to addTagRegex() in regex-based
|
||||
parsers.
|
||||
* Added support for Lua language, submitted by Max Ischenko.
|
||||
* Added instructions to man page on using tags with NEdit.
|
||||
* Added setargv.obj to link for wildcard expansion [MSVC].
|
||||
* Added capability to have regex invoke a callback in a regex parser.
|
||||
* Fixed regex tag problem which left newlines in back-references.
|
||||
* Fixed missing class-qualified tags [Eiffel].
|
||||
* Fixed spurious tags for entries in final indexing clause [Eiffel].
|
||||
* Fixed problem with invalid filenames in preprocessor line directives.
|
||||
* Fixed bug parsing scoped variables (e.g. "b:variable") [Vim, Bug #487608].
|
||||
* Fixed problem compiling readtags.c on some hosts.
|
||||
* Fixed memory overwrite problem in readtags library.
|
||||
|
||||
<b>ctags-5.1 (Tue Nov 06 2001)</b>
|
||||
* Changed name of option configuration files for MSDOS, MSWindows, and OS/2.
|
||||
* Changed regex support to enforce REG_NEWLINE. This fixes problem where the
|
||||
newline character was explicity being matched by user patterns [Bug #431477].
|
||||
* Added new public domain library for reading tag files (see readtags.h).
|
||||
* Added support for variables and namespaces, provided by Jay Glanville [Vim].
|
||||
* Added report of non-options in option configuration files and CTAGS
|
||||
environment variable.
|
||||
* Added support for YACC language, submitted by Nick Hibma [YACC].
|
||||
* Added support for Perl packages, submitted by Nick Hibma [Perl].
|
||||
* Added '$' as valid identifier character for DEC C compiler [VMS, Bug #425147].
|
||||
* Added compilation date and time to --version output.
|
||||
* Added configure check for HP-UX to determine if ANSI options needed [HP-UX].
|
||||
* Removed tags for forward class/struct declarations [C/C++, Bug #432563].
|
||||
* Eliminated ;" separator from end of tag line when no extension fields are
|
||||
present.
|
||||
* Fixed segmentation violation for some Lisp files [Lisp].
|
||||
* Fixed segmentation violation occurring when file referenced in #line
|
||||
directive was from an unknown language.
|
||||
* Fixed loss of sync when parsing bit fields named with C++ reserved word [C].
|
||||
* Fixed compilation problem on gcc-2.7.2.
|
||||
* Fixed problem parsing verbatim strings [Eiffel].
|
||||
* Fixed problem with PHP references [PHP].
|
||||
* Fixed handling of Perl __DATA__ sections [Perl].
|
||||
* Fixed problem resulting from white space in tag name due to regex name
|
||||
specifier.
|
||||
* Fixed double reading of $HOME/.ctags when current directory is $HOME.
|
||||
* Fixed problem reading option configuration files using CR-LF newlines.
|
||||
* Fixed problem preventing output control over tag kinds of regex patterns
|
||||
[Bug #429869]
|
||||
|
||||
<b>ctags-5.0.1 (Sun Apr 15 2001)</b>
|
||||
* Fixed problem checking recursive links [SunOS 4.x].
|
||||
* Improved security on hosts where mkstemp() is not available.
|
||||
|
||||
<b>ctags-5.0 (Sun Mar 18 2001)</b>
|
||||
* Restructured code to simplify support for new language parsers.
|
||||
* Changed source code to use ANSI-style function definitions.
|
||||
* Changed scope-qualified tag entries to omit enumeration name [C/C++].
|
||||
* Changed reading of files supplied to -I option to read one token per line.
|
||||
* Changed reading of option files to read one argument per line.
|
||||
* Changed default extension fields, now controlled by new option --fields.
|
||||
* Changed detection of etags invocation to accept any name containing "etags".
|
||||
* Removed -p option, which only caused confusion and is rendered obsolete by
|
||||
the change immediately above.
|
||||
* Removed 'A' flag to the --c-types, --eiffel-types, and --java-types
|
||||
options, replacing its functionality with the new --fields option.
|
||||
* Removed 'C' flag to the --c-types, --eiffel-types, and --java-types
|
||||
options, replacing its functionality with the new --extra option.
|
||||
* Deprecated -i option, which was long ago replaced with the --c-types option.
|
||||
* Deprecated --file-tags option, now incorporated into new --extra option.
|
||||
* Deprecated --kind-long option, now incorporated into new --fields option.
|
||||
* Renamed --lang[uage] option to --language-force.
|
||||
* Renamed makefiles for non-Unix platforms.
|
||||
* Improved parsing of assembly language files [Asm].
|
||||
* Improved parsing of Fortran language files, adding new tag kinds [Fortran].
|
||||
* Added documentation explaining how to extend ctags with new parsers.
|
||||
* Added support for regular expressions, using either Posix or Gnu interface.
|
||||
* Added support for mapping file names to languages using shell patterns.
|
||||
* Added support for ASP scripts, submitted by Patrick Dehne [ASP].
|
||||
* Added support for Makefiles [Make].
|
||||
* Added support for Pascal language [Pascal].
|
||||
* Added support for PHP scripts, submitted by Jesus Castagnetto [PHP].
|
||||
* Added support for REXX language [REXX], based on submission by Alexaner Mai.
|
||||
* Added support for Ruby, submitted by Thaddeus Covert [Ruby].
|
||||
* Added support for S-Lang, submitted by Francesc Rocher [SLang].
|
||||
* Added support for Macintosh platform using MPW (by Maarten Hekkelman).
|
||||
* Added .tk as recognized extension [Tcl].
|
||||
* Added .cp and .hp as C++ extensions [C++].
|
||||
* Added .zsh as shell script extension [Sh].
|
||||
* Added support for trigraphs for C-based languages [C/C++].
|
||||
* Added language recognition for shell scripts using "#!/usr/bin/env command".
|
||||
* Added check for recursive directory links.
|
||||
* Added support for "[" form of verbatim strings [Eiffel].
|
||||
* Added --exclude option to exclude directories while recursing.
|
||||
* Added --fields option to specify extension fields to include in output.
|
||||
* Added --extra option to allow control over extra tags.
|
||||
* Added --regex-<LANG> option to define language-specific regular expressions.
|
||||
* Added --<LANG>-types options for all supported languages.
|
||||
* Added --langdef option to define new languages to be parsed with regex.
|
||||
* Added --languages option to restrict set of languages scanned for tags.
|
||||
* Added --tag-relative option to make file paths recorded in tag file relative
|
||||
to location of tag file itself instead of the current working directory when
|
||||
file arguments are specified using relative paths.
|
||||
* Added restriction of permissions of created temporary files when mkstemp()
|
||||
is not available for security.
|
||||
* Reimplemented line directive handling to work for all languages.
|
||||
* Fixed tag generation for packages [Java].
|
||||
* Fixed Lisp parser [Lisp].
|
||||
* Fixed Mingw32 port [Win32].
|
||||
* Fixed bug in procedure name parsing [Tcl].
|
||||
* Fixed bug resulting in wrong column being checked for paragraphs [Cobol].
|
||||
* Fixed bug in language dispatch for executable "#!" scripts [Unix].
|
||||
* Fixed bugs resulting in incorrect scope entries in tag file [C++/Java].
|
||||
* Fixed warning caused by reinstallation of etags link [Unix].
|
||||
* Fixed destruction of existing tag file when no files supplied on invocation.
|
||||
* Fixed problem in Makefile.in which prevented configuring and building in
|
||||
non-source directory. Also changed Makefile.in to generate and use correct
|
||||
object and executable file extensions when run on Win32.
|
||||
|
||||
<b>ctags-4.0.3 (Sun Jul 16 2000)</b>
|
||||
* Fixed compiler warnings [Amiga].
|
||||
* Fixed problem in configure.in causing struct stat st_ino member test to fail.
|
||||
* Fixed problem with TAGS entries for files using DOS-style (CR-LF) new lines.
|
||||
* Improved algorithm for locating Perl functions and skipping pods.
|
||||
* Improved algorithm for locating Bourne shell functions.
|
||||
* Renamed Makefile.amiga to Makefile.manx [Amiga].
|
||||
* Added Makefile.sas for SAS C compiler [Amiga].
|
||||
* Updated Makefile.qdos [QDOS].
|
||||
* Improved support for DECC compiler [VAX].
|
||||
|
||||
<b>ctags-4.0.2 (Mon Jul 10 2000)</b>
|
||||
* Now silently ignore -w option for backwards compatibility with SVR4 ctags.
|
||||
* Fixed bug resulting in no extension flags when using --kind-long option.
|
||||
|
||||
<b>ctags-4.0.1 (Wed Jun 28 2000)</b>
|
||||
* Fixed segmentation violation when using --file-tags.
|
||||
|
||||
<b>ctags-4.0 (Thu Jun 22 2000)</b>
|
||||
* Fixed infinite loop on certain syntactically invalid class constructs [C++].
|
||||
* Fixed problem of incorrect tags for some pure virtual functions [C++].
|
||||
* Fixed inability to clear all tag types when using --c-types= (all languages).
|
||||
* Fixed problem of arguments to parameterized class being reported as
|
||||
ancestors in the "inherits" extension flag.
|
||||
* Fixed missed tags for typedef-ed function pointers having a PROTO((a,b))
|
||||
style argument list.
|
||||
* Fixed missing file tags for referenced files when using --line-directives
|
||||
option [C/C++].
|
||||
* Fixed failure to recognize drive-qualified file name as a file name when
|
||||
supplied as argument to -I option [Win32].
|
||||
* Fixed problem with missing comma in "inherits" extension flag [Java].
|
||||
* Fixed problem with incorrect or redundant parents listed for "inherits"
|
||||
extension flag [Java].
|
||||
* Added check to avoid recursive symbolic links to directories.
|
||||
* Added warning message for -i option, which is deprecated and being dropped.
|
||||
* Added support for Assembler, COBOL, LISP, PERL, and Scheme, taken from Gnu
|
||||
etags.
|
||||
* Added support for AWK, Bourne Shell, Python, TCL, and Vim scripts.
|
||||
* Added support for the BETA language, submitted by Erik Corry.
|
||||
* Added ability to determine language from interpreter specified in first line
|
||||
of executable files if they are not recognized by their extension.
|
||||
* Added --options option.
|
||||
* Added ability to specify files having no extension with -h and --langmap
|
||||
options.
|
||||
* Added compile time option to separate path components with a unix-style path
|
||||
separator for sharing tag file across platforms, enabled by defining the
|
||||
label UNIX_PATH_SEPARATOR [Win32].
|
||||
* Fixed portability issues [VMS].
|
||||
|
||||
<b>ctags-3.5.2 (Mon Apr 24 2000)</b>
|
||||
* Fixed problem preventing Emacs-style tags from being written to stdout.
|
||||
|
||||
<b>ctags-3.5.1 (Sun Apr 23 2000)</b>
|
||||
* Fixed infinite loop in writing Emacs-style TAGS file on platforms using
|
||||
tmpnam() instead of mkstemp() [Win32].
|
||||
* Fixed minor problems in Borland makefiles [Win32].
|
||||
* Fixed compiler warning [DJGPP].
|
||||
|
||||
<b>ctags-3.5 (Fri Apr 14 2000)</b>
|
||||
* Fixed core dump when including access field in tag file [Java].
|
||||
* Fixed failure to identify end of statement for block statements [Java].
|
||||
* Fixed bug with lone "end" in feature adaptation part of inheritance clause
|
||||
[Eiffel].
|
||||
* Fixed problem preventing const functions from being recognized as pure
|
||||
virtual [C/C++].
|
||||
* Fixed problem with no tags found after certain macro calls [C/C++].
|
||||
* Fixed bug in descrip.mms build file [VMS].
|
||||
* Changed to use mkstemp() (when available) to create temporary files for
|
||||
security reasons and allow configuring default temporary directory, and to
|
||||
override this directory at run-time by setting TMPDIR environment variable.
|
||||
* Added support for extracting inheritance information into new "inherits"
|
||||
extension flag [C++, Java].
|
||||
* Added Makefile.bc5 for Borland C++ version 5.5 compiler (free version).
|
||||
* Added new question to FAQ regarding Xemacs.
|
||||
* Updated FAQ regarding new release of NEdit.
|
||||
* Renamed Borland 3.1 makefile from Makefile.bcc to Makefile.bc3.
|
||||
* Renamed Microsoft Visual C++ makefile from Makefile.w32 to Makefile.mvc.
|
||||
|
||||
<b>ctags-3.4 (Thu Jan 13 2000)</b>
|
||||
* Fixed sorting problems when LC_ALL environment variable was set to foreign
|
||||
locale (not fixed by previous release).
|
||||
* Fixed nested scoping reported in extension flags and class-qualified tags.
|
||||
* Eliminated generation of class-qualified tag entries when --c-types=+C
|
||||
option is in effect but scope is empty (e.g. "::main").
|
||||
* Added support for default access of class members in Java.
|
||||
* Added new extension flag "implementation", which indicates if a routine or
|
||||
class is virtual or abstract.
|
||||
* Minor changes for OS/2 compilation.
|
||||
|
||||
<b>ctags-3.3.3 (Thu Dec 16 1999)</b>
|
||||
* Changed how input is read for -L and --filter options to permit file names
|
||||
containing spaces (see man page).
|
||||
* Fixed scope recorded for C++ class elements, especially in namespaces.
|
||||
* Fixed spurious tag generated for MODULE PROCEDURE in interfaces [Fortran].
|
||||
* Fixed sorting problems when LC_ALL environment variable was set to foreign
|
||||
locale.
|
||||
* Fixed crash on Windows when compiled with Mingw32 gcc compiler.
|
||||
* Fixed compilation problems on Cray.
|
||||
|
||||
<b>ctags-3.3.2 (Mon Sep 24 1999)</b>
|
||||
* Fixed compile problem on AIX 4.1.
|
||||
* Improved recovery from syntax error [Fortran].
|
||||
* Changed name of configure option (now --enable-custom-config).
|
||||
* Changed Makefile.bcc to optimize for space, since code size exceeded 64KB.
|
||||
|
||||
<b>ctags-3.3.1 (Mon Sep 20 1999)</b>
|
||||
* Fixed segmentation violation occurring when directory recursion was selected.
|
||||
* Fixed misleading message when out of memory during internal sort.
|
||||
|
||||
<b>ctags-3.3 (Fri Sep 17 1999)</b>
|
||||
* Fixed missing class-qualified tags [Java].
|
||||
* Fixed missing tag for functions having function pointer argument [C].
|
||||
* Fixed parsing of conversion functions [C++].
|
||||
* Added missing space following "operator" keyword to the tag names generated
|
||||
for function call operators [C++].
|
||||
* Fixed string parsing to retry file as free source form upon EOF [Fortran].
|
||||
* Fixed missing tags following comments [Fortran].
|
||||
* Fixed missing labels for free source form [Fortran].
|
||||
* Removed 72 character limit for fixed form source lines, since many compilers
|
||||
relax this limit and it is commonly taken advantage of. This was sometimes
|
||||
causing fixed form source to be parsed as free form source [Fortran].
|
||||
* Changed misleading message when file could not be accessed.
|
||||
* Changed behavior of --verbose option to display option processing.
|
||||
* Changed -I option to permit clearing the token list with "-I-".
|
||||
* Changed --lang option to accept new "auto" parameter.
|
||||
* Changed --langmap option to accept new "default" parameter.
|
||||
* Changed --eiffel-types option to accept new 'C' flag to generate
|
||||
class-qualified tags.
|
||||
* Changed -h option to accept new "default" parameter.
|
||||
* Changed option processing. Most options may now appear anywhere on the
|
||||
command line, affecting only those files which follow them.
|
||||
* Added ability to specify default options in any of the files /etc/ctags.conf,
|
||||
/usr/local/etc/ctags.conf, $HOME/.ctags, .ctags, and one optional file,
|
||||
which can be supplied at configure time.
|
||||
* Added --filter option.
|
||||
* Added --filter-terminator option.
|
||||
|
||||
<b>ctags-3.2.4 (Thu Jul 01 1999)</b>
|
||||
* Changed name of macro in Makefile.in to avoid being overriden by CTAGS
|
||||
environment variable.
|
||||
|
||||
<b>ctags-3.2.3 (Mon Jun 21 1999)</b>
|
||||
* Small portability change for EMX compiler on OS/2.
|
||||
* Slight change to W32 and BCC makefiles.
|
||||
|
||||
<b>ctags-3.2.2 (Sat May 29 1999)</b>
|
||||
* Fixed endless error loop in case of unreadable file.
|
||||
* Fixed redundant include entries in TAGS file when using --etags-include.
|
||||
|
||||
<b>ctags-3.2.1 (Wed May 09 1999)</b>
|
||||
* Fixed problem reading -I token list from file.
|
||||
* Fixed with "using" declarations which corrupted tag file [C++].
|
||||
* Fixed configure.in to more reliably recognize existing prototypes.
|
||||
* Added ability to ignore preprocessor directives in Fortran files.
|
||||
* Added support for egcs/MingW32 compiler [Win32].
|
||||
|
||||
<b>ctags-3.2 (Wed Mar 03 1999)</b>
|
||||
* Fixed spurious tags related to export specifiers of feature clauses [Eiffel].
|
||||
* Fixed problem with template in ctor-initialer [C++].
|
||||
* Fixed typo causing compiler error [MSVC].
|
||||
* Extended -I option to allow token replacement [thanks to Flemming Madsen].
|
||||
* Added --etags-include option to support TAGS file includes.
|
||||
* Added support for QDOS [thanks to Thierry Godefroy].
|
||||
|
||||
<b>ctags-3.1.2 (Tue Jan 26 1999)</b>
|
||||
* Changed extension flags to eliminate space between label and value to remain
|
||||
true to the intent of the agreement on the extended format made with editor
|
||||
authors.
|
||||
* Added --links option to permit ignoring symbolic links.
|
||||
* Fixed missing tags upon ANSI style variable function argument lists.
|
||||
* Fixed missing tags for methods with fully qualified type names in argument
|
||||
list [Java].
|
||||
* Fixed double tags generated for enumerators followed by comma.
|
||||
* Fixed missing path prefix for -p option [Win 95/NT].
|
||||
|
||||
<b>ctags-3.1 (Wed Jan 20 1999)</b>
|
||||
* Changed -h and -langmap options to accept a plus sign as the first character
|
||||
of their arguments to indicate that arguments should be added to current.
|
||||
* Changed default for member tags to 'on' [C/C++].
|
||||
* Changed default for local entities to 'off' [Eiffel].
|
||||
* Added tags for forward class/struct/union/enum declarations when using
|
||||
-c-types=+x [C/C++].
|
||||
* Fixed memory overwrite bug causing general protection fault [Win 95/NT].
|
||||
* Fixed missing tags for methods with throws clause [Java].
|
||||
* Fixed bad tags generated for null macro names [C].
|
||||
* Fixed spurious tag for features and entities of BIT type [Eiffel].
|
||||
* Fixed spurious tags when local entity declaration list was empty [Eiffel].
|
||||
* Fixed missing tags for contructors and destructors [C++].
|
||||
* Fixed failure to recognize function when declaration for first argument
|
||||
was of template type [C++].
|
||||
|
||||
<b>ctags-3.0.3 (Mon Dec 21 1998)</b>
|
||||
* Fixed mistake made in previous version which caused macro tags to be missed.
|
||||
* Fixed parsing of --langmap option.
|
||||
|
||||
<b>ctags-3.0.2 (Mon Dec 21 1998)</b>
|
||||
* Added tags for names undefined with #undef (C/C++).
|
||||
* Added tags for renamed features (Eiffel).
|
||||
* Improved Emacs-style tag file contents (per Ian Zimmerman).
|
||||
* Fixed problem handling deferred, external, once, obsolete features in Eiffel.
|
||||
* Fixed porting problem [OSF1 V4.0].
|
||||
|
||||
<b>ctags-3.0.1 (Sat Dec 12 1998)</b>
|
||||
* Fixed problem with certain macros and functions with no declared return type.
|
||||
* Fixed problem causing endless loop on MSDOS/Win32 by restoring use of binary
|
||||
mode on opening of source files.
|
||||
* Fixed porting problems on SunOS 4.1.x and MSVC++ 5.0.
|
||||
|
||||
<b>ctags-3.0 (Sun Dec 06 1998)</b>
|
||||
* Added support for the Eiffel language (everyone should learn Eiffel).
|
||||
* Added support for the Fortran language.
|
||||
* Added --c-types option to specify tag types to be included for C/C++.
|
||||
* Added --eiffel-types option to specify tag types to be included for Eiffel.
|
||||
* Added --fortran-types option to specify tag types to be included for Fortran.
|
||||
* Added --file-scope option to place verbose tag description into tag file.
|
||||
* Added --file-tags option to place tags for source file names into tag file.
|
||||
* Added --java-types option to specify tag types to be included for Java.
|
||||
* Added --kind-long option to place verbose tag description into tag file.
|
||||
* Added --linedirectives option to enable processing of #line directives so
|
||||
that running ctags on preprocessor output can generate line numbers and file
|
||||
names which correspond to the original source files.
|
||||
* Added -V option to enable verbose message for each file considered.
|
||||
* Added special handling for macros of form "INIT(= value)".
|
||||
* Added ability to suffix an ignored identifier (-I option) with the '+'
|
||||
character, thus instructing ctags to also ignore any argument list which
|
||||
may follow the identifier.
|
||||
* Changed the -i option, moving Java language options to the new --java-types
|
||||
option. The -i option is now deprecated in favor of the new language
|
||||
specific tag type options.
|
||||
* Changed behavior of handling of ignored identifiers (-I option) to still
|
||||
generate a tag for any macro definition for that identifier.
|
||||
* Changed handling of -h option so that include files are no longer assumed to
|
||||
be C++ files.
|
||||
* Changed tags for operators to always precede the operator with the string
|
||||
"operator ", thus making it consistent for all operators. [C++]
|
||||
* Changed C/C++ parsing, catching many more tricky constructs.
|
||||
* Changed extension flags to place a space between the label and the value for
|
||||
readability.
|
||||
* Fixed core dump which occurred when using -iF (now --file-tags) together
|
||||
with -e (etags) on a zero-length file.
|
||||
* Fixed missing or incorrect tags for conversions operators or operator "()".
|
||||
* Fixed incorrect parent class in extension flags for type declarations of the
|
||||
form "class Bar { OtherClass::sometype foo; }".
|
||||
* Fixed missing tags for "friend" and "static" prototypes in header files.
|
||||
* Fixed problem of external "sort" reporting locale not available on HPUX.
|
||||
* Fixed -p option.
|
||||
* Fixed VMS support. It should now work for any source file type.
|
||||
|
||||
<b>ctags-2.3.2 (Wed Sep 09 1998)</b>
|
||||
* Fixed -h option; broken since version 1.7, yet only just reported.
|
||||
|
||||
<b>ctags-2.3.1 (Sun Aug 30 1998)</b>
|
||||
* Fixed improper handling of derived structs.
|
||||
* Fixed wrong class name tag when a nested-name-specifier was present in class
|
||||
declaration.
|
||||
* Added parent information into tag extension flags for data structures to
|
||||
match that already present for members.
|
||||
* Add missing documentation for --langmap option in the --help output.
|
||||
* Eliminated compiler warning [gcc 2.8.1].
|
||||
|
||||
<b>ctags-2.3 (Thu Aug 20 1998)</b>
|
||||
* Eliminated compiler warnings [sgi mipspro].
|
||||
|
||||
<b>ctags-2.2.7 (Mon Aug 17 1998)</b>
|
||||
* Fixed porting problem [Borland C++].
|
||||
|
||||
<b>ctags-2.2.6 (Wed Aug 12 1998)</b>
|
||||
* Added directory recursion support for Amiga.
|
||||
* Fixed core dump encountered on some platforms when the CTAGS environment
|
||||
variable was set but empty.
|
||||
* Fixed porting problem [MSVC].
|
||||
|
||||
<b>ctags-2.2.3</b> (Sun Aug 02 1998)
|
||||
<b>ctags-2.2.2</b> (Fri Jul 24 1998)
|
||||
* Fixed porting problems [AIX, HP-UX, OSF/1, SunOS, MSVC].
|
||||
|
||||
<b>ctags-2.2.1</b> (Fri Jul 24 1998)
|
||||
* Now uses a default directory name of "." when using -R or --recurse option
|
||||
(e.g. "ctags -R" is equivalent to "ctags -R .").
|
||||
* Directories named "SCCS" are skipped when using the -R or --recurse option
|
||||
under Unix.
|
||||
* Fixed porting problems [HP-UX, IRIX, SunOS, MSDOS/Windows].
|
||||
|
||||
<b>ctags-2.2</b> (Mon Jul 20 1998)
|
||||
* Added the --recurse and -R options to allow recursing into directories.
|
||||
This allows running ctags on an entire source directory tree using the
|
||||
single command "ctags -R <dir>". Currently, this option is only supported
|
||||
on UNIX, MSDOS, Windows 95/NT, and OS/2. Other platforms will have to wait.
|
||||
* Changed writing of Emacs-style TAGS file to binary mode [MSDOS/Windows].
|
||||
* Fixed porting problems [HP-UX].
|
||||
|
||||
<b>ctags-2.1.1</b> (Mon Jul 06 1998)
|
||||
* Changed -h option to allow only periods to separate extensions.
|
||||
* Added the --langmap option to allow overriding the default associations
|
||||
between source language and file extension.
|
||||
* Added configuration check and code work-around for putenv() prototypes
|
||||
missing the const from the argument declaration [IRIX 5.2 and CRAY J90].
|
||||
* Added makefile for VMS.
|
||||
* Fixed porting problem [HP-UX].
|
||||
|
||||
<b>ctags-2.1</b> (Wed Jul 01 1998)
|
||||
* Added Java support.
|
||||
* Eliminated the --keywords option introduced in the 2.0.4, replacing it with
|
||||
automatic detection of the language (i.e. recognized keywords) based upon
|
||||
the file extension.
|
||||
* Added the --lang option for manually overriding the automatic selection of
|
||||
the language.
|
||||
* Added new flag 'i' to the -i option to allow generating tags for Java
|
||||
interfaces.
|
||||
* Added new flag 'n' to the -i option to allow generating tags for C++
|
||||
namespaces.
|
||||
* Added new flag 'x' to the -i option to allow generating tags for extern
|
||||
variable declarations.
|
||||
* Added new extension flags, "private", "protected", and "public", which
|
||||
indicate the visibility of class members when it can be determined.
|
||||
* Changed behavior of flag 'C' of the -i option to add tags of form
|
||||
"class.member" for Java.
|
||||
* Changed how files on command line are handled. Ctags will now only scan
|
||||
those files whose extensions it knows about unless the --lang option is
|
||||
specified. This allows running ctags on all files in a directory without
|
||||
having to be specific (e.g. "ctags *").
|
||||
* Removed support for duplicate tag warnings and the -w and -W options. These
|
||||
options are silently ignored for now.
|
||||
|
||||
<pre>
|
||||
<b>ctags-2.0.4</b> (Sat May 23 1998)
|
||||
* Added sorting time to the output of the --totals option.
|
||||
* Added the --keywords option to allow restricting the recognized
|
||||
declaration keywords in order to handle legacy source code which uses
|
||||
newer keywords for variable and parameter names.
|
||||
* Ignore list now also applies to macro tags.
|
||||
* /dev/stdout now properly handled as parameter to -f/-o option.
|
||||
* Fixed problem handling an operator definition in C++ when white space
|
||||
appeared between the "operator" keyword and the operator (e.g. "=").
|
||||
* Fixed handling of non-symbolic operators (e.g. "new", "delete", etc.).
|
||||
* Fixed sort order problem for some locale settings.
|
||||
* Fixed segmentation violation when using ignore list (-I) on SunOS 4.x.
|
||||
* Fixed bug causing a segmentation violation caused by a stack overwrite when
|
||||
testing a particular kind of non-standard tag file format.
|
||||
|
||||
|
||||
<b>ctags-2.0.3</b> (Sun Mar 12 1998)
|
||||
* Added configure check for "strip" program.
|
||||
* Added new sub-flag 'C' to the -i option to allow adding extra tags to
|
||||
the tag file in the form "class::member" for class methods and members.
|
||||
|
||||
|
||||
<b>ctags-2.0.2</b> (Wed Feb 25 1998)
|
||||
* Added stripping of installed binary for "install" target.
|
||||
|
||||
|
||||
<b>ctags-2.0.1</b> (Thu Feb 19 1998)
|
||||
* Added support for C++.
|
||||
* Added new sub-flag 'F' to the -i option to allow adding an extra tag for
|
||||
the basename of each source file supplied to ctags. This provides the
|
||||
ability to jump to a source file in Vi using ":tag file.c".
|
||||
* Added new sub-flag 'm' to generate tags for class, structure, and union
|
||||
members (disabled by default).
|
||||
* Added several new 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.
|
||||
* Added explicit handling of special gcc construct __attribute((..)),
|
||||
which could lead to incorrect tag generation.
|
||||
* Added configure option --disable-extended-format to allow building ctags
|
||||
with the extended format disabled by default.
|
||||
* Added configure option --enable-macro-patterns to change the default
|
||||
behavior of ctags to generate patterns instead of line numbers for macro
|
||||
(define) tags.
|
||||
* Changed configure option --enable-internal-sort to --disable-external-sort.
|
||||
* Changed makefile for OS/2.
|
||||
* Removed support for the -d, -t and -T options which had been deprecated
|
||||
for some time.
|
||||
* Removed ANNOUNCE file in distribution, consolidating it with the README
|
||||
file.
|
||||
* Replaced CHANGES file with NEWS for more GNU-like standard distribution.
|
||||
* Improved the 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.
|
||||
* Fixed a problem which prevented the use of / as a path separator under MSDOS
|
||||
and Win 95/NT.
|
||||
* Fixed problem of blank lines occuring in the tag file.
|
||||
* Fixed recognition of declarations with parentheses.
|
||||
* Fixed problem of missing tags for objects within extern "C" blocks.
|
||||
* Fixed problem in source file counts when using --totals option.
|
||||
* Extended the length of tag type field in -x output to be more verbose.
|
||||
* Fixed option initialization error which caused static tags to be excluded.
|
||||
|
||||
|
||||
<b>ctags-1.7</b> (Mon Oct 13 1997)
|
||||
* Tag files now use a new extended format which is backwards compatible with
|
||||
existing Vi implementations, yet provides extended information which can be
|
||||
used by supporting editors.
|
||||
* Added documentation pseudo-tags (e.g. !_TAG_FILE_FORMAT) to tag file.
|
||||
* Added the --excmd option as alternative to the -n and -N options.
|
||||
* Added the --format option to allow forcing the old-style tag file format.
|
||||
* Added the --if0 to control how "#if 0" branches are handled.
|
||||
* Added the --sort option as alternative to -u option.
|
||||
* Added the --totals option to print statistics of tag generation.
|
||||
* Added the --version option.
|
||||
* Improved handling of preprocessor conditionals.
|
||||
* Code within an #if 0 is now never scanned for non-macro tags by default
|
||||
since tags within that code could conceivably be overridden by more
|
||||
desirable tags in the #else branch to follow. Macro tags in these branches
|
||||
are always included.
|
||||
* Fixed problem which could leave invalid tag entries in tag file when an
|
||||
internal re-scan of a source file occurred.
|
||||
* Fixed problem with internal sort mechanism when appending tags to existing
|
||||
file.
|
||||
* Changed external sort command to filter out duplicate identical tags lines
|
||||
(including the pattern) 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.
|
||||
|
||||
|
||||
<b>ctags-1.6</b> (Tue May 13 1997)
|
||||
* Now using GNU autoconf to permit automatic host configuration.
|
||||
* Added the -e option to generate Emacs style tag files
|
||||
* Added ETAGS environment variable to be used when -e option is in effect.
|
||||
* Added the -p option to supply a default path for source files.
|
||||
* Fixed problem of incorrect line numbers in tag file when form feeds and
|
||||
vertical tabs occured in the source file.
|
||||
* Fixed problem preventing ignoring of identifiers specified via the -I option
|
||||
when the identifiers were followed by a parameter list in the source code.
|
||||
* Changed the search patterns generated for #define macros when using -N
|
||||
option. It now includes 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.
|
||||
* Fixed problem resulting in no tags generated following a function-like
|
||||
macro reference outside of a function block.
|
||||
* Fixed problem of no tags generated for typedef for function or function
|
||||
pointer.
|
||||
* Fixed problem of no tags generated after encountering strange function
|
||||
declarations (e.g. "foo(params) saywhat (void);")
|
||||
|
||||
|
||||
<b>ctags-1.5</b> (Sat Oct 5 1996)
|
||||
* Added generation of tags for objects inside C++ extern blocks (e.g.
|
||||
'extern "C" {...}' construct).
|
||||
* Added generation of tags for function definitions inside brace-enclosed
|
||||
("{}") blocks, since function definitions are allowed inside classes and
|
||||
extern blocks.
|
||||
* Added the -N option to force patterns to be used for all tags (including
|
||||
macro tags).
|
||||
* Changed the search patterns generated for macro definitions to be terminated
|
||||
with "\>", which allows the pattern to still match even when the #define
|
||||
line beyond the macro name is changed.
|
||||
* Fixed problem resulting in no tags generated for files containing a
|
||||
function-like macro, such as 'MODULE_ID("$Id")', even when ignoring the
|
||||
keyword. This also fixed a problem that caused tags to be missed for
|
||||
initialized function pointer definitions.
|
||||
* Redirected error messages to stdout for MSDOS version.
|
||||
|
||||
|
||||
<b>ctags-1.4</b> (Sun Aug 18 1996)
|
||||
* Added recursive parsing of class/struct/enum blocks to look for
|
||||
class/struct/enum tags and enumeration values.
|
||||
* Added the -I option to specify keywords to ignore in the source files.
|
||||
* Fixed problem resulting in no tag generated when declaring a pointer const
|
||||
or volatile.
|
||||
* Fixed problem resulting in no tag generated for comma terminated function
|
||||
declarations.
|
||||
|
||||
|
||||
<b>ctags-1.3</b> (Sun Jun 16 1996)
|
||||
* Fixed problem problem which caused "struct tag;" to be misinterpreted as a
|
||||
variable definition.
|
||||
* Added the -n option to use line numbers in the tag file instead of patterns.
|
||||
* Added the -? option as an alternative for the --help option.
|
||||
|
||||
|
||||
<b>ctags-1.2</b> (Wed Jun 5 1996)
|
||||
* Fixed a problem caused by an unitialized variable.
|
||||
|
||||
|
||||
<b>ctags-1.1</b> (Tue Jun 4 1996)
|
||||
* Fixed problem reading parameter list to the -h option.
|
||||
|
||||
|
||||
<b>ctags-1.0a</b> (Mon Jun 3 1996)
|
||||
* Added ctags.lsm to distribution
|
||||
|
||||
|
||||
<b>ctags-1.0</b> (Fri May 31 1996)
|
||||
* First public release.
|
||||
</pre>
|
||||
|
||||
|
||||
<hr>
|
||||
<a href="http:index.html">Back to <strong>Exuberant Ctags</strong></a>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,4 @@
|
|||
ctagsw32.exe
|
||||
ctagsos2.exe
|
||||
ctags[1-9]*
|
||||
ec[1-9]*.zip
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,39 @@
|
|||
# $Id$
|
||||
# Makefile for building Win32 releases
|
||||
|
||||
VERSION = 521
|
||||
|
||||
# Borland C library directory
|
||||
ZIP = "c:\Program Files\WinZip\wzzip"
|
||||
#ZIP = pkzip -xctags$(VERSION)\gnu_regex_dist\*.*
|
||||
|
||||
# Add this file for wildcard expansion (does NOT work with 4.0!)
|
||||
|
||||
#ctagsw32.exe: ctags$(VERSION)\mk_mvc.mak
|
||||
# cd ctags$(VERSION)
|
||||
# nmake -f mk_mvc.mak clean
|
||||
# nmake -f mk_mvc.mak
|
||||
# copy ctags.exe ..\$@
|
||||
# nmake -f mk_mvc.mak clean
|
||||
# cd ..
|
||||
|
||||
zip: ctagsw32.exe
|
||||
- del ec$(VERSION)w32.zip
|
||||
- del ctags$(VERSION)\ctags.tds
|
||||
copy ctagsw32.exe ctags$(VERSION)\ctags.exe
|
||||
$(ZIP) -Pr ec$(VERSION)w32 ctags$(VERSION)\*.*
|
||||
- del ctags$(VERSION)\ctags.exe
|
||||
# copy ctags16.exe ctags$(VERSION)\ctags.exe
|
||||
# $(ZIP) -Pr ec$(VERSION)-16 ctags$(VERSION)\*.*
|
||||
# copy ctags32.exe ctags$(VERSION)\ctags.exe
|
||||
# $(ZIP) -Pr ec$(VERSION)-32 ctags$(VERSION)\*.*
|
||||
|
||||
zip-os2: ctagsos2.exe
|
||||
- del ec$(VERSION)os2.zip
|
||||
copy ctagsos2.exe ctags$(VERSION)\ctags.exe
|
||||
$(ZIP) -Pr ec$(VERSION)os2 ctags$(VERSION)\*.*
|
||||
del ctags$(VERSION)\ctags.exe
|
||||
|
||||
clean:
|
||||
- del ctagsw32.exe
|
||||
- del ctagsos2.exe
|
Loading…
Reference in New Issue