diff --git a/.gitignore b/.gitignore index fb3f2bc..9d81247 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ ctags-5.5.4.tar.gz ctags-5.6.tar.gz ctags-5.7.tar.gz ctags-5.8.tar.gz +/ctags-p5.9.20210307.0.tar.gz diff --git a/ctags-5.7-destdir.patch b/ctags-5.7-destdir.patch deleted file mode 100644 index 0aeafab..0000000 --- a/ctags-5.7-destdir.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -up ctags-5.7/Makefile.in.destdir ctags-5.7/Makefile.in ---- ctags-5.7/Makefile.in.destdir 2006-10-12 05:26:40.000000000 +0200 -+++ ctags-5.7/Makefile.in 2008-02-15 17:10:23.000000000 +0100 -@@ -59,7 +59,7 @@ include $(srcdir)/source.mak - - VPATH = $(srcdir) - --INSTALL = cp -+INSTALL = cp -p - INSTALL_PROG = $(INSTALL) - INSTALL_DATA = $(INSTALL) - -@@ -138,7 +141,8 @@ install-ebin: $(DEST_ETAGS) - install-lib: $(DEST_READ_LIB) $(DEST_READ_INC) - - $(DEST_CTAGS): $(CTAGS_EXEC) $(bindir) FORCE -- $(INSTALL_PROG) $(CTAGS_EXEC) $@ && chmod 755 $@ -+ $(srcdir)/mkinstalldirs $(DESTDIR)$(bindir) -+ $(INSTALL_PROG) $(CTAGS_EXEC) $(DESTDIR)$@ && chmod 755 $(DESTDIR)$@ - - $(DEST_ETAGS): - - if [ -x $(DEST_CTAGS) ]; then \ -@@ -153,7 +157,8 @@ install-cman: $(DEST_CMAN) - install-eman: $(DEST_EMAN) - - $(DEST_CMAN): $(man1dir) $(MANPAGE) FORCE -- - $(INSTALL_DATA) $(srcdir)/$(MANPAGE) $@ && chmod 644 $@ -+ $(srcdir)/mkinstalldirs $(DESTDIR)$(man1dir) -+ - $(INSTALL_DATA) $(srcdir)/$(MANPAGE) $(DESTDIR)$@ && chmod 644 $(DESTDIR)$@ - - $(DEST_EMAN): - - if [ -f $(DEST_CMAN) ]; then \ -@@ -164,9 +169,11 @@ $(DEST_EMAN): - # install the library - # - $(DEST_READ_LIB): $(READ_LIB) $(libdir) FORCE -+ $(srcdir)/mkinstalldirs $(DESTDIR)$(libdir) - $(INSTALL_PROG) $(READ_LIB) $@ && chmod 644 $@ - - $(DEST_READ_INC): $(READ_INC) $(incdir) FORCE -+ $(srcdir)/mkinstalldirs $(DESTDIR)$(incdir) - $(INSTALL_PROG) $(READ_INC) $@ && chmod 644 $@ - - diff --git a/ctags-5.7-segment-fault.patch b/ctags-5.7-segment-fault.patch deleted file mode 100644 index 60e8809..0000000 --- a/ctags-5.7-segment-fault.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -ruN -x '*~' ctags-5.7/vim.c ctags-5.7/vim.c ---- ctags-5.7/vim.c 2006-10-26 12:06:21.000000000 +0900 -+++ ctags-5.7/vim.c 2009-08-28 22:21:31.000000000 +0900 -@@ -328,7 +328,7 @@ - */ - const unsigned char *cp = line; - -- if ( (int) *cp == '\\' ) -+ if ( cp && ( (int) *cp == '\\' ) ) - { - /* - * We are recursively calling this function is the command -@@ -350,9 +350,10 @@ - while (*cp && isspace ((int) *cp)) - ++cp; - } -- else if ( (!strncmp ((const char*) line, "comp", (size_t) 4) == 0) && -- (!strncmp ((const char*) line, "comc", (size_t) 4) == 0) && -- (strncmp ((const char*) line, "com", (size_t) 3) == 0) ) -+ else if ( line && -+ (!strncmp ((const char*) line, "comp", (size_t) 4) == 0) && -+ (!strncmp ((const char*) line, "comc", (size_t) 4) == 0) && -+ (strncmp ((const char*) line, "com", (size_t) 3) == 0) ) - { - cp += 2; - if ((int) *++cp == 'm' && (int) *++cp == 'a' && -@@ -394,6 +395,14 @@ - while (*cp && !isspace ((int) *cp)) - ++cp; - } -+ else if (!isalnum ((int) *cp)) -+ { -+ /* -+ * Broken syntax: throw away this line -+ */ -+ cmdProcessed = TRUE; -+ goto cleanUp; -+ } - } while ( *cp && !isalnum ((int) *cp) ); - - if ( ! *cp ) diff --git a/ctags-5.8-css.patch b/ctags-5.8-css.patch deleted file mode 100644 index 2744d33..0000000 --- a/ctags-5.8-css.patch +++ /dev/null @@ -1,260 +0,0 @@ -diff -up ctags-5.8/css.c.me ctags-5.8/css.c ---- ctags-5.8/css.c.me 2012-02-08 13:59:35.000000000 +0100 -+++ ctags-5.8/css.c 2012-02-08 13:55:16.000000000 +0100 -@@ -0,0 +1,226 @@ -+/*************************************************************************** -+ * css.c -+ * Character-based parser for Css definitions -+ * Author - Iago Rubio -+ **************************************************************************/ -+#include "general.h" -+ -+#include -+#include -+ -+#include "parse.h" -+#include "read.h" -+ -+ -+typedef enum eCssKinds { -+ K_NONE = -1, K_CLASS, K_SELECTOR, K_ID -+} cssKind; -+ -+static kindOption CssKinds [] = { -+ { TRUE, 'c', "class", "classes" }, -+ { TRUE, 's', "selector", "selectors" }, -+ { TRUE, 'i', "id", "identities" } -+}; -+ -+typedef enum _CssParserState { // state of parsing -+ P_STATE_NONE, // default state -+ P_STATE_IN_COMMENT, // into a comment, only multi line in CSS -+ P_STATE_IN_SINGLE_STRING, // into a single quoted string -+ P_STATE_IN_DOUBLE_STRING, // into a double quoted string -+ P_STATE_IN_DEFINITION, // on the body of the style definition, nothing for us -+ P_STATE_IN_MEDIA, // on a @media declaration, can be multi-line -+ P_STATE_IN_IMPORT, // on a @import declaration, can be multi-line -+ P_STATE_IN_NAMESPACE, // on a @namespace declaration -+ P_STATE_IN_PAGE, // on a @page declaration -+ P_STATE_IN_FONTFACE, // on a @font-face declaration -+ P_STATE_AT_END // end of parsing -+} CssParserState; -+ -+static void makeCssSimpleTag( vString *name, cssKind kind, boolean delete ) -+{ -+ vStringTerminate (name); -+ makeSimpleTag (name, CssKinds, kind); -+ vStringClear (name); -+ if( delete ) -+ vStringDelete (name); -+} -+ -+static boolean isCssDeclarationAllowedChar( const unsigned char *cp ) -+{ -+ return isalnum ((int) *cp) || -+ isspace ((int) *cp) || -+ *cp == '_' || // allowed char -+ *cp == '-' || // allowed char -+ *cp == '+' || // allow all sibling in a single tag -+ *cp == '>' || // allow all child in a single tag -+ *cp == '{' || // allow the start of the declaration -+ *cp == '.' || // allow classes and selectors -+ *cp == ',' || // allow multiple declarations -+ *cp == ':' || // allow pseudo classes -+ *cp == '*' || // allow globs as P + * -+ *cp == '#'; // allow ids -+} -+ -+static CssParserState parseCssDeclaration( const unsigned char **position, cssKind kind ) -+{ -+ vString *name = vStringNew (); -+ const unsigned char *cp = *position; -+ -+ // pick to the end of line including children and sibling -+ // if declaration is multiline go for the next line -+ while ( isCssDeclarationAllowedChar(cp) || -+ *cp == '\0' ) // track the end of line into the loop -+ { -+ if( (int) *cp == '\0' ) -+ { -+ cp = fileReadLine (); -+ if( cp == NULL ){ -+ makeCssSimpleTag(name, kind, TRUE); -+ *position = cp; -+ return P_STATE_AT_END; -+ } -+ } -+ else if( *cp == ',' ) -+ { -+ makeCssSimpleTag(name, kind, TRUE); -+ *position = ++cp; -+ return P_STATE_NONE; -+ } -+ else if( *cp == '{' ) -+ { -+ makeCssSimpleTag(name, kind, TRUE); -+ *position = ++cp; -+ return P_STATE_IN_DEFINITION; -+ } -+ -+ vStringPut (name, (int) *cp); -+ ++cp; -+ } -+ -+ makeCssSimpleTag(name, kind, TRUE); -+ *position = cp; -+ -+ return P_STATE_NONE; -+} -+ -+static CssParserState parseCssLine( const unsigned char *line, CssParserState state ) -+{ -+ vString *aux; -+ -+ while( *line != '\0' ) // fileReadLine returns NULL terminated strings -+ { -+ while (isspace ((int) *line)) -+ ++line; -+ switch( state ) -+ { -+ case P_STATE_NONE: -+ // pick first char if alphanumeric is a selector -+ if( isalnum ((int) *line) ) -+ state = parseCssDeclaration( &line, K_SELECTOR ); -+ else if( *line == '.' ) // a class -+ state = parseCssDeclaration( &line, K_CLASS ); -+ else if( *line == '#' ) // an id -+ state = parseCssDeclaration( &line, K_ID ); -+ else if( *line == '@' ) // at-rules, we'll ignore them -+ { -+ ++line; -+ aux = vStringNew(); -+ while( !isspace((int) *line) ) -+ { -+ vStringPut (aux, (int) *line); -+ ++line; -+ } -+ vStringTerminate (aux); -+ if( strcmp( aux->buffer, "media" ) == 0 ) -+ state = P_STATE_IN_MEDIA; -+ else if ( strcmp( aux->buffer, "import" ) == 0 ) -+ state = P_STATE_IN_IMPORT; -+ else if ( strcmp( aux->buffer, "namespace" ) == 0 ) -+ state = P_STATE_IN_NAMESPACE; -+ else if ( strcmp( aux->buffer, "page" ) == 0 ) -+ state = P_STATE_IN_PAGE; -+ else if ( strcmp( aux->buffer, "font-face" ) == 0 ) -+ state = P_STATE_IN_FONTFACE; -+ vStringDelete (aux); -+ } -+ else if( *line == '*' && *(line-1) == '/' ) // multi-line comment -+ state = P_STATE_IN_COMMENT; -+ break; -+ case P_STATE_IN_COMMENT: -+ if( *line == '/' && *(line-1) == '*') -+ state = P_STATE_NONE; -+ break; -+ case P_STATE_IN_SINGLE_STRING: -+ if( *line == '\'' && *(line-1) != '\\' ) -+ state = P_STATE_IN_DEFINITION; // PAGE, FONTFACE and DEFINITION are treated the same way -+ break; -+ case P_STATE_IN_DOUBLE_STRING: -+ if( *line=='"' && *(line-1) != '\\' ) -+ state = P_STATE_IN_DEFINITION; // PAGE, FONTFACE and DEFINITION are treated the same way -+ break; -+ case P_STATE_IN_MEDIA: -+ // skip to start of media body or line end -+ while( *line != '{' ) -+ { -+ if( *line == '\0' ) -+ break; -+ ++line; -+ } -+ if( *line == '{' ) -+ state = P_STATE_NONE; -+ break; -+ case P_STATE_IN_IMPORT: -+ case P_STATE_IN_NAMESPACE: -+ // skip to end of declaration or line end -+ while( *line != ';' ) -+ { -+ if( *line == '\0' ) -+ break; -+ ++line; -+ } -+ if( *line == ';' ) -+ state = P_STATE_NONE; -+ break; -+ case P_STATE_IN_PAGE: -+ case P_STATE_IN_FONTFACE: -+ case P_STATE_IN_DEFINITION: -+ if( *line == '}' ) -+ state = P_STATE_NONE; -+ else if( *line == '\'' ) -+ state = P_STATE_IN_SINGLE_STRING; -+ else if( *line == '"' ) -+ state = P_STATE_IN_DOUBLE_STRING; -+ break; -+ case P_STATE_AT_END: -+ return state; -+ break; -+ } -+ line++; -+ } -+ return state; -+} -+ -+static void findCssTags (void) -+{ -+ const unsigned char *line; -+ CssParserState state = P_STATE_NONE; -+ -+ while ( (line = fileReadLine ()) != NULL ) -+ { -+ state = parseCssLine( line, state ); -+ if( state==P_STATE_AT_END ) return; -+ } -+} -+ -+/* parser definition */ -+extern parserDefinition* CssParser (void) -+{ -+ static const char *const extensions [] = { "css", NULL }; -+ parserDefinition* def = parserNew ("CSS"); -+ def->kinds = CssKinds; -+ def->kindCount = KIND_COUNT (CssKinds); -+ def->extensions = extensions; -+ def->parser = findCssTags; -+ return def; -+} -+ -diff -up ctags-5.8/parsers.h.me ctags-5.8/parsers.h ---- ctags-5.8/parsers.h.me 2012-02-08 13:56:46.000000000 +0100 -+++ ctags-5.8/parsers.h 2012-02-08 13:57:25.000000000 +0100 -@@ -26,6 +26,7 @@ - CppParser, \ - CsharpParser, \ - CobolParser, \ -+ CssParser, \ - DosBatchParser, \ - EiffelParser, \ - ErlangParser, \ -diff -up ctags-5.8/source.mak.me ctags-5.8/source.mak ---- ctags-5.8/source.mak.me 2012-02-08 13:58:02.000000000 +0100 -+++ ctags-5.8/source.mak 2012-02-08 13:58:42.000000000 +0100 -@@ -17,6 +17,7 @@ SOURCES = \ - beta.c \ - c.c \ - cobol.c \ -+ css.c \ - dosbatch.c \ - eiffel.c \ - entry.c \ -@@ -79,6 +80,7 @@ OBJECTS = \ - beta.$(OBJEXT) \ - c.$(OBJEXT) \ - cobol.$(OBJEXT) \ -+ css.$(OBJEXT) \ - dosbatch.$(OBJEXT) \ - eiffel.$(OBJEXT) \ - entry.$(OBJEXT) \ diff --git a/ctags-5.8-cssparse.patch b/ctags-5.8-cssparse.patch deleted file mode 100644 index f70c374..0000000 --- a/ctags-5.8-cssparse.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -up ctags-5.8/css.c.me ctags-5.8/css.c ---- ctags-5.8/css.c.me 2012-10-18 22:03:20.126163700 +0200 -+++ ctags-5.8/css.c 2012-10-18 22:04:03.237107358 +0200 -@@ -73,10 +73,11 @@ static CssParserState parseCssDeclaratio - { - if( (int) *cp == '\0' ) - { -+ /* assign position to the end of line. */ -+ *position = cp; - cp = fileReadLine (); - if( cp == NULL ){ - makeCssSimpleTag(name, kind, TRUE); -- *position = cp; - return P_STATE_AT_END; - } - } diff --git a/ctags-5.8-format-security.patch b/ctags-5.8-format-security.patch deleted file mode 100644 index ccd3986..0000000 --- a/ctags-5.8-format-security.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur ctags-5.8.orig/lregex.c ctags-5.8/lregex.c ---- ctags-5.8.orig/lregex.c 2007-09-10 04:36:48.000000000 +0200 -+++ ctags-5.8/lregex.c 2014-04-14 21:09:17.716000000 +0200 -@@ -408,7 +408,7 @@ - const char* regexfile = parameter + 1; - FILE* const fp = fopen (regexfile, "r"); - if (fp == NULL) -- error (WARNING | PERROR, regexfile); -+ error (WARNING | PERROR, "%s", regexfile); - else - { - vString* const regex = vStringNew (); diff --git a/ctags-5.8-memmove.patch b/ctags-5.8-memmove.patch deleted file mode 100644 index 5608f04..0000000 --- a/ctags-5.8-memmove.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -r -u ctags-5.8.orig/routines.c ctags-5.8/routines.c ---- ctags-5.8.orig/routines.c 2013-06-13 10:42:08.048576327 -0400 -+++ ctags-5.8/routines.c 2013-06-13 10:48:25.150366836 -0400 -@@ -757,13 +757,13 @@ - else if (cp [0] != PATH_SEPARATOR) - cp = slashp; - #endif -- strcpy (cp, slashp + 3); -+ memmove (cp, slashp + 3, strlen(slashp + 3) + 1); - slashp = cp; - continue; - } - else if (slashp [2] == PATH_SEPARATOR || slashp [2] == '\0') - { -- strcpy (slashp, slashp + 2); -+ memmove (slashp, slashp + 2, strlen(slashp + 2) + 1); - continue; - } - } diff --git a/ctags-5.8-ocaml-crash.patch b/ctags-5.8-ocaml-crash.patch deleted file mode 100644 index 8263cca..0000000 --- a/ctags-5.8-ocaml-crash.patch +++ /dev/null @@ -1,251 +0,0 @@ -diff -up ctags-5.8/ocaml.c.me ctags-5.8/ocaml.c ---- ctags-5.8/ocaml.c.me 2012-08-02 12:42:21.652211192 +0200 -+++ ctags-5.8/ocaml.c 2012-08-02 13:06:59.751283639 +0200 -@@ -72,6 +72,7 @@ typedef enum { - OcaKEYWORD_if, - OcaKEYWORD_in, - OcaKEYWORD_let, -+ OcaKEYWORD_value, - OcaKEYWORD_match, - OcaKEYWORD_method, - OcaKEYWORD_module, -@@ -145,7 +146,7 @@ static const ocaKeywordDesc OcamlKeyword - { "try" , OcaKEYWORD_try }, - { "type" , OcaKEYWORD_type }, - { "val" , OcaKEYWORD_val }, -- { "value" , OcaKEYWORD_let }, /* just to handle revised syntax */ -+ { "value" , OcaKEYWORD_value }, /* just to handle revised syntax */ - { "virtual" , OcaKEYWORD_virtual }, - { "while" , OcaKEYWORD_while }, - { "with" , OcaKEYWORD_with }, -@@ -297,7 +298,6 @@ static void eatComment (lexingState * st - if (st->cp == NULL) - return; - c = st->cp; -- continue; - } - /* we've reached the end of the comment */ - else if (*c == ')' && lastIsStar) -@@ -308,13 +308,33 @@ static void eatComment (lexingState * st - { - st->cp = c; - eatComment (st); -+ - c = st->cp; -+ if (c == NULL) -+ return; -+ - lastIsStar = FALSE; -+ c++; - } -+ /* OCaml has a rule which says : -+ * -+ * "Comments do not occur inside string or character literals. -+ * Nested comments are handled correctly." -+ * -+ * So if we encounter a string beginning, we must parse it to -+ * get a good comment nesting (bug ID: 3117537) -+ */ -+ else if (*c == '"') -+ { -+ st->cp = c; -+ eatString (st); -+ c = st->cp; -+ } - else -+ { - lastIsStar = '*' == *c; -- -- c++; -+ c++; -+ } - } - - st->cp = c; -@@ -554,8 +574,7 @@ static int getLastNamedIndex ( void ) - - for (i = stackIndex - 1; i >= 0; --i) - { -- if (stack[i].contextName->buffer && -- strlen (stack[i].contextName->buffer) > 0) -+ if (vStringLength (stack[i].contextName) > 0) - { - return i; - } -@@ -866,6 +885,11 @@ static void prepareTag (tagEntryInfo * t - tag->kindName = OcamlKinds[kind].name; - tag->kind = OcamlKinds[kind].letter; - -+ if (kind == K_MODULE) -+ { -+ tag->lineNumberEntry = TRUE; -+ tag->lineNumber = 1; -+ } - parentIndex = getLastNamedIndex (); - if (parentIndex >= 0) - { -@@ -880,9 +904,12 @@ static void prepareTag (tagEntryInfo * t - * more information to it in the future */ - static void addTag (vString * const ident, int kind) - { -- tagEntryInfo toCreate; -- prepareTag (&toCreate, ident, kind); -- makeTagEntry (&toCreate); -+ if (OcamlKinds [kind].enabled && ident != NULL && vStringLength (ident) > 0) -+ { -+ tagEntryInfo toCreate; -+ prepareTag (&toCreate, ident, kind); -+ makeTagEntry (&toCreate); -+ } - } - - boolean needStrongPoping = FALSE; -@@ -942,15 +969,17 @@ static void typeRecord (vString * const - } - - /* handle : -- * exception ExceptionName ... */ -+ * exception ExceptionName of ... */ - static void exceptionDecl (vString * const ident, ocaToken what) - { - if (what == OcaIDENTIFIER) - { - addTag (ident, K_EXCEPTION); - } -- /* don't know what to do on else... */ -- -+ else /* probably ill-formed, give back to global scope */ -+ { -+ globalScope (ident, what); -+ } - toDoNext = &globalScope; - } - -@@ -1006,7 +1035,6 @@ static void constructorValidation (vStri - */ - static void typeDecl (vString * const ident, ocaToken what) - { -- - switch (what) - { - /* parameterized */ -@@ -1046,7 +1074,6 @@ static void typeDecl (vString * const id - * let typeRecord handle it. */ - static void typeSpecification (vString * const ident, ocaToken what) - { -- - switch (what) - { - case OcaIDENTIFIER: -@@ -1243,8 +1270,14 @@ static void localLet (vString * const id - * than the let definitions. - * Used after a match ... with, or a function ... or fun ... - * because their syntax is similar. */ --static void matchPattern (vString * const UNUSED (ident), ocaToken what) -+static void matchPattern (vString * const ident, ocaToken what) - { -+ /* keep track of [], as it -+ * can be used in patterns and can -+ * mean the end of match expression in -+ * revised syntax */ -+ static int braceCount = 0; -+ - switch (what) - { - case Tok_To: -@@ -1252,6 +1285,14 @@ static void matchPattern (vString * cons - toDoNext = &mayRedeclare; - break; - -+ case Tok_BRL: -+ braceCount++; -+ break; -+ -+ case OcaKEYWORD_value: -+ popLastNamed (); -+ globalScope (ident, what); -+ break; - - case OcaKEYWORD_in: - popLastNamed (); -@@ -1269,6 +1310,11 @@ static void mayRedeclare (vString * cons - { - switch (what) - { -+ case OcaKEYWORD_value: -+ /* let globalScope handle it */ -+ globalScope (ident, what); -+ break; -+ - case OcaKEYWORD_let: - case OcaKEYWORD_val: - toDoNext = localLet; -@@ -1388,6 +1434,7 @@ static void classSpecif (vString * const - * nearly a copy/paste of globalLet. */ - static void methodDecl (vString * const ident, ocaToken what) - { -+ - switch (what) - { - case Tok_PARL: -@@ -1435,6 +1482,7 @@ vString *lastModule; - */ - static void moduleSpecif (vString * const ident, ocaToken what) - { -+ - switch (what) - { - case OcaKEYWORD_functor: -@@ -1566,7 +1614,7 @@ static void globalScope (vString * const - { - /* Do not touch, this is used only by the global scope - * to handle an 'and' */ -- static parseNext previousParser = NULL; -+ static parseNext previousParser = &globalScope; - - switch (what) - { -@@ -1608,6 +1656,7 @@ static void globalScope (vString * const - /* val is mixed with let as global - * to be able to handle mli & new syntax */ - case OcaKEYWORD_val: -+ case OcaKEYWORD_value: - case OcaKEYWORD_let: - cleanupPreviousParser (); - toDoNext = &globalLet; -@@ -1617,7 +1666,7 @@ static void globalScope (vString * const - case OcaKEYWORD_exception: - cleanupPreviousParser (); - toDoNext = &exceptionDecl; -- previousParser = NULL; -+ previousParser = &globalScope; - break; - - /* must be a #line directive, discard the -@@ -1769,7 +1818,7 @@ static void computeModuleName ( void ) - if (isLowerAlpha (moduleName->buffer[0])) - moduleName->buffer[0] += ('A' - 'a'); - -- makeSimpleTag (moduleName, OcamlKinds, K_MODULE); -+ addTag (moduleName, K_MODULE); - vStringDelete (moduleName); - } - -@@ -1779,6 +1828,7 @@ static void initStack ( void ) - int i; - for (i = 0; i < OCAML_MAX_STACK_SIZE; ++i) - stack[i].contextName = vStringNew (); -+ stackIndex = 0; - } - - static void clearStack ( void ) -@@ -1794,8 +1844,8 @@ static void findOcamlTags (void) - lexingState st; - ocaToken tok; - -- computeModuleName (); - initStack (); -+ computeModuleName (); - tempIdent = vStringNew (); - lastModule = vStringNew (); - lastClass = vStringNew (); diff --git a/ctags-CVE-2014-7204.patch b/ctags-CVE-2014-7204.patch deleted file mode 100644 index 81c5e6e..0000000 --- a/ctags-CVE-2014-7204.patch +++ /dev/null @@ -1,89 +0,0 @@ ---- ctags/jscript.c.orig 2008-10-13 00:27:38.000000000 +0200 -+++ ctags/jscript.c 2014-09-30 13:49:34.837349283 +0200 -@@ -1,5 +1,5 @@ - /* -- * $Id: jscript.c 666 2008-05-15 17:47:31Z dfishburn $ -+ * $Id: jscript.c 791 2012-10-24 01:13:13Z dfishburn $ - * - * Copyright (c) 2003, Darren Hiebert - * -@@ -215,6 +215,7 @@ - * Tag generation functions - */ - -+/* - static void makeConstTag (tokenInfo *const token, const jsKind kind) - { - if (JsKinds [kind].enabled && ! token->ignoreTag ) -@@ -238,12 +239,13 @@ - - if (JsKinds [kind].enabled && ! token->ignoreTag ) - { -- /* -+ * - * If a scope has been added to the token, change the token - * string to include the scope when making the tag. -- */ -+ * - if ( vStringLength(token->scope) > 0 ) - { -+ * - fulltag = vStringNew (); - vStringCopy(fulltag, token->scope); - vStringCatS (fulltag, "."); -@@ -251,8 +253,54 @@ - vStringTerminate(fulltag); - vStringCopy(token->string, fulltag); - vStringDelete (fulltag); -+ * -+ jsKind parent_kind = JSTAG_CLASS; -+ -+ * -+ * if we're creating a function (and not a method), -+ * guess we're inside another function -+ * -+ if (kind == JSTAG_FUNCTION) -+ parent_kind = JSTAG_FUNCTION; -+ -+ e.extensionFields.scope[0] = JsKinds [parent_kind].name; -+ e.extensionFields.scope[1] = vStringValue (token->scope); - } -- makeConstTag (token, kind); -+ * makeConstTag (token, kind); * -+ makeTagEntry (&e); -+ } -+} -+*/ -+ -+static void makeJsTag (tokenInfo *const token, const jsKind kind) -+{ -+ if (JsKinds [kind].enabled && ! token->ignoreTag ) -+ { -+ const char *const name = vStringValue (token->string); -+ tagEntryInfo e; -+ initTagEntry (&e, name); -+ -+ e.lineNumber = token->lineNumber; -+ e.filePosition = token->filePosition; -+ e.kindName = JsKinds [kind].name; -+ e.kind = JsKinds [kind].letter; -+ -+ if ( vStringLength(token->scope) > 0 ) -+ { -+ jsKind parent_kind = JSTAG_CLASS; -+ -+ /* -+ * If we're creating a function (and not a method), -+ * guess we're inside another function -+ */ -+ if (kind == JSTAG_FUNCTION) -+ parent_kind = JSTAG_FUNCTION; -+ -+ e.extensionFields.scope[0] = JsKinds [parent_kind].name; -+ e.extensionFields.scope[1] = vStringValue (token->scope); -+ } -+ -+ makeTagEntry (&e); - } - } - diff --git a/ctags-p5.9.20210307.0-build.patch b/ctags-p5.9.20210307.0-build.patch new file mode 100644 index 0000000..15dbb08 --- /dev/null +++ b/ctags-p5.9.20210307.0-build.patch @@ -0,0 +1,108 @@ +diff -up ctags-p5.9.20210307.0/configure.ac.orig ctags-p5.9.20210307.0/configure.ac +--- ctags-p5.9.20210307.0/configure.ac.orig 2021-03-11 15:28:04.114839683 +0100 ++++ ctags-p5.9.20210307.0/configure.ac 2021-03-11 15:28:22.233584068 +0100 +@@ -243,25 +243,6 @@ AC_PROG_CC_C99 + AC_PROG_RANLIB + AC_C_BIGENDIAN + +-# https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html +-AX_PROG_CC_FOR_BUILD +- +-# We need to compile and run a program on the build machine. +-AC_MSG_CHECKING(for cc for build) +-if test "$cross_compiling" = "yes"; then +- CC_FOR_BUILD="${CC_FOR_BUILD-cc}" +-else +- CC_FOR_BUILD="${CC_FOR_BUILD-$CC}" +- CFLAGS_FOR_BUILD="${CFLAGS_FOR_BUILD-$CFLAGS}" +- CPPFLAGS_FOR_BUILD="${CPPFLAGS_FOR_BUILD-$CPPFLAGS}" +- LDFLAGS_FOR_BUILD="${LDFLAGS_FOR_BUILD-$LDFLAGS}" +-fi +-AC_MSG_RESULT($CC_FOR_BUILD) +-AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler]) +-AC_ARG_VAR(CFLAGS_FOR_BUILD,[CFLAGS for build system C compiler]) +-AC_ARG_VAR(CPPFLAGS_FOR_BUILD,[CPPFLAGS for build system C compiler]) +-AC_ARG_VAR(LDFLAGS_FOR_BUILD,[LDFLAGS for build system C compiler]) +- + AC_ARG_VAR(AR,[ar command or path]) + AC_ARG_VAR(RANLIB,[ranlib command or path]) + AC_ARG_VAR(WINDRES,[windres command or path, used with mingw-w64]) +diff -up ctags-p5.9.20210307.0/Makefile.am.orig ctags-p5.9.20210307.0/Makefile.am +--- ctags-p5.9.20210307.0/Makefile.am.orig 2021-03-11 15:30:20.393270480 +0100 ++++ ctags-p5.9.20210307.0/Makefile.am 2021-03-11 15:30:41.824895156 +0100 +@@ -11,7 +11,7 @@ EXTRA_DIST = README.md autogen.sh \ + misc/ctags-optlib-mode.el \ + misc/mk-interactive-request.sh misc/roundtrip misc/tinst \ + misc/packcc/.gitignore misc/packcc/LICENSE.txt \ +- misc/packcc/README.md misc/packcc/packcc.c \ ++ misc/packcc/README.md \ + misc/validators/validator-jq \ + misc/validators/validator-KNOWN-INVALIDATION \ + misc/validators/validator-NONE \ +@@ -29,29 +29,21 @@ EXTRA_DIST = README.md autogen.sh \ + CLEANFILES = + MOSTLYCLEANFILES = + +-clean-local: +- rm -f packcc$(BUILD_EXEEXT) +- @if test "$(top_srcdir)" != "$(top_builddir)"; then \ +- rm -rf $(OPTLIB2C_SRCS); \ +- fi +- + bin_PROGRAMS = ctags + noinst_LIBRARIES = libctags.a + +-noinst_PROGRAMS = ++noinst_PROGRAMS = packcc + noinst_PROGRAMS += mini-geany + + if HAVE_STRNLEN_FOR_BUILD + EXTRA_CPPFLAGS_FOR_BUILD = -DUSE_SYSTEM_STRNLEN + endif + +-PACKCC = $(top_builddir)/packcc$(BUILD_EXEEXT) +- + cc4b_verbose = $(cc4b_verbose_@AM_V@) + cc4b_verbose_ = $(cc4b_verbose_@AM_DEFAULT_V@) + cc4b_verbose_0 = @echo CC4BUILD " $@"; +-$(PACKCC): $(top_srcdir)/misc/packcc/packcc.c +- $(cc4b_verbose)$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(EXTRA_CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ $(top_srcdir)/misc/packcc/packcc.c ++ ++packcc_SOURCES = misc/packcc/packcc.c + + if USE_READCMD + bin_PROGRAMS+= readtags +@@ -144,16 +136,13 @@ SUFFIXES += .ctags + $(OPTLIB2C_SRCS): $(OPTLIB2C) Makefile + endif + +-packcc_verbose = $(packcc_verbose_@AM_V@) +-packcc_verbose_ = $(packcc_verbose_@AM_DEFAULT_V@) +-packcc_verbose_0 = @echo PACKCC " $@"; + SUFFIXES += .peg +-.peg.c: +- $(packcc_verbose)$(PACKCC) -i \"general.h\" -o $(top_builddir)/peg/$(*F) "$<" +-.peg.h: +- $(packcc_verbose)$(PACKCC) -i \"general.h\" -o $(top_builddir)/peg/$(*F) "$<" +-# You cannot use $(PACKCC) as a target name here. +-$(PEG_SRCS) $(PEG_HEADS): $(PACKCC) Makefile ++.peg.c: packcc$(EXEEXT) ++ $(top_builddir)/packcc$(EXEEXT) -i \"general.h\" -o $(top_builddir)/peg/$(*F) "$<" ++.peg.h: packcc$(EXEEXT) ++ $(top_builddir)/packcc$(EXEEXT) -i \"general.h\" -o $(top_builddir)/peg/$(*F) "$<" ++ ++$(PEG_SRCS) $(PEG_HEADS): packcc$(EXEEXT) + dist_libctags_a_SOURCES = $(ALL_LIB_HEADS) $(ALL_LIB_SRCS) + + ctags_CPPFLAGS = $(libctags_a_CPPFLAGS) +diff -up ctags-p5.9.20210307.0/configure.ac.orig ctags-p5.9.20210307.0/configure.ac +--- ctags-p5.9.20210307.0/configure.ac.orig 2021-03-11 15:32:28.016218560 +0100 ++++ ctags-p5.9.20210307.0/configure.ac 2021-03-11 15:32:35.686908229 +0100 +@@ -239,7 +239,6 @@ AM_CONDITIONAL(ENABLE_DEBUGGING, [test " + # ------------------- + + AC_PROG_CC +-AC_PROG_CC_C99 + AC_PROG_RANLIB + AC_C_BIGENDIAN + diff --git a/ctags.spec b/ctags.spec index caad50a..6c7a02a 100644 --- a/ctags.spec +++ b/ctags.spec @@ -1,20 +1,27 @@ +%define upstreamversion 20210307.0 + Summary: A C programming language indexing and/or cross-reference tool Name: ctags -Version: 5.8 -Release: 31%{?dist} -License: GPLv2+ and LGPLv2+ and Public Domain -URL: http://ctags.sourceforge.net/ -Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz -Patch0: ctags-5.7-destdir.patch -Patch1: ctags-5.7-segment-fault.patch -Patch2: ctags-5.8-css.patch -Patch3: ctags-5.8-ocaml-crash.patch -Patch4: ctags-5.8-cssparse.patch -Patch5: ctags-5.8-memmove.patch -Patch6: ctags-5.8-format-security.patch -Patch7: ctags-CVE-2014-7204.patch +Version: 5.9 +Release: 0.1.%{upstreamversion}%{?dist} +License: GPLv2+ +URL: https://ctags.io/ +Source0: https://github.com/universal-ctags/ctags/archive/%{name}-p%{version}.%{upstreamversion}.tar.gz + +Patch0: ctags-p5.9.20210307.0-build.patch + +BuildRequires: autoconf +BuildRequires: automake BuildRequires: gcc +BuildRequires: jansson-devel +BuildRequires: libseccomp-devel +BuildRequires: libxml2-devel +BuildRequires: libyaml-devel BuildRequires: make +BuildRequires: pkgconfig +BuildRequires: python3-docutils + +Obsoletes: %{name}-etags <= 5.8 %description Ctags generates an index (or tag) file of C language objects found in @@ -33,65 +40,34 @@ objects found in source files. Install ctags if you are going to use your system for C programming. -%package etags -Summary: Exuberant Ctags for emacs tag format -Requires: ctags = %{version}-%{release} -Requires: /usr/sbin/alternatives - -%description etags -This package will generate tags in a format which GNU Emacs understand, -it's a alternativ implementation of the GNU etags program. -Note: some command line options is not compatible with GNU etags. - - %prep -%setup -q -%patch0 -p1 -b .destdir -%patch1 -p1 -b .crash -%patch2 -p1 -b .css-support -%patch3 -p1 -b .ocaml-crash -%patch4 -p1 -b .cssparse-crash -%patch5 -p1 -b .memmove -%patch6 -p1 -b .fmt-sec -%patch7 -p1 -b .CVE-2014-7204 +%autosetup -p1 -n %{name}-p%{version}.%{upstreamversion} %build +./autogen.sh %configure %make_build %install -rm -rf %{buildroot} - %make_install -pushd %{buildroot}%{_bindir} -ln -s ctags etags.ctags -popd - -pushd %{buildroot}%{_mandir}/man1 -ln -s ctags.1.gz etags.ctags.1.gz -popd - -%posttrans etags -/usr/sbin/alternatives --install /usr/bin/etags emacs.etags /usr/bin/etags.ctags 20 \ - --slave /usr/share/man/man1/etags.1.gz emacs.etags.man /usr/share/man/man1/ctags.1.gz - -%postun etags -/usr/sbin/alternatives --remove etags /usr/bin/etags.ctags || : +%check +#make check %files %license COPYING -%doc EXTENDING.html FAQ NEWS README +%doc README.md %{_bindir}/%{name} -%{_mandir}/man1/%{name}.1* - -%files etags -%license COPYING -%{_bindir}/etags.%{name} -%{_mandir}/man1/etags.%{name}.1* +%{_bindir}/readtags +%{_mandir}/man1/* +%{_mandir}/man5/* +%{_mandir}/man7/* %changelog +* Thu Mar 11 2021 Than Ngo - 5.9-0.1.20210307.0 +- switch to universal ctags + * Tue Jan 26 2021 Fedora Release Engineering - 5.8-31 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/sources b/sources index d3a3d61..b4c21d5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c00f82ecdcc357434731913e5b48630d ctags-5.8.tar.gz +SHA512 (ctags-p5.9.20210307.0.tar.gz) = a616e911ea812efd6497b382bb7eaeef5cac09809d23e5ce814758fb5664e13fd07ec36604e73b65eeb12aae9afcb226da287b6abfd33a81e26b6d1b071b9aa7 diff --git a/tests/Sanity-test-for-ctags/ctags-kinds-list b/tests/Sanity-test-for-ctags/ctags-kinds-list index 2f1cf3b..f65a590 100644 --- a/tests/Sanity-test-for-ctags/ctags-kinds-list +++ b/tests/Sanity-test-for-ctags/ctags-kinds-list @@ -1,17 +1,87 @@ +Unknown [disabled] +Abaqus + p Parts + a Assembly + s Steps +Abc + s sections +Ada + P package specifications + p packages + T type specifications [off] + t types + U subtype specifications [off] + u subtypes + c record type components + l enum type literals + V variable specifications [off] + v variables + f generic formal parameters + n constants + x user defined exceptions + R subprogram specifications + r subprograms + K task specifications + k tasks + O protected data specifications + o protected data + E task/protected data entry specifications [off] + e task/protected data entries + b labels + i loop/declare identifiers + a automatic variables [off] + y loops and blocks with no identifier [off] + S (ctags internal use) Ant - p projects - t targets + p projects + t targets + P properties(global) + i antfiles +Asciidoc + c chapters + s sections + S level 2 sections + t level 3 sections + T level 4 sections + u level 5 sections + a anchors Asm d defines l labels m macros t types (structs and records) + s sections Asp d constants c classes f functions s subroutines v variables +Autoconf + p packages + t templates + m autoconf macros + w options specified with --with-... + e options specified with --enable-... + s substitution keys + c automake conditions + d definitions +AutoIt + f functions + r regions + g global variables + l local variables + S included scripts +Automake + d directories + P programs + M manuals + T ltlibraries + L libraries + S scripts + D datum + c conditions + s subdirs Awk f functions Basic @@ -26,36 +96,80 @@ BETA p all patterns [off] s slots (fragment uses) v patterns (virtual or rebound) +BibTeX + a article + b book + B booklet + c conference + i inbook + I incollection + j inproceedings + m manual + M mastersthesis + n misc + p phdthesis + P proceedings + s string + t techreport + u unpublished +Clojure + f functions + n namespaces +CMake + f functions + m macros + t targets + v variable definitions + D options specified with -D + p projects C - c classes d macro definitions e enumerators (values inside an enumeration) f function definitions g enumeration names + h included header files l local variables [off] - m class, struct, and union members - n namespaces + m struct, and union members p function prototypes [off] s structure names t typedefs u union names v variable definitions x external and forward variable declarations [off] + z function parameters inside function definitions [off] + L goto labels [off] + D parameters inside macro definitions [off] C++ - c classes d macro definitions e enumerators (values inside an enumeration) f function definitions g enumeration names + h included header files l local variables [off] m class, struct, and union members - n namespaces p function prototypes [off] s structure names t typedefs u union names v variable definitions x external and forward variable declarations [off] + z function parameters inside function definitions [off] + L goto labels [off] + D parameters inside macro definitions [off] + c classes + n namespaces + A namespace aliases [off] + N names imported via using scope::symbol [off] + U using namespace statements [off] + Z template parameters [off] +CPreProcessor + d macro definitions + h included header files + D macro parameters [off] +CSS + c classes + s selectors + i identities C# c classes d macro definitions @@ -70,55 +184,240 @@ C# p properties s structure names t typedefs +Ctags + l language definitions + k kind definitions Cobol - d data items - f file descriptions (FD, SD, RD) - g group items - p paragraphs - P program ids - s sections -CSS + f file descriptions (FD, SD, RD) + g group items + P program ids + s sections + D divisions + p paragraphs + d data items + S source code file +CobolFree + f file descriptions (FD, SD, RD) + g group items + P program ids + s sections + D divisions + p paragraphs + d data items + S source code file +CobolVariable + f file descriptions (FD, SD, RD) + g group items + P program ids + s sections + D divisions + p paragraphs + d data items + S source code file +CUDA + d macro definitions + e enumerators (values inside an enumeration) + f function definitions + g enumeration names + h included header files + l local variables [off] + m struct, and union members + p function prototypes [off] + s structure names + t typedefs + u union names + v variable definitions + x external and forward variable declarations [off] + z function parameters inside function definitions [off] + L goto labels [off] + D parameters inside macro definitions [off] +D + a aliases c classes - s selectors - i identities + g enumeration names + e enumerators (values inside an enumeration) + x external variable declarations [off] + f function definitions + i interfaces + l local variables [off] + m class, struct, and union members + X mixins + M modules + n namespaces + p function prototypes [off] + s structure names + T templates + u union names + v variable definitions + V version statements +Diff + m modified files + n newly created files + d deleted files + h hunks +DTD + E entities + p parameter entities + e elements + a attributes + n notations +DTS + p phandlers + l labels DosBatch - l labels - v variables + l labels + v variables Eiffel c classes f features l local entities [off] +Elixir + p protocols (defprotocol...) + m modules (defmodule ...) + f functions (def ...) + c callbacks (defcallback ...) + d delegates (defdelegate ...) + e exceptions (defexception ...) + g guards (defguard ...) + i implementations (defimpl ...) + a macros (defmacro ...) + o operators (e.g. "defmacro a <<< b") + r records (defrecord...) + t tests (test ...) + y types (@type ...) +Elm + m Module + n Renamed Imported Module + p Port + t Type Definition + c Type Constructor + a Type Alias + f Functions +EmacsLisp + u unknown type of definitions + f functions + v variables + c constants + m macros + a aliases for functions + V aliases for variables + s inline function + i inline function + e errors + M minor modes + D derived major mode + C customizable variables + G customization groups + H customizable faces + T custom themes Erlang d macro definitions f functions m modules r record definitions + t type definitions +Falcon + c classes + f functions + m class members + v variables + i imports Flex f functions c classes + i interfaces + P packages m methods p properties v global variables + l local variables [off] + C constants + I imports x mxtags Fortran b block data c common blocks e entry points + E enumerations f functions - i interface contents, generic names, and operators [off] + i interface contents, generic names, and operators k type and structure components l labels L local, common block, and namelist variables [off] m modules + M type bound procedures n namelists + N enumeration values p programs + P subprogram prototypes [off] s subroutines t derived types and structures v program (global) and module variables + S submodules +FunctionParameters + m methods + f functions +Fypp + m macros +Gdbinit + d definitions + D documents [off] + t toplevel variables + l local variables [off] +Go + p packages + f functions + c constants + t types + v variables + s structs + i interfaces + m struct members + M struct anonymous members + n interface method specification + u unknown + P name for specifying imported package + a type aliases + R receivers [off] +Haskell + t types + c type constructors + f functions + m modules +Haxe + m methods + c classes + e enumerations + v variables + i interfaces + t typedefs HTML - a named anchors - f JavaScript functions + a named anchors + c classes + h H1 headings + i H2 headings + j H3 headings + C stylesheets + I identifiers + J scripts +Iniconf + s sections + k keys +Inko + o Class definition + m Method definition + t Trait definition + a Attribute definition + c Constant definition + r Reopen class +ITcl + c classes + m methods + v object-specific variables + C common variables + p procedures within the class namespace Java + a annotation declarations c classes e enum constants f fields @@ -127,32 +426,175 @@ Java l local variables [off] m methods p packages +JavaProperties + k keys JavaScript f functions c classes m methods p properties + C constants v global variables + g generators + G getters + S setters +JSON + o objects + a arrays + n numbers + s strings + b booleans + z nulls +Julia + c Constants + f Functions + g Fields + m Macros + n Modules + s Structures + t Types + x name defined in other modules +Kconfig + c configs + m menus + M the main menu + k kconfig file + C choices +LdScript + S sections + s symbols + v versions + i input sections Lisp + u unknown type of definitions f functions + v variables + m macros + c constants +LiterateHaskell + t types + c type constructors + f functions + m modules Lua f functions +M4 + d macros + I macro files +Man + t titles + s sections Make m macros + t targets + I makefiles +Markdown + c chapsters + s sections + S subsections + t subsubsections + T level 4 subsections + u level 5 subsections MatLab - f function - f function - f function + f function + v variable + c class +Meson + P projects + V variables + S subdirs + B build targets + c custom targets + t tests + b benchmark targets + r run targets +Moose + c classes + m methods + a attributes + w wrappers + r roles +Myrddin + f functions + c constants + v variables + t types + r traits + p packages +NSIS + s sections + f functions + v variables + d definitions + m macros + S section groups + p macro parameters [off] + l language strings + i NSIS scripts +ObjectiveC + i class interface + I class implementation + P Protocol + m Object's method + c Class' method + v Global variable + E Object field + f A function + p A property + t A type alias + s A type structure + e An enumeration + M A preprocessor macro + C categories +OldC++ [disabled] + c classes + d macro definitions + e enumerators (values inside an enumeration) + f function definitions + g enumeration names + h included header files + l local variables [off] + m class, struct, and union members + n namespaces + p function prototypes [off] + s structure names + t typedefs + u union names + v variable definitions + x external and forward variable declarations [off] + L goto label [off] + D cpp macro parameters [off] +OldC [disabled] + c classes + d macro definitions + e enumerators (values inside an enumeration) + f function definitions + g enumeration names + h included header files + l local variables [off] + m class, struct, and union members + n namespaces + p function prototypes [off] + s structure names + t typedefs + u union names + v variable definitions + x external and forward variable declarations [off] + L goto label [off] + D cpp macro parameters [off] OCaml c classes m Object's method M Module or functor v Global variable + p Signature item t Type name f A function C A constructor r A 'structure' field e An exception +Passwd + u user names Pascal f functions p procedures @@ -163,37 +605,158 @@ Perl p packages s subroutines d subroutine declarations [off] + M modules [off] +Perl6 + c classes + g grammars + m methods + o modules + p packages + r roles + u rules + b submethods + s subroutines + t tokens PHP - c classes - i interfaces - d constant definitions - f functions - v variables - v variables - j javascript functions - j javascript functions - j javascript functions + c classes + d constant definitions + f functions + i interfaces + l local variables [off] + n namespaces + t traits + v variables + a aliases +Pod + c chapters + s sections + S subsections + t subsubsections +PowerShell + f functions + v variables +Protobuf + p packages + m messages + f fields + e enum constants + g enum types + s services + r RPC methods + o oneof names + G groups + D .proto definition +PuppetManifest + c classes + d definitions + n nodes + r resources + v variables Python c classes f functions m class members v variables - i imports + I name referring a module defined in other file + i modules + x name referring a class/variable/function/module defined in other module + z function parameters [off] + l local variables [off] +PythonLoggingConfig + L logger sections + q logger qualnames +QemuHX + q QEMU Management Protocol dispatch table entries + i item in texinfo doc +QtMoc + s slots + S signals + p properties +R + f functions + l libraries + s sources + g global variables having values other than function() + v function variables having values other than function() + z function parameters inside function definitions [off] + c vectors explicitly created with `c()' + L lists explicitly created with `list()' + d data frame explicitly created with `data.frame()' + n names attribtes in vectors, lists, or dataframes +R6Class + c classes + m methods + f fields + a active binding functions +RSpec + d describes + c contexts REXX - s subroutines + s subroutines +Robot + t testcases + k keywords + v variables +RpmSpec + t tags + m macros + p packages + g global macros + p patch files +ReStructuredText + c chapters + s sections + S subsections + t subsubsections + C citations + T targets + d substitute definitions Ruby c classes f methods m modules - F singleton methods + S singleton methods + C constants + A accessors + a aliases + L libraries +Rust + n module + s structural type + i trait interface + c implementation + f Function + g Enum + t Type Alias + v Global variable + M Macro Definition + m A struct field + e An enum variant + P A method +S4Class + c classes + r representations + g generics + m methods Scheme f functions s sets -Sh +SCSS + m mixins f functions + v variables + c classes + P placeholder classes + i identities + z function parameters +Sh + a aliases + f functions + s script files + h label for here document SLang - f functions - n namespaces + f functions + n namespaces SML e exception declarations f function definitions @@ -206,7 +769,7 @@ SQL c cursors d prototypes [off] f functions - F record fields + E record fields l local variables [off] L block label P packages @@ -225,32 +788,88 @@ SQL n synonyms x MobiLink Table Scripts y MobiLink Conn Scripts + z MobiLink Properties +SystemdUnit + u units +SystemTap + p probe aliases + f functions + v variables + m macros Tcl + p procedures + n namespaces + z procedure parameters [off] +TclOO c classes m methods - p procedures Tex + p parts c chapters s sections u subsections b subsubsections - p parts P paragraphs G subparagraphs + l labels + i external input files + B bibliography items + C command created with \newcommand + N counter created with \newcounter +TeXBeamer + f frametitles + g framesubtitles +TTCN + M module definition + t type definition + c constant definition + d template definition + f function definition + s signature definition + C testcase definition + a altstep definition + G group definition + P module parameter definition + v variable instance + T timer instance + p port instance + m record/set/union member + e enumeration value +Txt2tags + s sections +TypeScript + f functions + c classes + i interfaces + g enums + e enumerators (values inside an enumeration) + m methods + n namespaces + z function parameters inside function definitions [off] + p properties + v variables + l local variables [off] + C constants + G generators + a aliases Vera c classes d macro definitions e enumerators (values inside an enumeration) f function definitions g enumeration names + i interfaces l local variables [off] m class, struct, and union members p programs P function prototypes [off] + s signals t tasks T typedefs v variable definitions x external variable declarations [off] + h included header files + D cpp macro parameters [off] Verilog c constants (define, parameter, specparam) e events @@ -258,8 +877,40 @@ Verilog m modules n net data types p ports - r register data types + r variable data types t tasks + b blocks (begin, fork) + i instances of module +SystemVerilog + c constants (define, parameter, specparam, enum values) + e events + f functions + m modules + n net data types + p ports + r variable data types + t tasks + b blocks (begin, fork) + i instances of module or interface + A assertions (assert, assume, cover, restrict) + C classes + V covergroups + E enumerators + I interfaces + M modports + K packages + P programs + Q prototypes (extern, pure) [off] + R properties + S structs and unions + T type declarations + H checkers + L clocking + q sequences + w struct and union members + l interface class + O constraints + N nettype declarations VHDL c constant declarations t type definitions @@ -272,11 +923,98 @@ VHDL p procedure prototypes and declarations P package definitions l local definitions [off] + a architectures + q port declarations + g generic declarations + s signal declarations + Q processes + v variables + A aliases Vim a autocommand groups c user-defined commands f function definitions m maps v variable definitions + n vimball filename + C constant definitions +WindRes + d dialogs + m menus + i icons + b bitmaps + c cursors + f fonts + v versions + a accelerators YACC - l labels + l labels +YumRepo + r repository id +Zephir + c classes + d constant definitions + f functions + i interfaces + l local variables [off] + n namespaces + t traits + v variables + a aliases +DBusIntrospect + a arguments + i interfaces + m methods + s signals + p properties + n nodes +Glade + c classes + h handlers +Maven2 + g group identifiers + a artifact identifiers + p properties + r repository identifiers +PlistXML + k keys +RelaxNG + e elements + a attributes + n named patterns +SVG + d ids in defs tags +XML + i id attributes + n namespace prefixes + r root elements +XSLT + s stylesheets + p parameters + m matched template + n matched template + v variables +Yaml + a anchors +AnsiblePlaybook + p plays +Varlink + i interfaces + m methods + I input parameters + O output parameters + s structs + f fields + g enumeration names + e enumerators (values inside an enumeration) + E errors + d error descriptors +Kotlin + p packages + i interfaces + c classes + o objects + m methods + T typealiases + C constants + v variables diff --git a/tests/Sanity-test-for-ctags/ctags-lang-list b/tests/Sanity-test-for-ctags/ctags-lang-list index f9338de..cd8a1ee 100644 --- a/tests/Sanity-test-for-ctags/ctags-lang-list +++ b/tests/Sanity-test-for-ctags/ctags-lang-list @@ -1,42 +1,132 @@ +Abaqus +Abc +Ada +AnsiblePlaybook Ant +Asciidoc Asm Asp +Autoconf +AutoIt +Automake Awk Basic BETA +BibTeX C -C++ C# +C++ +Clojure +CMake Cobol +CobolFree +CobolVariable +CPreProcessor CSS +Ctags +CUDA +D +DBusIntrospect +Diff DosBatch +DTD +DTS Eiffel +Elixir +Elm +EmacsLisp Erlang +Falcon Flex Fortran +FunctionParameters +Fypp +Gdbinit +Glade +Go +Haskell +Haxe HTML +Iniconf +Inko +ITcl Java +JavaProperties JavaScript +JSON +Julia +Kconfig +Kotlin +LdScript Lisp +LiterateHaskell Lua +M4 Make +Man +Markdown MatLab +Maven2 +Meson +Moose +Myrddin +NSIS +ObjectiveC OCaml +OldC [disabled] +OldC++ [disabled] Pascal +Passwd Perl +Perl6 PHP +PlistXML +Pod +PowerShell +Protobuf +PuppetManifest Python +PythonLoggingConfig +QemuHX +QtMoc +R +R6Class +RelaxNG +ReStructuredText REXX +Robot +RpmSpec +RSpec Ruby +Rust +S4Class Scheme +SCSS Sh SLang SML SQL +SVG +SystemdUnit +SystemTap +SystemVerilog Tcl +TclOO Tex +TeXBeamer +TTCN +Txt2tags +TypeScript +Unknown [disabled] +Varlink Vera Verilog VHDL Vim +WindRes +XML +XSLT YACC +Yaml +YumRepo +Zephir diff --git a/tests/Sanity-test-for-ctags/ctags-maps-list b/tests/Sanity-test-for-ctags/ctags-maps-list index d9fe867..676218a 100644 --- a/tests/Sanity-test-for-ctags/ctags-maps-list +++ b/tests/Sanity-test-for-ctags/ctags-maps-list @@ -1,42 +1,132 @@ -Ant *.build.xml -Asm *.asm *.ASM *.s *.S *.A51 *.29[kK] *.[68][68][kKsSxX] *.[xX][68][68] +Unknown +Abaqus *.inp +Abc *.abc *.abc +Ada *.adb *.ads *.Ada *.ada +Ant build.xml *.build.xml *.ant *.xml +Asciidoc *.asc *.adoc *.asciidoc *.asc *.adoc *.asciidoc +Asm *.A51 *.29[kK] *.[68][68][kKsSxX] *.[xX][68][68] *.asm *.ASM *.s *.S Asp *.asp *.asa +Autoconf configure.in *.ac +AutoIt *.au3 *.AU3 *.aU3 *.Au3 +Automake Makefile.am *.am Awk *.awk *.gawk *.mawk Basic *.bas *.bi *.bb *.pb BETA *.bet +BibTeX *.bib +Clojure *.clj *.cljs *.cljc +CMake CMakeLists.txt *.cmake C *.c -C++ *.c++ *.cc *.cp *.cpp *.cxx *.h *.h++ *.hh *.hp *.hpp *.hxx *.C *.H -C# *.cs -Cobol *.cbl *.cob *.CBL *.COB +C++ *.c++ *.cc *.cp *.cpp *.cxx *.h *.h++ *.hh *.hp *.hpp *.hxx *.inl *.C *.H *.CPP *.CXX +CPreProcessor CSS *.css +C# *.cs +Ctags *.ctags +Cobol *.cbl *.cob *.CBL *.COB +CobolFree +CobolVariable +CUDA *.cu *.cuh +D *.d *.di +Diff *.diff *.patch +DTD *.dtd *.mod +DTS *.dts *.dtsi DosBatch *.bat *.cmd Eiffel *.e +Elixir *.ex *.exs +Elm *.elm +EmacsLisp *.el Erlang *.erl *.ERL *.hrl *.HRL +Falcon *.fal *.ftd Flex *.as *.mxml -Fortran *.f *.for *.ftn *.f77 *.f90 *.f95 *.F *.FOR *.FTN *.F77 *.F90 *.F95 +Fortran *.f *.for *.ftn *.f77 *.f90 *.f95 *.f03 *.f08 *.f15 *.F *.FOR *.FTN *.F77 *.F90 *.F95 *.F03 *.F08 *.F15 +FunctionParameters +Fypp *.fy +Gdbinit .gdbinit *.gdb +Go *.go +Haskell *.hs +Haxe *.hx HTML *.htm *.html +Iniconf *.ini *.conf +Inko *.inko +ITcl *.itcl Java *.java -JavaScript *.js -Lisp *.cl *.clisp *.el *.l *.lisp *.lsp +JavaProperties *.properties +JavaScript *.js *.jsx *.mjs +JSON *.json +Julia *.jl +Kconfig Kconfig* +LdScript *.lds.S ld.script *.lds *.scr *.ld *.ldi +Lisp *.cl *.clisp *.l *.lisp *.lsp +LiterateHaskell *.lhs Lua *.lua -Make *.mak *.mk [Mm]akefile GNUmakefile +M4 *.m4 *.spt +Man *.1 *.2 *.3 *.4 *.5 *.6 *.7 *.8 *.9 *.3pm *.3stap *.7stap +Make [Mm]akefile GNUmakefile *.mak *.mk +Markdown *.md *.markdown MatLab *.m -OCaml *.ml *.mli +Meson meson.build +Moose +Myrddin *.myr +NSIS *.nsi *.nsh +ObjectiveC *.mm *.m *.h +OldC++ *.c++ *.cc *.cp *.cpp *.cxx *.h *.h++ *.hh *.hp *.hpp *.hxx *.inl *.C *.H +OldC *.c +OCaml *.ml *.mli *.aug +Passwd passwd Pascal *.p *.pas -Perl *.pl *.pm *.plx *.perl -PHP *.php *.php3 *.phtml -Python *.py *.pyx *.pxd *.pxi *.scons +Perl *.pl *.pm *.ph *.plx *.perl +Perl6 *.p6 *.pm6 *.pm *.pl6 +PHP *.php *.php3 *.php4 *.php5 *.php7 *.phtml +Pod *.pod +PowerShell *.ps1 *.psm1 +Protobuf *.proto +PuppetManifest *.pp +Python *.py *.pyx *.pxd *.pxi *.scons *.wsgi +PythonLoggingConfig +QemuHX *.hx +QtMoc +R *.r *.R *.s *.q +R6Class +RSpec REXX *.cmd *.rexx *.rx +Robot *.robot +RpmSpec *.spec +ReStructuredText *.rest *.reST *.rst Ruby *.rb *.ruby -Scheme *.SCM *.SM *.sch *.scheme *.scm *.sm -Sh *.sh *.SH *.bsh *.bash *.ksh *.zsh +Rust *.rs +S4Class +Scheme *.SCM *.SM *.sch *.scheme *.scm *.sm *.rkt +SCSS *.scss +Sh *.sh *.SH *.bsh *.bash *.ksh *.zsh *.ash SLang *.sl SML *.sml *.sig SQL *.sql -Tcl *.tcl *.tk *.wish *.itcl +SystemdUnit *.service *.socket *.device *.mount *.automount *.swap *.target *.path *.timer *.snapshot *.slice +SystemTap *.stp *.stpm +Tcl *.tcl *.tk *.wish *.exp +TclOO Tex *.tex +TeXBeamer +TTCN *.ttcn *.ttcn3 +Txt2tags *.t2t *.t2t +TypeScript *.ts Vera *.vr *.vri *.vrh Verilog *.v +SystemVerilog *.sv *.svh *.svi VHDL *.vhdl *.vhd -Vim *.vim +Vim vimrc [._]vimrc gvimrc [._]gvimrc *.vim *.vba +WindRes *.rc YACC *.y +YumRepo *.repo +Zephir *.zep +DBusIntrospect *.xml +Glade *.glade +Maven2 pom.xml *.pom *.xml +PlistXML *.plist +RelaxNG *.rng +SVG *.svg +XML *.xml +XSLT *.xsl *.xslt +Yaml *.yml +AnsiblePlaybook +Varlink *.varlink +Kotlin *.kt *.kts