Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
6861f0e3
Commit
6861f0e3
authored
Jun 13, 2002
by
Francesco Potortì
Browse files
New multi-line regexp and new regexp syntax.
parent
292c80bc
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
68 additions
and
23 deletions
+68
-23
etc/NEWS
etc/NEWS
+17
-3
etc/etags.1
etc/etags.1
+23
-20
lib-src/ChangeLog
lib-src/ChangeLog
+28
-0
No files found.
etc/NEWS
View file @
6861f0e3
...
...
@@ -569,6 +569,23 @@ comparison.
** Etags changes.
*** New syntax for regular expressions, multi-line regular expressions.
The syntax --ignore-case-regexp=/REGEX/NAME/ is now undocumented and
retained only for backward compatibility. The new equivalent syntax is
--regex=/REGEX/NAME/i. More generally, it is --regex=/REGEX/NAME/MODS,
where `/NAME' is optional, as usual, and MODS is a string of 0 or more
characters among `i' (ignore case), `m' (multi-line) and `s'
(single-line). The `m' and `s' modifiers behave as in Perl regular
expressions: `m' allows regexps to match more than one line, while `s'
(which implies `m') means that `.' matches newlines. The ability to
span newlines allows writing of much more powerful regular expressions
and rapid prototyping for tagging new languages.
*** Regular expressions can use char escape sequences as in Gcc
The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v,
respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
CR, TAB, VT,
*** In Prolog, etags creates tags for rules in addition to predicates.
*** In Perl, packages are tags.
...
...
@@ -596,9 +613,6 @@ be used (only once) in place of a file name on the command line. Etags
will read from standard input and mark the produced tags as belonging to
the file FILE.
*** Regular expressions can use char escape sequences as in Gcc
These are the escapes \a, \b, \d, \e, \f, \n, \r, \t, \v.
+++
** The command line option --no-windows has been changed to
--no-window-system. The old one still works, but is deprecated.
...
...
etc/etags.1
View file @
6861f0e3
...
...
@@ -22,7 +22,6 @@ etags, ctags \- generate tag file for Emacs, vi
[\|\-\-ignore\-indentation\|] [\|\-\-language=\fIlanguage\fP\|]
[\|\-\-members\|] [\|\-\-output=\fItagfile\fP\|]
[\|\-\-regex=\fIregexp\fP\|] [\|\-\-no\-regex\|]
[\|\-\-ignore\-case\-regex=\fIregexp\fP\|]
[\|\-\-help\|] [\|\-\-version\|]
\fIfile\fP .\|.\|.
...
...
@@ -36,7 +35,6 @@ etags, ctags \- generate tag file for Emacs, vi
[\|\-\-globals\|] [\|\-\-ignore\-indentation\|]
[\|\-\-language=\fIlanguage\fP\|] [\|\-\-members\|]
[\|\-\-output=\fItagfile\fP\|] [\|\-\-regex=\fIregexp\fP\|]
[\|\-\-ignore\-case\-regex=\fIregexp\fP\|]
[\|\-\-typedefs\|] [\|\-\-typedefs\-and\-c++\|]
[\|\-\-update\|] [\|\-\-no\-warn\|]
[\|\-\-help\|] [\|\-\-version\|]
...
...
@@ -149,27 +147,32 @@ Explicit name of file for tag table; overrides default \fBTAGS\fP or
\fBtags\fP. (But ignored with \fB\-v\fP or \fB\-x\fP.)
.TP
\fB\-r\fP \fIregexp\fP, \fB\-\-regex=\fIregexp\fP
.TP
\fB\-\-ignore\-case\-regex=\fIregexp\fP
Make tags based on regexp matching for each line of the files
following this option, in addition to the tags made with the standard
parsing based on language. When using \fB\-\-regex\fP, case is
significant, while it is not with \fB\-\-ignore\-case\-regex\fP. May
be freely intermixed with filenames and the \fB\-R\fP option. The
regexps are cumulative, i.e. each option will add to the previous
ones. The regexps are of the form:
Make tags based on regexp matching for the files following this option,
in addition to the tags made with the standard parsing based on
language. May be freely intermixed with filenames and the \fB\-R\fP
option. The regexps are cumulative, i.e. each such option will add to
the previous ones. The regexps are of the form:
.br
\fB/\fP\fItagregexp
\fP[\fB
/\fP\fInameregexp\fP
]
\fB/\fP
\fB/\fP\fItagregexp/\fP
[
\fInameregexp\fP\fB/\fP
]\fImodifiers\fP
.br
where \fItagregexp\fP is used to match the lines that must be tagged.
It should not match useless characters. If the match is
such that more characters than needed are unavoidably matched by
\fItagregexp\fP, it may be useful to add a \fInameregexp\fP, to
narrow down the tag scope. \fBctags\fP ignores regexps without a
\fInameregexp\fP. The syntax of regexps is the same as in emacs.
The following character escape sequences are supported:
\\a, \\b, \\d, \\e, \\f, \\n, \\r, \\t, \\v.
where \fItagregexp\fP is used to match the tag. It should not match
useless characters. If the match is such that more characters than
needed are unavoidably matched by \fItagregexp\fP, it may be useful to
add a \fInameregexp\fP, to narrow down the tag scope. \fBctags\fP
ignores regexps without a \fInameregexp\fP. The syntax of regexps is
the same as in emacs. The following character escape sequences are
supported: \\a, \\b, \\d, \\e, \\f, \\n, \\r, \\t, \\v, which
respectively stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
CR, TAB, VT.
.br
The \fImodifiers\fP are a sequence of 0 or more characters among
\fIi\fP, which means to ignore case when matching; \fIm\fP, which means
that the \fItagregexp\fP will be matched against the whole file contents
at once, rather than line by line, and the matching sequence can match
multiple lines; and \fIs\fP, which implies \fIm\fP and means that the
dot character in \fItagregexp\fP matches the newline char as well.
.br
Here are some examples. All the regexps are quoted to protect them
...
...
lib-src/ChangeLog
View file @
6861f0e3
2002-06-12 Francesco Potorti` <pot@gnu.org>
* etags.c: New multi-line regexp and new regexp syntax.
(arg_type): at_icregexp label removed (obsolete).
(pattern): New member multi_line for multi-line regexps.
(filebuf): A global buffer containing the whole file as a string
for multi-line regexp matching.
(need_filebuf): Global flag raised if multi-line regexps used.
(print_help): Document new regexp modifiers, remove references to
obsolete option --ignore-case-regexp.
(main): Do not set regexp syntax and translation table here.
(main): Treat -c option as a backward compatibility hack.
(main, find_entries): Init and free filebuf.
(find_entries): Call regex_tag_multiline after the regular parser.
(scan_separators): Check for untermintaed regexp and return NULL.
(analyse_regex, add_regex): Remove the ignore_case argument, which
is now a modifier to the regexp. All callers changed.
(add_regex): Manage the regexp modifiers.
(regex_tag_multiline): New function. Reads from filebuf.
(readline_internal): If necessary, copy the whole file into filebuf.
(readline): Skip multi-line regexps, leave them to regex_tag_multiline.
2002-06-11 Francesco Potorti` <pot@gnu.org>
* etags.c (add_regex): Better check for null regexps.
(readline): Check for regex matching null string.
(find_entries): Reorganisation.
2002-06-07 Francesco Potorti` <pot@gnu.org>
* etags.c (scan_separators): Support all character escape
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment