mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-29 19:48:19 +00:00
* lib-src/etags.c (Lisp_functions): Skip (defvar foo) declarations
unless the --declarations flag is enabled. (Lisp_help): Update. (skip_name): New function. * doc/emacs/maintaining.texi (Tag Syntax): Mention (defvar foo) handling. * doc/man/etags.1: Mention effect of --declarations in Lisp. Fixes: debbugs:5600
This commit is contained in:
parent
3e5490f7a5
commit
1cbaa705e7
@ -1,3 +1,7 @@
|
||||
2012-12-02 Kevin Ryde <user42@zip.com.au>
|
||||
|
||||
* maintaining.texi (Tag Syntax): Mention (defvar foo) handling.
|
||||
|
||||
2012-12-01 Kevin Ryde <user42@zip.com.au>
|
||||
|
||||
* maintaining.texi (Tag Syntax): Mention Perl's "use constant".
|
||||
|
@ -1676,9 +1676,11 @@ specifies (using Bourne shell syntax) that the commands
|
||||
|
||||
@item
|
||||
In Lisp code, any function defined with @code{defun}, any variable
|
||||
defined with @code{defvar} or @code{defconst}, and in general the first
|
||||
argument of any expression that starts with @samp{(def} in column zero is
|
||||
a tag.
|
||||
defined with @code{defvar} or @code{defconst}, and in general the
|
||||
first argument of any expression that starts with @samp{(def} in
|
||||
column zero is a tag. As an exception, expressions of the form
|
||||
@code{(defvar @var{foo})} are treated as declarations, and are only
|
||||
tagged if the @samp{--declarations} option is given.
|
||||
|
||||
@item
|
||||
In Scheme code, tags include anything defined with @code{def} or with a
|
||||
|
@ -1,3 +1,7 @@
|
||||
2012-12-02 Kevin Ryde <user42@zip.com.au>
|
||||
|
||||
* etags.1: Mention effect of --declarations in Lisp.
|
||||
|
||||
2012-06-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* rcs-checkin.1: Remove.
|
||||
|
@ -88,6 +88,7 @@ Only \fBctags\fP accepts this option.
|
||||
.B \-\-declarations
|
||||
In C and derived languages, create tags for function declarations,
|
||||
and create tags for extern variables unless \-\-no\-globals is used.
|
||||
In Lisp, create tags for (defvar foo) declarations.
|
||||
.TP
|
||||
.B \-D, \-\-no\-defines
|
||||
Do not create tag entries for C preprocessor constant definitions
|
||||
|
@ -1,3 +1,10 @@
|
||||
2012-12-02 Kevin Ryde <user42@zip.com.au>
|
||||
|
||||
* etags.c (Lisp_functions): Skip (defvar foo) declarations unless
|
||||
the --declarations flag is enabled (Bug#5600).
|
||||
(Lisp_help): Update.
|
||||
(skip_name): New function.
|
||||
|
||||
2012-12-01 Kevin Ryde <user42@zip.com.au>
|
||||
|
||||
* etags.c (Perl_functions): Support "use constant" (Bug#5055).
|
||||
|
@ -353,6 +353,7 @@ static void put_entries (node *);
|
||||
static char *concat (const char *, const char *, const char *);
|
||||
static char *skip_spaces (char *);
|
||||
static char *skip_non_spaces (char *);
|
||||
static char *skip_name (char *);
|
||||
static char *savenstr (const char *, int);
|
||||
static char *savestr (const char *);
|
||||
static char *etags_strchr (const char *, int);
|
||||
@ -619,7 +620,8 @@ static const char Lisp_help [] =
|
||||
"In Lisp code, any function defined with `defun', any variable\n\
|
||||
defined with `defvar' or `defconst', and in general the first\n\
|
||||
argument of any expression that starts with `(def' in column zero\n\
|
||||
is a tag.";
|
||||
is a tag.\n\
|
||||
The `--declarations' option tags \"(defvar foo)\" constructs too.";
|
||||
|
||||
static const char *Lua_suffixes [] =
|
||||
{ "lua", "LUA", NULL };
|
||||
@ -4747,6 +4749,19 @@ Lisp_functions (FILE *inf)
|
||||
if (dbp[0] != '(')
|
||||
continue;
|
||||
|
||||
/* "(defvar foo)" is a declaration rather than a definition. */
|
||||
if (! declarations)
|
||||
{
|
||||
char *p = dbp + 1;
|
||||
if (LOOKING_AT (p, "defvar"))
|
||||
{
|
||||
p = skip_name (p); /* past var name */
|
||||
p = skip_spaces (p);
|
||||
if (*p == ')')
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (strneq (dbp+1, "def", 3) || strneq (dbp+1, "DEF", 3))
|
||||
{
|
||||
dbp = skip_non_spaces (dbp);
|
||||
@ -6307,6 +6322,16 @@ skip_non_spaces (char *cp)
|
||||
return cp;
|
||||
}
|
||||
|
||||
/* Skip any chars in the "name" class.*/
|
||||
static char *
|
||||
skip_name (char *cp)
|
||||
{
|
||||
/* '\0' is a notinname() so loop stops there too */
|
||||
while (! notinname (*cp))
|
||||
cp++;
|
||||
return cp;
|
||||
}
|
||||
|
||||
/* Print error message and exit. */
|
||||
void
|
||||
fatal (const char *s1, const char *s2)
|
||||
|
Loading…
Reference in New Issue
Block a user