This commit is contained in:
commit
a74f0a01c3
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
16
README.SuSE
Normal file
16
README.SuSE
Normal file
@ -0,0 +1,16 @@
|
||||
|
||||
Ctags and etags
|
||||
===============
|
||||
|
||||
Unfortunately there exists several good ctags and etags implementations.
|
||||
They have different supported languages and different options and
|
||||
features. The several versions are:
|
||||
|
||||
ctags ctags from Darren Hiebert, supports e.g. Eiffel
|
||||
ctags -e etags from Darren Hiebert, supports e.g. Eiffel
|
||||
gnuctags ctags from Emacs sources, supports e.g. Lisp
|
||||
etags etags from Emacs sources, supports e.g. Lisp
|
||||
|
||||
The version of Darren Hiebert is also called the Exuberant Ctags.
|
||||
|
||||
Your SuSE team
|
61
ctags-5.6.diff
Normal file
61
ctags-5.6.diff
Normal file
@ -0,0 +1,61 @@
|
||||
--- ctags.1
|
||||
+++ ctags.1 2001/12/14 14:41:12
|
||||
@@ -9,12 +9,29 @@
|
||||
.TP 6
|
||||
\fBctags\fP [\fBoptions\fP] [\fIfile(s)\fP]
|
||||
.TP 6
|
||||
-\fBetags\fP [\fBoptions\fP] [\fIfile(s)\fP]
|
||||
+\fBctags\fP \fB-e\fP [\fBoptions\fP] [\fIfile(s)\fP]
|
||||
|
||||
+.SH NOTE
|
||||
+There are three different versions of the
|
||||
+\fBctags\fP program on SuSE Linux.
|
||||
+Besides this one you might want to use either
|
||||
+.BR gnuctags (1),
|
||||
+supporting wide variety of programming languages
|
||||
+and originaly distributed with emacs, or
|
||||
+.BR gctags (1),
|
||||
+which comes with
|
||||
+.BR global (1)
|
||||
+and supports for example Yacc.
|
||||
+
|
||||
+For use with
|
||||
+.BR emacs (1)
|
||||
+the best choice is perhaps
|
||||
+.BR etags (1),
|
||||
+but it's also possible to use \fBctags\ \-e\fP,
|
||||
+as described herein, since it supports for example Eiffel.
|
||||
|
||||
.SH "DESCRIPTION"
|
||||
-The \fBctags\fP and \fBetags\fP programs (hereinafter collectively referred to
|
||||
-as \fBctags\fP, except where distinguished) generate an index (or "tag") file
|
||||
+The \fBctags\fP program generates an index (or "tag") file
|
||||
for a variety of language objects found in \fIfile(s)\fP.
|
||||
This tag file allows these items to be quickly and easily located by a text
|
||||
editor or other utility. A "tag" signifies a language object for which an
|
||||
@@ -1484,7 +1501,7 @@
|
||||
.TP 8
|
||||
.B ETAGS
|
||||
Similar to the \fBCTAGS\fP variable above, this variable, if found, will be
|
||||
-read when \fBetags\fP starts. If this variable is not found, \fBetags\fP will
|
||||
+read when \fBctags\ \-e\fP starts. If this variable is not found, \fBctags\ \-e\fP will
|
||||
try to use \fBCTAGS\fP instead.
|
||||
|
||||
.TP 8
|
||||
@@ -1535,9 +1552,15 @@
|
||||
The default tag file created by \fBctags\fP.
|
||||
.TP
|
||||
.I TAGS
|
||||
-The default tag file created by \fBetags\fP.
|
||||
+The default tag file created by \fBctags -e\fP.
|
||||
|
||||
.SH "SEE ALSO"
|
||||
+.BR etags (1),
|
||||
+.BR gctags (1),
|
||||
+.BR global (1),
|
||||
+.BR gnuctags (1).
|
||||
+
|
||||
+.PP
|
||||
The official Exuberant Ctags web site at:
|
||||
|
||||
.RS
|
3
ctags-5.6.tar.gz
Normal file
3
ctags-5.6.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:55c0693845644735f76242fa717efd92d9cb99543f7a7fa65d63bdd083c4eb95
|
||||
size 267019
|
493
ctags-ycp-parser.diff
Normal file
493
ctags-ycp-parser.diff
Normal file
@ -0,0 +1,493 @@
|
||||
--- c.c
|
||||
+++ c.c
|
||||
@@ -61,35 +61,39 @@
|
||||
*/
|
||||
typedef enum eKeywordId {
|
||||
KEYWORD_NONE = -1,
|
||||
- KEYWORD_ATTRIBUTE, KEYWORD_ABSTRACT,
|
||||
- KEYWORD_BOOLEAN, KEYWORD_BYTE, KEYWORD_BAD_STATE, KEYWORD_BAD_TRANS,
|
||||
- KEYWORD_BIND, KEYWORD_BIND_VAR, KEYWORD_BIT,
|
||||
+ KEYWORD_ATTRIBUTE, KEYWORD_ABSTRACT, KEYWORD_ANY,
|
||||
+ KEYWORD_BOOLEAN, KEYWORD_BYTE, KEYWORD_BYTEBLOCK, KEYWORD_BAD_STATE,
|
||||
+ KEYWORD_BAD_TRANS,
|
||||
+ KEYWORD_BIND, KEYWORD_BIND_VAR, KEYWORD_BIT, KEYWORD_BLOCK,
|
||||
KEYWORD_CASE, KEYWORD_CATCH, KEYWORD_CHAR, KEYWORD_CLASS, KEYWORD_CONST,
|
||||
KEYWORD_CONSTRAINT, KEYWORD_COVERAGE_BLOCK, KEYWORD_COVERAGE_DEF,
|
||||
- KEYWORD_DEFAULT, KEYWORD_DELEGATE, KEYWORD_DELETE, KEYWORD_DO,
|
||||
+ KEYWORD_DEFAULT, KEYWORD_DECLARATION, KEYWORD_DELEGATE, KEYWORD_DELETE,
|
||||
+ KEYWORD_DO,
|
||||
KEYWORD_DOUBLE,
|
||||
- KEYWORD_ELSE, KEYWORD_ENUM, KEYWORD_EXPLICIT, KEYWORD_EXTERN,
|
||||
+ KEYWORD_ELSE, KEYWORD_ENUM, KEYWORD_EXPLICIT, KEYWORD_EXPRESSION,
|
||||
+ KEYWORD_EXTERN,
|
||||
KEYWORD_EXTENDS, KEYWORD_EVENT,
|
||||
KEYWORD_FINAL, KEYWORD_FLOAT, KEYWORD_FOR, KEYWORD_FRIEND, KEYWORD_FUNCTION,
|
||||
KEYWORD_GOTO,
|
||||
KEYWORD_IF, KEYWORD_IMPLEMENTS, KEYWORD_IMPORT, KEYWORD_INLINE, KEYWORD_INT,
|
||||
KEYWORD_INOUT, KEYWORD_INPUT, KEYWORD_INTEGER, KEYWORD_INTERFACE,
|
||||
KEYWORD_INTERNAL,
|
||||
- KEYWORD_LOCAL, KEYWORD_LONG,
|
||||
+ KEYWORD_LIST, KEYWORD_LOCAL, KEYWORD_LOCALE, KEYWORD_LONG,
|
||||
KEYWORD_M_BAD_STATE, KEYWORD_M_BAD_TRANS, KEYWORD_M_STATE, KEYWORD_M_TRANS,
|
||||
- KEYWORD_MUTABLE,
|
||||
+ KEYWORD_MAP, KEYWORD_MUTABLE,
|
||||
KEYWORD_NAMESPACE, KEYWORD_NEW, KEYWORD_NEWCOV, KEYWORD_NATIVE,
|
||||
KEYWORD_OPERATOR, KEYWORD_OUTPUT, KEYWORD_OVERLOAD, KEYWORD_OVERRIDE,
|
||||
- KEYWORD_PACKED, KEYWORD_PORT, KEYWORD_PACKAGE, KEYWORD_PRIVATE,
|
||||
- KEYWORD_PROGRAM, KEYWORD_PROTECTED, KEYWORD_PUBLIC,
|
||||
+ KEYWORD_PACKED, KEYWORD_PATH, KEYWORD_PORT, KEYWORD_PACKAGE,
|
||||
+ KEYWORD_PRIVATE,
|
||||
+ KEYWORD_PROGRAM, KEYWORD_PROTECTED, KEYWORD_PUBLIC, KEYWORD_REPEAT,
|
||||
KEYWORD_REGISTER, KEYWORD_RETURN,
|
||||
KEYWORD_SHADOW, KEYWORD_STATE,
|
||||
KEYWORD_SHORT, KEYWORD_SIGNED, KEYWORD_STATIC, KEYWORD_STRING,
|
||||
- KEYWORD_STRUCT, KEYWORD_SWITCH, KEYWORD_SYNCHRONIZED,
|
||||
- KEYWORD_TASK, KEYWORD_TEMPLATE, KEYWORD_THIS, KEYWORD_THROW,
|
||||
+ KEYWORD_STRUCT, KEYWORD_SWITCH, KEYWORD_SYNCHRONIZED, KEYWORD_SYMBOL,
|
||||
+ KEYWORD_TASK, KEYWORD_TEMPLATE, KEYWORD_TERM, KEYWORD_THIS, KEYWORD_THROW,
|
||||
KEYWORD_THROWS, KEYWORD_TRANSIENT, KEYWORD_TRANS, KEYWORD_TRANSITION,
|
||||
KEYWORD_TRY, KEYWORD_TYPEDEF, KEYWORD_TYPENAME,
|
||||
- KEYWORD_UINT, KEYWORD_ULONG, KEYWORD_UNION, KEYWORD_UNSIGNED, KEYWORD_USHORT,
|
||||
+ KEYWORD_UINT, KEYWORD_ULONG, KEYWORD_UNION, KEYWORD_UNSIGNED, KEYWORD_UNTIL, KEYWORD_USHORT,
|
||||
KEYWORD_USING,
|
||||
KEYWORD_VIRTUAL, KEYWORD_VOID, KEYWORD_VOLATILE,
|
||||
KEYWORD_WCHAR_T, KEYWORD_WHILE
|
||||
@@ -101,7 +105,7 @@
|
||||
typedef struct sKeywordDesc {
|
||||
const char *name;
|
||||
keywordId id;
|
||||
- short isValid [5]; /* indicates languages for which kw is valid */
|
||||
+ short isValid [6]; /* indicates languages for which kw is valid */
|
||||
} keywordDesc;
|
||||
|
||||
/* Used for reporting the type of object parsed by nextToken ().
|
||||
@@ -137,6 +141,7 @@
|
||||
typedef enum eDeclaration {
|
||||
DECL_NONE,
|
||||
DECL_BASE, /* base type (default) */
|
||||
+ DECL_BLOCK, /* YCP unnamed block */
|
||||
DECL_CLASS,
|
||||
DECL_ENUM,
|
||||
DECL_EVENT,
|
||||
@@ -258,6 +263,7 @@
|
||||
static langType Lang_csharp;
|
||||
static langType Lang_java;
|
||||
static langType Lang_vera;
|
||||
+static langType Lang_ycp;
|
||||
static vString *Signature;
|
||||
static boolean CollectingSignature;
|
||||
|
||||
@@ -354,110 +360,138 @@
|
||||
{ FALSE, 'x', "externvar", "external variable declarations"}
|
||||
};
|
||||
|
||||
+/* Used to index into the YCPKinds table. */
|
||||
+typedef enum {
|
||||
+ YK_UNDEFINED = -1,
|
||||
+ YK_FUNCTION, YK_PROTOTYPE,
|
||||
+ YK_LOCAL,
|
||||
+ YK_VARIABLE
|
||||
+} ycpKind;
|
||||
+
|
||||
+static kindOption YCPKinds [] = {
|
||||
+ { TRUE, 'f', "function", "function definitions"},
|
||||
+ { FALSE, 'p', "prototype", "function prototypes"},
|
||||
+ { FALSE, 'l', "local", "local variables"},
|
||||
+ { TRUE, 'v', "variable", "variable definitions"},
|
||||
+};
|
||||
+
|
||||
static const keywordDesc KeywordTable [] = {
|
||||
- /* C++ */
|
||||
- /* ANSI C | C# Java */
|
||||
- /* | | | | Vera */
|
||||
- /* keyword keyword ID | | | | | */
|
||||
- { "__attribute__", KEYWORD_ATTRIBUTE, { 1, 1, 1, 0, 0 } },
|
||||
- { "abstract", KEYWORD_ABSTRACT, { 0, 0, 1, 1, 0 } },
|
||||
- { "bad_state", KEYWORD_BAD_STATE, { 0, 0, 0, 0, 1 } },
|
||||
- { "bad_trans", KEYWORD_BAD_TRANS, { 0, 0, 0, 0, 1 } },
|
||||
- { "bind", KEYWORD_BIND, { 0, 0, 0, 0, 1 } },
|
||||
- { "bind_var", KEYWORD_BIND_VAR, { 0, 0, 0, 0, 1 } },
|
||||
- { "bit", KEYWORD_BIT, { 0, 0, 0, 0, 1 } },
|
||||
- { "boolean", KEYWORD_BOOLEAN, { 0, 0, 0, 1, 0 } },
|
||||
- { "byte", KEYWORD_BYTE, { 0, 0, 0, 1, 0 } },
|
||||
- { "case", KEYWORD_CASE, { 1, 1, 1, 1, 0 } },
|
||||
- { "catch", KEYWORD_CATCH, { 0, 1, 1, 0, 0 } },
|
||||
- { "char", KEYWORD_CHAR, { 1, 1, 1, 1, 0 } },
|
||||
- { "class", KEYWORD_CLASS, { 0, 1, 1, 1, 1 } },
|
||||
- { "const", KEYWORD_CONST, { 1, 1, 1, 1, 0 } },
|
||||
- { "constraint", KEYWORD_CONSTRAINT, { 0, 0, 0, 0, 1 } },
|
||||
- { "coverage_block", KEYWORD_COVERAGE_BLOCK, { 0, 0, 0, 0, 1 } },
|
||||
- { "coverage_def", KEYWORD_COVERAGE_DEF, { 0, 0, 0, 0, 1 } },
|
||||
- { "do", KEYWORD_DO, { 1, 1, 1, 1, 0 } },
|
||||
- { "default", KEYWORD_DEFAULT, { 1, 1, 1, 1, 0 } },
|
||||
- { "delegate", KEYWORD_DELEGATE, { 0, 0, 1, 0, 0 } },
|
||||
- { "delete", KEYWORD_DELETE, { 0, 1, 0, 0, 0 } },
|
||||
- { "double", KEYWORD_DOUBLE, { 1, 1, 1, 1, 0 } },
|
||||
- { "else", KEYWORD_ELSE, { 1, 1, 0, 1, 0 } },
|
||||
- { "enum", KEYWORD_ENUM, { 1, 1, 1, 0, 1 } },
|
||||
- { "event", KEYWORD_EVENT, { 0, 0, 1, 0, 1 } },
|
||||
- { "explicit", KEYWORD_EXPLICIT, { 0, 1, 1, 0, 0 } },
|
||||
- { "extends", KEYWORD_EXTENDS, { 0, 0, 0, 1, 1 } },
|
||||
- { "extern", KEYWORD_EXTERN, { 1, 1, 1, 0, 1 } },
|
||||
- { "final", KEYWORD_FINAL, { 0, 0, 0, 1, 0 } },
|
||||
- { "float", KEYWORD_FLOAT, { 1, 1, 1, 1, 0 } },
|
||||
- { "for", KEYWORD_FOR, { 1, 1, 1, 1, 0 } },
|
||||
- { "friend", KEYWORD_FRIEND, { 0, 1, 0, 0, 0 } },
|
||||
- { "function", KEYWORD_FUNCTION, { 0, 0, 0, 0, 1 } },
|
||||
- { "goto", KEYWORD_GOTO, { 1, 1, 1, 1, 0 } },
|
||||
- { "if", KEYWORD_IF, { 1, 1, 1, 1, 0 } },
|
||||
- { "implements", KEYWORD_IMPLEMENTS, { 0, 0, 0, 1, 0 } },
|
||||
- { "import", KEYWORD_IMPORT, { 0, 0, 0, 1, 0 } },
|
||||
- { "inline", KEYWORD_INLINE, { 0, 1, 0, 0, 0 } },
|
||||
- { "inout", KEYWORD_INOUT, { 0, 0, 0, 0, 1 } },
|
||||
- { "input", KEYWORD_INPUT, { 0, 0, 0, 0, 1 } },
|
||||
- { "int", KEYWORD_INT, { 1, 1, 1, 1, 0 } },
|
||||
- { "integer", KEYWORD_INTEGER, { 0, 0, 0, 0, 1 } },
|
||||
- { "interface", KEYWORD_INTERFACE, { 0, 0, 1, 1, 1 } },
|
||||
- { "internal", KEYWORD_INTERNAL, { 0, 0, 1, 0, 0 } },
|
||||
- { "local", KEYWORD_LOCAL, { 0, 0, 0, 0, 1 } },
|
||||
- { "long", KEYWORD_LONG, { 1, 1, 1, 1, 0 } },
|
||||
- { "m_bad_state", KEYWORD_M_BAD_STATE, { 0, 0, 0, 0, 1 } },
|
||||
- { "m_bad_trans", KEYWORD_M_BAD_TRANS, { 0, 0, 0, 0, 1 } },
|
||||
- { "m_state", KEYWORD_M_STATE, { 0, 0, 0, 0, 1 } },
|
||||
- { "m_trans", KEYWORD_M_TRANS, { 0, 0, 0, 0, 1 } },
|
||||
- { "mutable", KEYWORD_MUTABLE, { 0, 1, 0, 0, 0 } },
|
||||
- { "namespace", KEYWORD_NAMESPACE, { 0, 1, 1, 0, 0 } },
|
||||
- { "native", KEYWORD_NATIVE, { 0, 0, 0, 1, 0 } },
|
||||
- { "new", KEYWORD_NEW, { 0, 1, 1, 1, 0 } },
|
||||
- { "newcov", KEYWORD_NEWCOV, { 0, 0, 0, 0, 1 } },
|
||||
- { "operator", KEYWORD_OPERATOR, { 0, 1, 1, 0, 0 } },
|
||||
- { "output", KEYWORD_OUTPUT, { 0, 0, 0, 0, 1 } },
|
||||
- { "overload", KEYWORD_OVERLOAD, { 0, 1, 0, 0, 0 } },
|
||||
- { "override", KEYWORD_OVERRIDE, { 0, 0, 1, 0, 0 } },
|
||||
- { "package", KEYWORD_PACKAGE, { 0, 0, 0, 1, 0 } },
|
||||
- { "packed", KEYWORD_PACKED, { 0, 0, 0, 0, 1 } },
|
||||
- { "port", KEYWORD_PORT, { 0, 0, 0, 0, 1 } },
|
||||
- { "private", KEYWORD_PRIVATE, { 0, 1, 1, 1, 0 } },
|
||||
- { "program", KEYWORD_PROGRAM, { 0, 0, 0, 0, 1 } },
|
||||
- { "protected", KEYWORD_PROTECTED, { 0, 1, 1, 1, 1 } },
|
||||
- { "public", KEYWORD_PUBLIC, { 0, 1, 1, 1, 1 } },
|
||||
- { "register", KEYWORD_REGISTER, { 1, 1, 0, 0, 0 } },
|
||||
- { "return", KEYWORD_RETURN, { 1, 1, 1, 1, 0 } },
|
||||
- { "shadow", KEYWORD_SHADOW, { 0, 0, 0, 0, 1 } },
|
||||
- { "short", KEYWORD_SHORT, { 1, 1, 1, 1, 0 } },
|
||||
- { "signed", KEYWORD_SIGNED, { 1, 1, 0, 0, 0 } },
|
||||
- { "state", KEYWORD_STATE, { 0, 0, 0, 0, 1 } },
|
||||
- { "static", KEYWORD_STATIC, { 1, 1, 1, 1, 1 } },
|
||||
- { "string", KEYWORD_STRING, { 0, 0, 1, 0, 1 } },
|
||||
- { "struct", KEYWORD_STRUCT, { 1, 1, 1, 0, 0 } },
|
||||
- { "switch", KEYWORD_SWITCH, { 1, 1, 1, 1, 0 } },
|
||||
- { "synchronized", KEYWORD_SYNCHRONIZED, { 0, 0, 0, 1, 0 } },
|
||||
- { "task", KEYWORD_TASK, { 0, 0, 0, 0, 1 } },
|
||||
- { "template", KEYWORD_TEMPLATE, { 0, 1, 0, 0, 0 } },
|
||||
- { "this", KEYWORD_THIS, { 0, 1, 1, 1, 0 } },
|
||||
- { "throw", KEYWORD_THROW, { 0, 1, 1, 1, 0 } },
|
||||
- { "throws", KEYWORD_THROWS, { 0, 0, 0, 1, 0 } },
|
||||
- { "trans", KEYWORD_TRANS, { 0, 0, 0, 0, 1 } },
|
||||
- { "transition", KEYWORD_TRANSITION, { 0, 0, 0, 0, 1 } },
|
||||
- { "transient", KEYWORD_TRANSIENT, { 0, 0, 0, 1, 0 } },
|
||||
- { "try", KEYWORD_TRY, { 0, 1, 1, 0, 0 } },
|
||||
- { "typedef", KEYWORD_TYPEDEF, { 1, 1, 1, 0, 1 } },
|
||||
- { "typename", KEYWORD_TYPENAME, { 0, 1, 0, 0, 0 } },
|
||||
- { "uint", KEYWORD_UINT, { 0, 0, 1, 0, 0 } },
|
||||
- { "ulong", KEYWORD_ULONG, { 0, 0, 1, 0, 0 } },
|
||||
- { "union", KEYWORD_UNION, { 1, 1, 0, 0, 0 } },
|
||||
- { "unsigned", KEYWORD_UNSIGNED, { 1, 1, 1, 0, 0 } },
|
||||
- { "ushort", KEYWORD_USHORT, { 0, 0, 1, 0, 0 } },
|
||||
- { "using", KEYWORD_USING, { 0, 1, 1, 0, 0 } },
|
||||
- { "virtual", KEYWORD_VIRTUAL, { 0, 1, 1, 0, 1 } },
|
||||
- { "void", KEYWORD_VOID, { 1, 1, 1, 1, 1 } },
|
||||
- { "volatile", KEYWORD_VOLATILE, { 1, 1, 1, 1, 0 } },
|
||||
- { "wchar_t", KEYWORD_WCHAR_T, { 1, 1, 1, 0, 0 } },
|
||||
- { "while", KEYWORD_WHILE, { 1, 1, 1, 1, 0 } }
|
||||
+ /* C++ YCP */
|
||||
+ /* ANSI C | C# Java | */
|
||||
+ /* | | | | Vera */
|
||||
+ /* keyword keyword ID | | | | | | */
|
||||
+ { "__attribute__", KEYWORD_ATTRIBUTE, { 1, 1, 1, 0, 0, 0 } },
|
||||
+ { "abstract", KEYWORD_ABSTRACT, { 0, 0, 1, 1, 0, 0 } },
|
||||
+ { "any", KEYWORD_ANY, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "bad_state", KEYWORD_BAD_STATE, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "bad_trans", KEYWORD_BAD_TRANS, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "bind", KEYWORD_BIND, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "bind_var", KEYWORD_BIND_VAR, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "bit", KEYWORD_BIT, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "block", KEYWORD_BLOCK, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "boolean", KEYWORD_BOOLEAN, { 0, 0, 0, 1, 0, 1 } },
|
||||
+ { "byte", KEYWORD_BYTE, { 0, 0, 0, 1, 0, 0 } },
|
||||
+ { "byteblock", KEYWORD_BYTEBLOCK, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "case", KEYWORD_CASE, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "catch", KEYWORD_CATCH, { 0, 1, 1, 0, 0, 0 } },
|
||||
+ { "char", KEYWORD_CHAR, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "class", KEYWORD_CLASS, { 0, 1, 1, 1, 1, 0 } },
|
||||
+ { "const", KEYWORD_CONST, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "constraint", KEYWORD_CONSTRAINT, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "coverage_block", KEYWORD_COVERAGE_BLOCK, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "coverage_def", KEYWORD_COVERAGE_DEF, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "declaration", KEYWORD_DECLARATION, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "do", KEYWORD_DO, { 1, 1, 1, 1, 0, 1 } },
|
||||
+ { "default", KEYWORD_DEFAULT, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "delegate", KEYWORD_DELEGATE, { 0, 0, 1, 0, 0, 0 } },
|
||||
+ { "delete", KEYWORD_DELETE, { 0, 1, 0, 0, 0, 0 } },
|
||||
+ { "double", KEYWORD_DOUBLE, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "else", KEYWORD_ELSE, { 1, 1, 0, 1, 0, 1 } },
|
||||
+ { "enum", KEYWORD_ENUM, { 1, 1, 1, 0, 1, 1 } },
|
||||
+ { "event", KEYWORD_EVENT, { 0, 0, 1, 0, 1, 0 } },
|
||||
+ { "explicit", KEYWORD_EXPLICIT, { 0, 1, 1, 0, 0, 0 } },
|
||||
+ { "expression", KEYWORD_EXPRESSION, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "extends", KEYWORD_EXTENDS, { 0, 0, 0, 1, 1, 0 } },
|
||||
+ { "extern", KEYWORD_EXTERN, { 1, 1, 1, 0, 1, 0 } },
|
||||
+ { "final", KEYWORD_FINAL, { 0, 0, 0, 1, 0, 1 } },
|
||||
+ { "float", KEYWORD_FLOAT, { 1, 1, 1, 1, 0, 1 } },
|
||||
+ { "for", KEYWORD_FOR, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "friend", KEYWORD_FRIEND, { 0, 1, 0, 0, 0, 0 } },
|
||||
+ { "function", KEYWORD_FUNCTION, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "goto", KEYWORD_GOTO, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "if", KEYWORD_IF, { 1, 1, 1, 1, 0, 1 } },
|
||||
+ { "implements", KEYWORD_IMPLEMENTS, { 0, 0, 0, 1, 0, 0 } },
|
||||
+ { "import", KEYWORD_IMPORT, { 0, 0, 0, 1, 0, 1 } },
|
||||
+ { "inline", KEYWORD_INLINE, { 0, 1, 0, 0, 0, 0 } },
|
||||
+ { "inout", KEYWORD_INOUT, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "input", KEYWORD_INPUT, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "int", KEYWORD_INT, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "integer", KEYWORD_INTEGER, { 0, 0, 0, 0, 1, 1 } },
|
||||
+ { "interface", KEYWORD_INTERFACE, { 0, 0, 1, 1, 1, 0 } },
|
||||
+ { "internal", KEYWORD_INTERNAL, { 0, 0, 1, 0, 0, 0 } },
|
||||
+ { "list", KEYWORD_LIST, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "local", KEYWORD_LOCAL, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "locale", KEYWORD_LOCALE, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "long", KEYWORD_LONG, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "m_bad_state", KEYWORD_M_BAD_STATE, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "m_bad_trans", KEYWORD_M_BAD_TRANS, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "m_state", KEYWORD_M_STATE, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "m_trans", KEYWORD_M_TRANS, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "map", KEYWORD_MAP, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "mutable", KEYWORD_MUTABLE, { 0, 1, 0, 0, 0, 0 } },
|
||||
+ { "namespace", KEYWORD_NAMESPACE, { 0, 1, 1, 0, 0, 0 } },
|
||||
+ { "native", KEYWORD_NATIVE, { 0, 0, 0, 1, 0, 0 } },
|
||||
+ { "new", KEYWORD_NEW, { 0, 1, 1, 1, 0, 0 } },
|
||||
+ { "newcov", KEYWORD_NEWCOV, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "operator", KEYWORD_OPERATOR, { 0, 1, 1, 0, 0, 0 } },
|
||||
+ { "output", KEYWORD_OUTPUT, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "overload", KEYWORD_OVERLOAD, { 0, 1, 0, 0, 0, 0 } },
|
||||
+ { "override", KEYWORD_OVERRIDE, { 0, 0, 1, 0, 0, 0 } },
|
||||
+ { "package", KEYWORD_PACKAGE, { 0, 0, 0, 1, 0, 0 } },
|
||||
+ { "packed", KEYWORD_PACKED, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "path", KEYWORD_PATH, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "port", KEYWORD_PORT, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "private", KEYWORD_PRIVATE, { 0, 1, 1, 1, 0, 0 } },
|
||||
+ { "program", KEYWORD_PROGRAM, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "protected", KEYWORD_PROTECTED, { 0, 1, 1, 1, 1, 0 } },
|
||||
+ { "public", KEYWORD_PUBLIC, { 0, 1, 1, 1, 1, 0 } },
|
||||
+ { "repeat", KEYWORD_REPEAT, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "register", KEYWORD_REGISTER, { 1, 1, 0, 0, 0, 0 } },
|
||||
+ { "return", KEYWORD_RETURN, { 1, 1, 1, 1, 0, 1 } },
|
||||
+ { "shadow", KEYWORD_SHADOW, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "short", KEYWORD_SHORT, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "signed", KEYWORD_SIGNED, { 1, 1, 0, 0, 0, 0 } },
|
||||
+ { "state", KEYWORD_STATE, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "static", KEYWORD_STATIC, { 1, 1, 1, 1, 1, 0 } },
|
||||
+ { "string", KEYWORD_STRING, { 0, 0, 1, 0, 1, 1 } },
|
||||
+ { "struct", KEYWORD_STRUCT, { 1, 1, 1, 0, 0, 0 } },
|
||||
+ { "switch", KEYWORD_SWITCH, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "synchronized", KEYWORD_SYNCHRONIZED, { 0, 0, 0, 1, 0, 0 } },
|
||||
+ { "symbol", KEYWORD_SYMBOL, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "task", KEYWORD_TASK, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "template", KEYWORD_TEMPLATE, { 0, 1, 0, 0, 0, 0 } },
|
||||
+ { "term", KEYWORD_TERM, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "this", KEYWORD_THIS, { 0, 1, 1, 1, 0, 0 } },
|
||||
+ { "throw", KEYWORD_THROW, { 0, 1, 1, 1, 0, 0 } },
|
||||
+ { "throws", KEYWORD_THROWS, { 0, 0, 0, 1, 0, 0 } },
|
||||
+ { "trans", KEYWORD_TRANS, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "transition", KEYWORD_TRANSITION, { 0, 0, 0, 0, 1, 0 } },
|
||||
+ { "transient", KEYWORD_TRANSIENT, { 0, 0, 0, 1, 0, 0 } },
|
||||
+ { "try", KEYWORD_TRY, { 0, 1, 1, 0, 0, 0 } },
|
||||
+ { "typedef", KEYWORD_TYPEDEF, { 1, 1, 1, 0, 1, 0 } },
|
||||
+ { "typename", KEYWORD_TYPENAME, { 0, 1, 0, 0, 0, 0 } },
|
||||
+ { "uint", KEYWORD_UINT, { 0, 0, 1, 0, 0, 0 } },
|
||||
+ { "ulong", KEYWORD_ULONG, { 0, 0, 1, 0, 0, 0 } },
|
||||
+ { "union", KEYWORD_UNION, { 1, 1, 0, 0, 0, 0 } },
|
||||
+ { "unsigned", KEYWORD_UNSIGNED, { 1, 1, 1, 0, 0, 0 } },
|
||||
+ { "until", KEYWORD_UNTIL, { 0, 0, 0, 0, 0, 1 } },
|
||||
+ { "ushort", KEYWORD_USHORT, { 0, 0, 1, 0, 0, 0 } },
|
||||
+ { "using", KEYWORD_USING, { 0, 1, 1, 0, 0, 0 } },
|
||||
+ { "virtual", KEYWORD_VIRTUAL, { 0, 1, 1, 0, 1, 0 } },
|
||||
+ { "void", KEYWORD_VOID, { 1, 1, 1, 1, 1, 1 } },
|
||||
+ { "volatile", KEYWORD_VOLATILE, { 1, 1, 1, 1, 0, 0 } },
|
||||
+ { "wchar_t", KEYWORD_WCHAR_T, { 1, 1, 1, 0, 0, 0 } },
|
||||
+ { "while", KEYWORD_WHILE, { 1, 1, 1, 1, 0, 1 } }
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -877,6 +911,21 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
+static ycpKind ycpTagKind (const tagType type)
|
||||
+{
|
||||
+ ycpKind result = YK_UNDEFINED;
|
||||
+ switch (type)
|
||||
+ {
|
||||
+ case TAG_FUNCTION: result = YK_FUNCTION; break;
|
||||
+ case TAG_PROTOTYPE: result = YK_PROTOTYPE; break;
|
||||
+ case TAG_LOCAL: result = YK_LOCAL; break;
|
||||
+ case TAG_VARIABLE: result = YK_VARIABLE; break;
|
||||
+
|
||||
+ default: Assert ("Bad YCP tag type" == NULL); break;
|
||||
+ }
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
static const char *tagName (const tagType type)
|
||||
{
|
||||
const char* result;
|
||||
@@ -886,6 +935,8 @@
|
||||
result = JavaKinds [javaTagKind (type)].name;
|
||||
else if (isLanguage (Lang_vera))
|
||||
result = VeraKinds [veraTagKind (type)].name;
|
||||
+ else if (isLanguage (Lang_ycp))
|
||||
+ result = YCPKinds [ycpTagKind (type)].name;
|
||||
else
|
||||
result = CKinds [cTagKind (type)].name;
|
||||
return result;
|
||||
@@ -900,6 +951,8 @@
|
||||
result = JavaKinds [javaTagKind (type)].letter;
|
||||
else if (isLanguage (Lang_vera))
|
||||
result = VeraKinds [veraTagKind (type)].letter;
|
||||
+ else if (isLanguage (Lang_ycp))
|
||||
+ result = YCPKinds [ycpTagKind (type)].letter;
|
||||
else
|
||||
result = CKinds [cTagKind (type)].letter;
|
||||
return result;
|
||||
@@ -955,7 +1008,8 @@
|
||||
|
||||
static void addContextSeparator (vString *const scope)
|
||||
{
|
||||
- if (isLanguage (Lang_c) || isLanguage (Lang_cpp))
|
||||
+ if (isLanguage (Lang_c) || isLanguage (Lang_cpp) ||
|
||||
+ isLanguage (Lang_ycp))
|
||||
vStringCatS (scope, "::");
|
||||
else if (isLanguage (Lang_java) || isLanguage (Lang_csharp))
|
||||
vStringCatS (scope, ".");
|
||||
@@ -1690,9 +1744,11 @@
|
||||
|
||||
case KEYWORD_NONE: processName (st); break;
|
||||
case KEYWORD_ABSTRACT: st->implementation = IMP_ABSTRACT; break;
|
||||
+ case KEYWORD_ANY: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_ATTRIBUTE: skipParens (); initToken (token); break;
|
||||
case KEYWORD_BIND: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_BIT: st->declaration = DECL_BASE; break;
|
||||
+ case KEYWORD_BYTEBLOCK: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_CATCH: skipParens (); skipBraces (); break;
|
||||
case KEYWORD_CHAR: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_CLASS: st->declaration = DECL_CLASS; break;
|
||||
@@ -1711,11 +1767,15 @@
|
||||
case KEYWORD_INT: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_INTEGER: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_INTERFACE: st->declaration = DECL_INTERFACE; break;
|
||||
+ case KEYWORD_LIST: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_LOCAL: setAccess (st, ACCESS_LOCAL); break;
|
||||
+ case KEYWORD_LOCALE: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_LONG: st->declaration = DECL_BASE; break;
|
||||
+ case KEYWORD_MAP: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_NAMESPACE: st->declaration = DECL_NAMESPACE; break;
|
||||
case KEYWORD_OPERATOR: readOperator (st); break;
|
||||
case KEYWORD_PACKAGE: readPackage (st); break;
|
||||
+ case KEYWORD_PATH: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_PRIVATE: setAccess (st, ACCESS_PRIVATE); break;
|
||||
case KEYWORD_PROGRAM: st->declaration = DECL_PROGRAM; break;
|
||||
case KEYWORD_PROTECTED: setAccess (st, ACCESS_PROTECTED); break;
|
||||
@@ -1725,7 +1785,9 @@
|
||||
case KEYWORD_SIGNED: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_STRING: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_STRUCT: st->declaration = DECL_STRUCT; break;
|
||||
+ case KEYWORD_SYMBOL: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_TASK: st->declaration = DECL_TASK; break;
|
||||
+ case KEYWORD_TERM: st->declaration = DECL_BASE; break;
|
||||
case KEYWORD_THROWS: discardTypeList (token); break;
|
||||
case KEYWORD_UNION: st->declaration = DECL_UNION; break;
|
||||
case KEYWORD_UNSIGNED: st->declaration = DECL_BASE; break;
|
||||
@@ -1764,7 +1826,9 @@
|
||||
|
||||
case KEYWORD_FOR:
|
||||
case KEYWORD_IF:
|
||||
+ case KEYWORD_REPEAT:
|
||||
case KEYWORD_SWITCH:
|
||||
+ case KEYWORD_UNTIL:
|
||||
case KEYWORD_WHILE:
|
||||
{
|
||||
int c = skipToNonWhite ();
|
||||
@@ -2253,7 +2317,8 @@
|
||||
{
|
||||
if (vStringLength (st->context->name) > 0)
|
||||
{
|
||||
- if (isLanguage (Lang_c) || isLanguage (Lang_cpp))
|
||||
+ if (isLanguage (Lang_c) || isLanguage (Lang_cpp) ||
|
||||
+ isLanguage (Lang_ycp))
|
||||
vStringCatS (st->context->name, "::");
|
||||
else if (isLanguage (Lang_java) || isLanguage (Lang_csharp))
|
||||
vStringCatS (st->context->name, ".");
|
||||
@@ -2569,7 +2634,12 @@
|
||||
st->inFunction = TRUE;
|
||||
/* fall through */
|
||||
default:
|
||||
- if (includeTag (TAG_LOCAL, FALSE))
|
||||
+ if (isLanguage (Lang_ycp) && ! st->haveQualifyingName)
|
||||
+ {
|
||||
+ st->declaration = DECL_BLOCK;
|
||||
+ createTags (nestLevel, st);
|
||||
+ }
|
||||
+ else if (includeTag (TAG_LOCAL, FALSE))
|
||||
createTags (nestLevel, st);
|
||||
else
|
||||
skipToMatch ("{}");
|
||||
@@ -2610,6 +2680,7 @@
|
||||
}
|
||||
}
|
||||
else if (isContextualStatement (st) ||
|
||||
+ st->declaration == DECL_BLOCK ||
|
||||
st->declaration == DECL_NAMESPACE ||
|
||||
st->declaration == DECL_PROGRAM)
|
||||
{
|
||||
@@ -2769,6 +2840,12 @@
|
||||
buildKeywordHash (language, 4);
|
||||
}
|
||||
|
||||
+static void initializeYcpParser (const langType language)
|
||||
+{
|
||||
+ Lang_ycp = language;
|
||||
+ buildKeywordHash (language, 5);
|
||||
+}
|
||||
+
|
||||
extern parserDefinition* CParser (void)
|
||||
{
|
||||
static const char *const extensions [] = { "c", NULL };
|
||||
@@ -2835,4 +2912,16 @@
|
||||
return def;
|
||||
}
|
||||
|
||||
+extern parserDefinition* YcpParser (void)
|
||||
+{
|
||||
+ static const char *const extensions [] = { "ycp", NULL };
|
||||
+ parserDefinition* def = parserNew ("YCP");
|
||||
+ def->kinds = YCPKinds;
|
||||
+ def->kindCount = KIND_COUNT (YCPKinds);
|
||||
+ def->extensions = extensions;
|
||||
+ def->parser2 = findCTags;
|
||||
+ def->initialize = initializeYcpParser;
|
||||
+ return def;
|
||||
+}
|
||||
+
|
||||
/* vi:set tabstop=4 shiftwidth=4 noexpandtab: */
|
||||
--- parsers.h
|
||||
+++ parsers.h
|
||||
@@ -48,7 +48,8 @@
|
||||
VeraParser, \
|
||||
VerilogParser, \
|
||||
VimParser, \
|
||||
- YaccParser
|
||||
+ YaccParser, \
|
||||
+ YcpParser
|
||||
|
||||
#endif /* _PARSERS_H */
|
||||
|
176
ctags.changes
Normal file
176
ctags.changes
Normal file
@ -0,0 +1,176 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 20 12:49:51 CET 2006 - schwab@suse.de
|
||||
|
||||
- Update etags from CVS.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 30 15:10:42 CEST 2006 - schwab@suse.de
|
||||
|
||||
- Update to ctags 5.6
|
||||
* Reformatted code for independence of tab stop setting.
|
||||
* Changed default configuration to disable installation of etags links.
|
||||
* Changed --langmap to first unmap each supplied extension from other
|
||||
languages.
|
||||
* Added support for ASP constants [ASP, Patch #961842].
|
||||
* Added support for GNU make extensions [Make].
|
||||
* Added .mk as extension recognized as a make language file [Make].
|
||||
* Added missing help for list-maps options [Bug #1201826].
|
||||
* Added new extension field "typeref" [thanks to Bram Moolenaar].
|
||||
* Extended functionality of Ruby parser with patch from Elliot Hughes
|
||||
[Ruby].
|
||||
* Fixed creation of TAGS file with etags-include but no files [Bug
|
||||
#941233].
|
||||
* Fixed problem reading last line of list file (-L) without final
|
||||
newline.
|
||||
* Fixed infinite loop that could occur on files without final newline
|
||||
[C, Java].
|
||||
* Fixed incorrect tag for first field of table [SQL].
|
||||
* Fixed missing tags for functions beginning with underscore [Sh].
|
||||
* Fixed missing tags for functions with variable arg list [C, Bug
|
||||
#1201689].
|
||||
* Fixed parsing problem with parentheses in argument list [C, Bug
|
||||
#1085585].
|
||||
* Fixed problem in preprocessor directive handling [C, Bug #1086609].
|
||||
- Update etags to 17.17.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 7 23:18:46 CET 2006 - od@suse.de
|
||||
|
||||
- wrote and added a YCP parser based on the C code parser
|
||||
(ctags-5.5.4-ycp-parser.diff)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 25 21:35:15 CET 2006 - mls@suse.de
|
||||
|
||||
- converted neededforbuild to BuildRequires
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 7 20:46:09 CET 2005 - od@suse.de
|
||||
|
||||
- Added option -A/--allow-duplicates to gnuctags
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 7 02:28:07 CET 2005 - od@suse.de
|
||||
|
||||
- Don't strip etags/gnuctags
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 18 12:44:46 CEST 2005 - schwab@suse.de
|
||||
|
||||
- Update to etags 17.14.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 15 17:06:34 CET 2004 - schwab@suse.de
|
||||
|
||||
- Update to etags 17.5.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 4 22:17:18 CEST 2004 - schwab@suse.de
|
||||
|
||||
- Update to ctags 5.5.4.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jan 10 20:57:54 CET 2004 - adrian@suse.de
|
||||
|
||||
- add %defattr
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 26 09:32:30 CEST 2003 - schwab@suse.de
|
||||
|
||||
- Update to ctags 5.5.2.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 5 20:47:31 CEST 2003 - schwab@suse.de
|
||||
|
||||
- Update to ctags 5.5.1.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 2 13:29:55 CEST 2003 - schwab@suse.de
|
||||
|
||||
- Update to ctags 5.5.
|
||||
- Update to etags 16.56.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 17 17:34:28 CEST 2002 - ro@suse.de
|
||||
|
||||
- removed bogus self-provides
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 17 17:11:00 CEST 2002 - schwab@suse.de
|
||||
|
||||
- Update to ctags 5.3.1.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 18 10:53:15 CEST 2002 - schwab@suse.de
|
||||
|
||||
- Update to ctags 5.3.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Dec 14 15:59:05 CET 2001 - schwab@suse.de
|
||||
|
||||
- Update ctags to 5.1.
|
||||
- Update etags to 14.21.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu May 18 13:26:59 CEST 2000 - schwab@suse.de
|
||||
|
||||
- Use BuildRoot.
|
||||
- Remove etags.c changes again.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed May 17 19:33:55 CEST 2000 - kasal@suse.cz
|
||||
|
||||
- strip etags/gnuctags
|
||||
- Fixed etags.c changes
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 15 16:49:20 CEST 2000 - schwab@suse.de
|
||||
|
||||
- Discard etags.c changes (#2772).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 31 18:15:00 CET 2000 - werner@suse.de
|
||||
|
||||
- Really rename gctags to gnuctags
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 31 12:41:54 CET 2000 - kasal@suse.cz
|
||||
|
||||
- fixed spec file to really use the *dif files
|
||||
- gctags renamed to gnuctags
|
||||
- rewrote the NOTEs in the manpages and added
|
||||
"see also (gnu)ctags(1), gctags(1) and global(1)"
|
||||
- etags.c now uses #ifdef's
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 26 19:15:48 CET 2000 - werner@suse.de
|
||||
|
||||
- New ctags version 3.3.1
|
||||
* Disable etags (is usable with `ctags -e')
|
||||
- Add etags/ctags from Emacs sources
|
||||
* rename this ctags with gctags
|
||||
- Make some NOTEs within the manual pages of both packages
|
||||
- Add a README.SuSE to explain why we have two versions
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 13 17:23:57 CEST 1999 - bs@suse.de
|
||||
|
||||
- ran old prepare_spec on spec file to switch to new prepare_spec.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Sep 8 11:59:42 CEST 1999 - schwab@suse.de
|
||||
|
||||
- specfile cleanup
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jun 15 16:55:26 MEST 1999 - uli@suse.de
|
||||
|
||||
- update -> 3.2.2
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Sun Apr 13 23:04:29 MEST 1997 - florian@suse.de
|
||||
|
||||
|
||||
- new package with ctags 1.5 (used to be together with vim.tgz)
|
||||
|
||||
|
185
ctags.spec
Normal file
185
ctags.spec
Normal file
@ -0,0 +1,185 @@
|
||||
#
|
||||
# spec file for package ctags (Version 2006.12.26)
|
||||
#
|
||||
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
# package are under the same license as the package itself.
|
||||
#
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
# norootforbuild
|
||||
|
||||
Name: ctags
|
||||
License: GNU General Public License (GPL)
|
||||
Group: Development/Tools/Navigators
|
||||
Autoreqprov: on
|
||||
%define exuberant_ver 5.6
|
||||
%define emacs_ver 17.23
|
||||
Version: 2006.12.26
|
||||
Release: 1
|
||||
Summary: A Program to Generate Tag Files for Use with vi and Other Editors
|
||||
URL: http://ctags.sourceforge.net/
|
||||
Source0: ftp://ftp.sourceforge.net/pub/sourceforge/c/ct/ctags/ctags-%{exuberant_ver}.tar.gz
|
||||
Source1: etags-%{emacs_ver}.tar.gz
|
||||
Source2: README.SuSE
|
||||
Patch0: ctags-%{exuberant_ver}.diff
|
||||
Patch1: ctags-ycp-parser.diff
|
||||
Patch2: etags-%{emacs_ver}.diff
|
||||
Patch3: etags-gnuctags-allow-duplicates.diff
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%description
|
||||
CTags (from Darren Hiebert) generates tag files from source code in C,
|
||||
C++, Eiffel, Fortran, and Java to be used with vi and its derivatives,
|
||||
Emacs, and several other editors.
|
||||
|
||||
ETags (from GNU Emacs sources) generates tag files from source code in
|
||||
Pascal, Cobol, Ada, Perl, LaTeX, Scheme, Emacs Lisp/Common Lisp,
|
||||
Postscript, Erlang, Python, Prolog, and most assembler-like syntaxes.
|
||||
|
||||
|
||||
|
||||
Authors:
|
||||
--------
|
||||
Darren Hiebert <darren@hiebert.com>
|
||||
Ken Arnold
|
||||
Francesco Potortì <pot@gnu.org>
|
||||
|
||||
%prep
|
||||
%setup -n ctags-%{exuberant_ver} -b 1
|
||||
%patch
|
||||
%patch1
|
||||
cd ../etags-%{emacs_ver}
|
||||
%patch2
|
||||
%patch3
|
||||
|
||||
%build
|
||||
CC=gcc
|
||||
CFLAGS="$RPM_OPT_FLAGS -Wall"
|
||||
export CFLAGS CC
|
||||
./configure --prefix=/usr --mandir=%{_mandir} --disable-etags
|
||||
make
|
||||
cd ../etags-%{emacs_ver}
|
||||
CFLAGS="$CFLAGS -I../ctags-%{exuberant_ver}"
|
||||
CFLAGS="$CFLAGS -DHAVE_CONFIG_H -DHAVE_UNISTD_H -DHAVE_GETCWD -DVERSION=\"%{emacs_ver}\""
|
||||
$CC $CFLAGS -o etags etags.c
|
||||
$CC $CFLAGS -DCTAGS -o gnuctags etags.c
|
||||
|
||||
%install
|
||||
make install prefix=$RPM_BUILD_ROOT/usr mandir=$RPM_BUILD_ROOT%{_mandir}
|
||||
mkdir -p $RPM_BUILD_ROOT%{_docdir}/ctags/Exuberant_Ctags
|
||||
install -m 644 COPYING EXTENDING.html FAQ README $RPM_BUILD_ROOT%{_docdir}/ctags/Exuberant_Ctags
|
||||
install -m 644 %{S:2} $RPM_BUILD_ROOT%{_docdir}/ctags
|
||||
cd ../etags-%{emacs_ver}
|
||||
install -m 755 etags gnuctags $RPM_BUILD_ROOT/usr/bin
|
||||
install -m 644 etags.1 $RPM_BUILD_ROOT%{_mandir}/man1
|
||||
ln -sf etags.1.gz $RPM_BUILD_ROOT%{_mandir}/man1/gnuctags.1.gz
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
/usr/bin/ctags
|
||||
/usr/bin/gnuctags
|
||||
/usr/bin/etags
|
||||
%{_mandir}/man1/ctags.1.gz
|
||||
%{_mandir}/man1/gnuctags.1.gz
|
||||
%{_mandir}/man1/etags.1.gz
|
||||
%{_docdir}/ctags
|
||||
|
||||
%changelog -n ctags
|
||||
* Wed Dec 20 2006 - schwab@suse.de
|
||||
- Update etags from CVS.
|
||||
* Tue May 30 2006 - schwab@suse.de
|
||||
- Update to ctags 5.6
|
||||
* Reformatted code for independence of tab stop setting.
|
||||
* Changed default configuration to disable installation of etags links.
|
||||
* Changed --langmap to first unmap each supplied extension from other
|
||||
languages.
|
||||
* Added support for ASP constants [ASP, Patch #961842].
|
||||
* Added support for GNU make extensions [Make].
|
||||
* Added .mk as extension recognized as a make language file [Make].
|
||||
* Added missing help for list-maps options [Bug #1201826].
|
||||
* Added new extension field "typeref" [thanks to Bram Moolenaar].
|
||||
* Extended functionality of Ruby parser with patch from Elliot Hughes
|
||||
[Ruby].
|
||||
* Fixed creation of TAGS file with etags-include but no files [Bug
|
||||
[#941233]].
|
||||
* Fixed problem reading last line of list file (-L) without final
|
||||
newline.
|
||||
* Fixed infinite loop that could occur on files without final newline
|
||||
[C, Java].
|
||||
* Fixed incorrect tag for first field of table [SQL].
|
||||
* Fixed missing tags for functions beginning with underscore [Sh].
|
||||
* Fixed missing tags for functions with variable arg list [C, Bug
|
||||
[#1201689]].
|
||||
* Fixed parsing problem with parentheses in argument list [C, Bug
|
||||
[#1085585]].
|
||||
* Fixed problem in preprocessor directive handling [C, Bug #1086609].
|
||||
- Update etags to 17.17.
|
||||
* Tue Mar 07 2006 - od@suse.de
|
||||
- wrote and added a YCP parser based on the C code parser
|
||||
(ctags-5.5.4-ycp-parser.diff)
|
||||
* Wed Jan 25 2006 - mls@suse.de
|
||||
- converted neededforbuild to BuildRequires
|
||||
* Wed Dec 07 2005 - od@suse.de
|
||||
- Added option -A/--allow-duplicates to gnuctags
|
||||
* Wed Dec 07 2005 - od@suse.de
|
||||
- Don't strip etags/gnuctags
|
||||
* Tue Oct 18 2005 - schwab@suse.de
|
||||
- Update to etags 17.14.
|
||||
* Mon Nov 15 2004 - schwab@suse.de
|
||||
- Update to etags 17.5.
|
||||
* Tue May 04 2004 - schwab@suse.de
|
||||
- Update to ctags 5.5.4.
|
||||
* Sat Jan 10 2004 - adrian@suse.de
|
||||
- add %%defattr
|
||||
* Fri Sep 26 2003 - schwab@suse.de
|
||||
- Update to ctags 5.5.2.
|
||||
* Tue Aug 05 2003 - schwab@suse.de
|
||||
- Update to ctags 5.5.1.
|
||||
* Wed Apr 02 2003 - schwab@suse.de
|
||||
- Update to ctags 5.5.
|
||||
- Update to etags 16.56.
|
||||
* Tue Sep 17 2002 - ro@suse.de
|
||||
- removed bogus self-provides
|
||||
* Tue Sep 17 2002 - schwab@suse.de
|
||||
- Update to ctags 5.3.1.
|
||||
* Thu Jul 18 2002 - schwab@suse.de
|
||||
- Update to ctags 5.3.
|
||||
* Fri Dec 14 2001 - schwab@suse.de
|
||||
- Update ctags to 5.1.
|
||||
- Update etags to 14.21.
|
||||
* Thu May 18 2000 - schwab@suse.de
|
||||
- Use BuildRoot.
|
||||
- Remove etags.c changes again.
|
||||
* Wed May 17 2000 - kasal@suse.cz
|
||||
- strip etags/gnuctags
|
||||
- Fixed etags.c changes
|
||||
* Mon May 15 2000 - schwab@suse.de
|
||||
- Discard etags.c changes (#2772).
|
||||
* Mon Jan 31 2000 - werner@suse.de
|
||||
- Really rename gctags to gnuctags
|
||||
* Mon Jan 31 2000 - kasal@suse.cz
|
||||
- fixed spec file to really use the *dif files
|
||||
- gctags renamed to gnuctags
|
||||
- rewrote the NOTEs in the manpages and added
|
||||
"see also (gnu)ctags(1), gctags(1) and global(1)"
|
||||
- etags.c now uses #ifdef's
|
||||
* Wed Jan 26 2000 - werner@suse.de
|
||||
- New ctags version 3.3.1
|
||||
* Disable etags (is usable with `ctags -e')
|
||||
- Add etags/ctags from Emacs sources
|
||||
* rename this ctags with gctags
|
||||
- Make some NOTEs within the manual pages of both packages
|
||||
- Add a README.SuSE to explain why we have two versions
|
||||
* Mon Sep 13 1999 - bs@suse.de
|
||||
- ran old prepare_spec on spec file to switch to new prepare_spec.
|
||||
* Wed Sep 08 1999 - schwab@suse.de
|
||||
- specfile cleanup
|
||||
* Tue Jun 15 1999 - uli@suse.de
|
||||
- update -> 3.2.2
|
||||
* Sun Apr 13 1997 - florian@suse.de
|
||||
- new package with ctags 1.5 (used to be together with vim.tgz)
|
152
etags-17.23.diff
Normal file
152
etags-17.23.diff
Normal file
@ -0,0 +1,152 @@
|
||||
--- etags.1
|
||||
+++ etags.1
|
||||
@@ -9,7 +9,7 @@
|
||||
..
|
||||
|
||||
.SH NAME
|
||||
-etags, ctags \- generate tag file for Emacs, vi
|
||||
+etags, gnuctags \- generate tag file for Emacs, vi
|
||||
.SH SYNOPSIS
|
||||
.hy 0
|
||||
.na
|
||||
@@ -26,7 +26,7 @@
|
||||
[\|\-\-help\|] [\|\-\-version\|]
|
||||
\fIfile\fP .\|.\|.
|
||||
|
||||
-\fBctags\fP [\|\-aCdgIRVh\|] [\|\-BtTuvwx\|] [\|\-l \fIlanguage\fP\|]
|
||||
+\fBgnuctags\fP [\|\-aCdgIRVh\|] [\|\-BtTuvwx\|] [\|\-l \fIlanguage\fP\|]
|
||||
.if n .br
|
||||
[\|\-o \fItagfile\fP\|] [\|\-r \fIregexp\fP\|]
|
||||
[\|\-\-parse\-stdin=\fIfile\fP\|]
|
||||
@@ -46,7 +46,7 @@
|
||||
The \|\fBetags\fP\| program is used to create a tag table file, in a format
|
||||
understood by
|
||||
.BR emacs ( 1 )\c
|
||||
-\&; the \|\fBctags\fP\| program is used to create a similar table in a
|
||||
+\&; the \|\fBgnuctags\fP\| program is used to create a similar table in a
|
||||
format understood by
|
||||
.BR vi ( 1 )\c
|
||||
\&. Both forms of the program understand
|
||||
@@ -56,7 +56,7 @@
|
||||
most assembler\-like syntaxes.
|
||||
Both forms read the files specified on the command line, and write a tag
|
||||
table (defaults: \fBTAGS\fP for \fBetags\fP, \fBtags\fP for
|
||||
-\fBctags\fP) in the current working directory.
|
||||
+\fBgnuctags\fP) in the current working directory.
|
||||
Files specified with relative file names will be recorded in the tag
|
||||
table with file names relative to the directory where the tag table
|
||||
resides. If the tag table is in /dev, however, the file names are made
|
||||
@@ -71,7 +71,7 @@
|
||||
language, overriding guesses based on filename extensions.
|
||||
.SH OPTIONS
|
||||
Some options make sense only for the \fBvi\fP style tag files produced
|
||||
-by ctags;
|
||||
+by gnuctags;
|
||||
\fBetags\fP does not recognize them.
|
||||
The programs accept unambiguous abbreviations for long option names.
|
||||
.TP
|
||||
@@ -85,7 +85,7 @@
|
||||
the delimiter `\|\fB?\fP\|', to search \fIbackwards\fP through files.
|
||||
The default is to use the delimiter `\|\fB/\fP\|', to search \fIforwards\fP
|
||||
through files.
|
||||
-Only \fBctags\fP accepts this option.
|
||||
+Only \fBgnuctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-\-declarations
|
||||
In C and derived languages, create tags for function declarations,
|
||||
@@ -94,24 +94,24 @@
|
||||
.B \-d, \-\-defines
|
||||
Create tag entries for C preprocessor constant definitions
|
||||
and enum constants, too. Since this is the default behavior of
|
||||
-\fBetags\fP, only \fBctags\fP accepts this option.
|
||||
+\fBetags\fP, only \fBgnuctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-D, \-\-no\-defines
|
||||
Do not create tag entries for C preprocessor constant definitions
|
||||
and enum constants.
|
||||
This may make the tags file much smaller if many header files are tagged.
|
||||
-Since this is the default behavior of \fBctags\fP, only \fBetags\fP
|
||||
+Since this is the default behavior of \fBgnuctags\fP, only \fBetags\fP
|
||||
accepts this option.
|
||||
.TP
|
||||
.B \-\-globals
|
||||
Create tag entries for global variables in C, C++, Objective C, Java,
|
||||
and Perl.
|
||||
-Since this is the default behavior of \fBetags\fP, only \fBctags\fP
|
||||
+Since this is the default behavior of \fBetags\fP, only \fBgnuctags\fP
|
||||
accepts this option.
|
||||
.TP
|
||||
.B \-\-no\-globals
|
||||
Do not tag global variables. Typically this reduces the file size by
|
||||
-one fourth. Since this is the default behavior of \fBctags\fP, only
|
||||
+one fourth. Since this is the default behavior of \fBgnuctags\fP, only
|
||||
\fBetags\fP accepts this option.
|
||||
.TP
|
||||
\fB\-i\fP \fIfile\fP, \fB\-\-include=\fIfile\fP
|
||||
@@ -168,7 +168,7 @@
|
||||
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
|
||||
+add a \fInameregexp\fP, to narrow down the tag scope. \fBgnuctags\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
|
||||
@@ -224,7 +224,7 @@
|
||||
|
||||
.br
|
||||
A regexp can be preceded by {\fIlang\fP}, thus restricting it to match
|
||||
-lines of files of the specified language. Use \fBetags --help\fP to obtain
|
||||
+lines of files of the specified language. Use \fBetags \-\-help\fP to obtain
|
||||
a list of the recognised languages. This feature is particularly useful inside
|
||||
\fBregex files\fP. A regex file contains one regex per line. Empty lines,
|
||||
and those lines beginning with space or tab are ignored. Lines beginning
|
||||
@@ -243,12 +243,12 @@
|
||||
.TP
|
||||
.B \-t, \-\-typedefs
|
||||
Record typedefs in C code as tags. Since this is the default behavior
|
||||
-of \fBetags\fP, only \fBctags\fP accepts this option.
|
||||
+of \fBetags\fP, only \fBgnuctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-T, \-\-typedefs\-and\-c++
|
||||
Generate tag entries for typedefs, struct, enum, and union tags, and
|
||||
C++ member functions. Since this is the default behavior
|
||||
-of \fBetags\fP, only \fBctags\fP accepts this option.
|
||||
+of \fBetags\fP, only \fBgnuctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-u, \-\-update
|
||||
Update tag entries for \fIfiles\fP specified on command line, leaving
|
||||
@@ -256,11 +256,11 @@
|
||||
by deleting the existing entries for the given files and then
|
||||
rewriting the new entries at the end of the tags file. It is often
|
||||
faster to simply rebuild the entire tag file than to use this.
|
||||
-Only \fBctags\fP accepts this option.
|
||||
+Only \fBgnuctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-v, \-\-vgrind
|
||||
Instead of generating a tag file, write index (in \fBvgrind\fP format)
|
||||
-to standard output. Only \fBctags\fP accepts this option.
|
||||
+to standard output. Only \fBgnuctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-w, \-\-no\-warn
|
||||
Suppress warning messages about duplicate entries. The \fBetags\fP
|
||||
@@ -269,7 +269,7 @@
|
||||
.TP
|
||||
.B \-x, \-\-cxref
|
||||
Instead of generating a tag file, write a cross reference (in
|
||||
-\fBcxref\fP format) to standard output. Only \fBctags\fP accepts this option.
|
||||
+\fBcxref\fP format) to standard output. Only \fBgnuctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-h, \-H, \-\-help
|
||||
Print usage information. Followed by one or more \-\-language=LANG
|
||||
@@ -283,8 +283,10 @@
|
||||
`\|\fBemacs\fP\|' entry in \fBinfo\fP; \fIGNU Emacs Manual\fP, Richard
|
||||
Stallman.
|
||||
.br
|
||||
+.BR ctags ( 1 ),
|
||||
.BR cxref ( 1 ),
|
||||
.BR emacs ( 1 ),
|
||||
+.BR gnuctags ( 1 ),
|
||||
.BR vgrind ( 1 ),
|
||||
.BR vi ( 1 ).
|
||||
|
3
etags-17.23.tar.gz
Normal file
3
etags-17.23.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:516c03e78290d7e7258d24e32bfe6937567d6f1c174b7aa2ceb8859246919156
|
||||
size 55258
|
90
etags-gnuctags-allow-duplicates.diff
Normal file
90
etags-gnuctags-allow-duplicates.diff
Normal file
@ -0,0 +1,90 @@
|
||||
--- etags.1
|
||||
+++ etags.1
|
||||
@@ -26,12 +26,12 @@
|
||||
[\|\-\-help\|] [\|\-\-version\|]
|
||||
\fIfile\fP .\|.\|.
|
||||
|
||||
-\fBgnuctags\fP [\|\-aCdgIRVh\|] [\|\-BtTuvwx\|] [\|\-l \fIlanguage\fP\|]
|
||||
+\fBgnuctags\fP [\|\-aCdgIRVh\|] [\|\-ABtTuvwx\|] [\|\-l \fIlanguage\fP\|]
|
||||
.if n .br
|
||||
[\|\-o \fItagfile\fP\|] [\|\-r \fIregexp\fP\|]
|
||||
[\|\-\-parse\-stdin=\fIfile\fP\|]
|
||||
.br
|
||||
-[\|\-\-append\|] [\|\-\-backward\-search\|]
|
||||
+[\|\-\-allow\-duplicates\|] [\|\-\-append\|] [\|\-\-backward\-search\|]
|
||||
[\|\-\-cxref\|] [\|\-\-defines\|] [\|\-\-forward\-search\|]
|
||||
[\|\-\-globals\|] [\|\-\-ignore\-indentation\|]
|
||||
[\|\-\-language=\fIlanguage\fP\|] [\|\-\-members\|]
|
||||
@@ -75,6 +75,12 @@
|
||||
\fBetags\fP does not recognize them.
|
||||
The programs accept unambiguous abbreviations for long option names.
|
||||
.TP
|
||||
+.B \-A, \-\-allow\-duplicates
|
||||
+Create entries for duplicate tags. Some editors accept tags files with
|
||||
+entries for duplicate tags.
|
||||
+Since this is the default behavior of \fBetags\fP, only \fBgnuctags\fP
|
||||
+accepts this option.
|
||||
+.TP
|
||||
.B \-a, \-\-append
|
||||
Append to existing tag file. (For \fBvi\fP-format tag files, see also
|
||||
\fB\-\-update\fP.)
|
||||
--- etags.c
|
||||
+++ etags.c
|
||||
@@ -444,6 +444,7 @@
|
||||
*midtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789";
|
||||
|
||||
static bool append_to_tagfile; /* -a: append to tags */
|
||||
+static bool allow_duplicates; /* -A: allow duplicate tags */
|
||||
/* The next four default to TRUE for etags, but to FALSE for ctags. */
|
||||
static bool typedefs; /* -t: create tags for C and Ada typedefs */
|
||||
static bool typedefs_or_cplusplus; /* -T: create tags for C typedefs, level */
|
||||
@@ -496,6 +497,7 @@
|
||||
{ "version", no_argument, NULL, 'V' },
|
||||
|
||||
#if CTAGS /* Ctags options */
|
||||
+ { "allow-duplicates", no_argument, NULL, 'A' },
|
||||
{ "backward-search", no_argument, NULL, 'B' },
|
||||
{ "cxref", no_argument, NULL, 'x' },
|
||||
{ "defines", no_argument, NULL, 'd' },
|
||||
@@ -875,6 +877,12 @@
|
||||
Absolute names are stored in the output file as they are.\n\
|
||||
Relative ones are stored relative to the output file's directory.\n");
|
||||
|
||||
+ if (CTAGS)
|
||||
+ {
|
||||
+ puts ("-A, --allow-duplicates\n\
|
||||
+ Allow duplicate tag entries.");
|
||||
+ }
|
||||
+
|
||||
puts ("-a, --append\n\
|
||||
Append tag entries to existing tags file.");
|
||||
|
||||
@@ -1175,7 +1183,7 @@
|
||||
non-options arguments to be at the end, but leaves them alone. */
|
||||
optstring = concat (NO_LONG_OPTIONS ? "" : "-",
|
||||
"ac:Cf:Il:o:r:RSVhH",
|
||||
- (CTAGS) ? "BxdtTuvw" : "Di:");
|
||||
+ (CTAGS) ? "ABxdtTuvw" : "Di:");
|
||||
|
||||
while ((opt = getopt_long (argc, argv, optstring, longopts, NULL)) != EOF)
|
||||
switch (opt)
|
||||
@@ -1259,6 +1267,7 @@
|
||||
case 'i': included_files[nincluded_files++] = optarg; break;
|
||||
|
||||
/* Ctags options. */
|
||||
+ case 'A': allow_duplicates = TRUE; break;
|
||||
case 'B': searchar = '?'; break;
|
||||
case 'd': constantypedefs = TRUE; break;
|
||||
case 't': typedefs = TRUE; break;
|
||||
@@ -2167,8 +2176,10 @@
|
||||
/*
|
||||
* If this tag name matches an existing one, then
|
||||
* do not add the node, but maybe print a warning.
|
||||
+ * If duplicates are allowed, continue looking for
|
||||
+ * a node with a branch where we can insert this node.
|
||||
*/
|
||||
- if (!dif)
|
||||
+ if (!allow_duplicates && !dif)
|
||||
{
|
||||
if (np->fdp == cur_node->fdp)
|
||||
{
|
1
get_version_number.sh
Normal file
1
get_version_number.sh
Normal file
@ -0,0 +1 @@
|
||||
get_date_version_string `find_newest_file *.changes`
|
Loading…
Reference in New Issue
Block a user