SHA256
1
0
forked from pool/ctags

Accepting request 477790 from devel:tools

1

OBS-URL: https://build.opensuse.org/request/show/477790
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/ctags?expand=0&rev=33
This commit is contained in:
Dominique Leuenberger 2017-03-12 19:04:05 +00:00 committed by Git OBS Bridge
commit fc5f016a99
21 changed files with 3616 additions and 54 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
From 9362fa70eaa37250afd5b36adb68295b54ae5c99 Mon Sep 17 00:00:00 2001
From: Federico Fissore <federico@fissore.org>
Date: Mon, 5 Oct 2015 11:27:36 +0200
Subject: [PATCH 02/19] Making "inline" behave like an attribute. Fixes #1
---
c.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/c.c b/c.c
index ccca3a4..af46dc4 100644
--- a/c.c
+++ b/c.c
@@ -1732,7 +1732,8 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
case KEYWORD_NONE: processName (st); break;
case KEYWORD_ABSTRACT: st->implementation = IMP_ABSTRACT; break;
- case KEYWORD_ATTRIBUTE: skipParens (); initToken (token); break;
+ case KEYWORD_ATTRIBUTE:
+ case KEYWORD_INLINE: skipParens (); initToken (token); break;
case KEYWORD_BIND: st->declaration = DECL_BASE; break;
case KEYWORD_BIT: st->declaration = DECL_BASE; break;
case KEYWORD_CATCH: skipParens (); skipBraces (); break;
--
2.11.0

View File

@ -0,0 +1,28 @@
From 8c205231b591e954f763df794fc59a9f6a7e983b Mon Sep 17 00:00:00 2001
From: Chris--A <chris@genx.biz>
Date: Thu, 8 Oct 2015 22:38:26 +1000
Subject: [PATCH 03/19] Treat 'typename' as an attribute.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Relates to #1
---
c.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/c.c b/c.c
index af46dc4..ef81067 100644
--- a/c.c
+++ b/c.c
@@ -1733,6 +1733,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
case KEYWORD_NONE: processName (st); break;
case KEYWORD_ABSTRACT: st->implementation = IMP_ABSTRACT; break;
case KEYWORD_ATTRIBUTE:
+ case KEYWORD_TYPENAME:
case KEYWORD_INLINE: skipParens (); initToken (token); break;
case KEYWORD_BIND: st->declaration = DECL_BASE; break;
case KEYWORD_BIT: st->declaration = DECL_BASE; break;
--
2.11.0

View File

@ -0,0 +1,57 @@
From 3b6e9256061bfcb70d2540c49b074b4be0ace4be Mon Sep 17 00:00:00 2001
From: Federico Fissore <federico@fissore.org>
Date: Wed, 4 Nov 2015 12:48:02 +0100
Subject: [PATCH 04/19] parseReturnType should start from the first non-brace
token
---
c.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/c.c b/c.c
index ef81067..727d6bb 100644
--- a/c.c
+++ b/c.c
@@ -567,7 +567,6 @@ static const char *implementationString (const impType imp)
/*
* Debugging functions
*/
-#define DEBUG
#ifdef DEBUG
#define boolString(c) ((c) ? "TRUE" : "FALSE")
@@ -2120,6 +2119,7 @@ static void parseReturnType (statementInfo *const st)
{
int i;
int lower_bound;
+ int upper_bound;
tokenInfo * finding_tok;
/* FIXME TODO: if java language must be supported then impement this here
@@ -2161,8 +2161,21 @@ static void parseReturnType (statementInfo *const st)
}
else
lower_bound = 1;
-
- for (i = (unsigned int) NumTokens; i > lower_bound; i--)
+
+ upper_bound = -1;
+ for (i = 0; i < NumTokens; i++) {
+ tokenInfo *curr_tok;
+ curr_tok = prevToken (st, i);
+ if (curr_tok->type == TOKEN_BRACE_CLOSE || curr_tok->type == TOKEN_BRACE_OPEN) {
+ upper_bound = i - 1;
+ break;
+ }
+ }
+ if (upper_bound < 0) {
+ upper_bound = NumTokens - 1;
+ }
+
+ for (i = upper_bound; i > lower_bound; i--)
{
tokenInfo * curr_tok;
curr_tok = prevToken (st, i);
--
2.11.0

View File

@ -0,0 +1,32 @@
From b27f1a9c3468618eb6b2a02b33a9058f3ca567e6 Mon Sep 17 00:00:00 2001
From: Federico Fissore <federico@fissore.org>
Date: Mon, 23 Nov 2015 10:47:18 +0100
Subject: [PATCH 05/19] Ensuring a space is printed in return type AFTER the
keyword
---
c.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/c.c b/c.c
index 727d6bb..c40cc42 100644
--- a/c.c
+++ b/c.c
@@ -2202,11 +2202,11 @@ static void parseReturnType (statementInfo *const st)
vStringPut (ReturnType, '&');
break;
- case TOKEN_KEYWORD:
- vStringPut (ReturnType, ' ');
-
default:
vStringCat (ReturnType, curr_tok->name);
+ if (curr_tok->type == TOKEN_KEYWORD) {
+ vStringPut (ReturnType, ' ');
+ }
break;
}
}
--
2.11.0

View File

@ -0,0 +1,42 @@
From ef67b47e61a1a5f6258e7034ddb520a57b0a477e Mon Sep 17 00:00:00 2001
From: Ivan Grokhotkov <igrokhotkov@gmail.com>
Date: Wed, 20 Jan 2016 12:19:13 +0300
Subject: [PATCH 06/19] Prevent C++ static_assert from stopping parsing
Manual cherry-pick of https://github.com/geany/geany/commit/fa0f92def2bf584ed1f6ae836e509f38324f8b6c
---
c.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/c.c b/c.c
index c40cc42..6bc8b76 100644
--- a/c.c
+++ b/c.c
@@ -83,7 +83,7 @@ typedef enum eKeywordId {
KEYWORD_PROGRAM, KEYWORD_PROTECTED, KEYWORD_PUBLIC,
KEYWORD_REGISTER, KEYWORD_RETURN,
KEYWORD_SHADOW, KEYWORD_STATE,
- KEYWORD_SHORT, KEYWORD_SIGNED, KEYWORD_STATIC, KEYWORD_STRING,
+ KEYWORD_SHORT, KEYWORD_SIGNED, KEYWORD_STATIC, KEYWORD_STATIC_ASSERT, KEYWORD_STRING,
KEYWORD_STRUCT, KEYWORD_SWITCH, KEYWORD_SYNCHRONIZED,
KEYWORD_TASK, KEYWORD_TEMPLATE, KEYWORD_THIS, KEYWORD_THROW,
KEYWORD_THROWS, KEYWORD_TRANSIENT, KEYWORD_TRANS, KEYWORD_TRANSITION,
@@ -437,6 +437,7 @@ static const keywordDesc KeywordTable [] = {
{ "signed", KEYWORD_SIGNED, { 1, 1, 0, 0, 0 } },
{ "state", KEYWORD_STATE, { 0, 0, 0, 0, 1 } },
{ "static", KEYWORD_STATIC, { 1, 1, 1, 1, 1 } },
+ { "static_assert", KEYWORD_STATIC_ASSERT, { 0, 1, 0, 0, 0} },
{ "string", KEYWORD_STRING, { 0, 0, 1, 0, 1 } },
{ "struct", KEYWORD_STRUCT, { 1, 1, 1, 0, 0 } },
{ "switch", KEYWORD_SWITCH, { 1, 1, 1, 1, 0 } },
@@ -1764,6 +1765,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
case KEYWORD_RETURN: skipStatement (st); break;
case KEYWORD_SHORT: st->declaration = DECL_BASE; break;
case KEYWORD_SIGNED: st->declaration = DECL_BASE; break;
+ case KEYWORD_STATIC_ASSERT: skipParens(); break;
case KEYWORD_STRING: st->declaration = DECL_BASE; break;
case KEYWORD_STRUCT: st->declaration = DECL_STRUCT; break;
case KEYWORD_TASK: st->declaration = DECL_TASK; break;
--
2.11.0

View File

@ -0,0 +1,42 @@
From 3a843374f200b80b7e155059cd4e73171597880d Mon Sep 17 00:00:00 2001
From: Ivan Grokhotkov <igrokhotkov@gmail.com>
Date: Wed, 20 Jan 2016 12:21:26 +0300
Subject: [PATCH 07/19] c++: Handle C++11 noexcept
Manual cherry-pick of https://github.com/geany/geany/commit/f60b31385e4da74d3b926c8e0c8f97c00a508d7b
---
c.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/c.c b/c.c
index 6bc8b76..0dd84d7 100644
--- a/c.c
+++ b/c.c
@@ -77,7 +77,7 @@ typedef enum eKeywordId {
KEYWORD_LOCAL, KEYWORD_LONG,
KEYWORD_M_BAD_STATE, KEYWORD_M_BAD_TRANS, KEYWORD_M_STATE, KEYWORD_M_TRANS,
KEYWORD_MUTABLE,
- KEYWORD_NAMESPACE, KEYWORD_NEW, KEYWORD_NEWCOV, KEYWORD_NATIVE,
+ KEYWORD_NAMESPACE, KEYWORD_NEW, KEYWORD_NEWCOV, KEYWORD_NATIVE, KEYWORD_NOEXCEPT,
KEYWORD_OPERATOR, KEYWORD_OUTPUT, KEYWORD_OVERLOAD, KEYWORD_OVERRIDE,
KEYWORD_PACKED, KEYWORD_PORT, KEYWORD_PACKAGE, KEYWORD_PRIVATE,
KEYWORD_PROGRAM, KEYWORD_PROTECTED, KEYWORD_PUBLIC,
@@ -419,6 +419,7 @@ static const keywordDesc KeywordTable [] = {
{ "native", KEYWORD_NATIVE, { 0, 0, 0, 1, 0 } },
{ "new", KEYWORD_NEW, { 0, 1, 1, 1, 0 } },
{ "newcov", KEYWORD_NEWCOV, { 0, 0, 0, 0, 1 } },
+ { "noexcept", KEYWORD_NOEXCEPT, { 0, 1, 0, 0, 0 } },
{ "operator", KEYWORD_OPERATOR, { 0, 1, 1, 0, 0 } },
{ "output", KEYWORD_OUTPUT, { 0, 0, 0, 0, 1 } },
{ "overload", KEYWORD_OVERLOAD, { 0, 1, 0, 0, 0 } },
@@ -1967,6 +1968,7 @@ static boolean skipPostArgumentStuff (
case KEYWORD_NAMESPACE:
case KEYWORD_NEW:
case KEYWORD_NEWCOV:
+ case KEYWORD_NOEXCEPT:
case KEYWORD_OPERATOR:
case KEYWORD_OVERLOAD:
case KEYWORD_PRIVATE:
--
2.11.0

View File

@ -0,0 +1,56 @@
From ce27db2946ae2ebc2766138af451d7d981201134 Mon Sep 17 00:00:00 2001
From: Ivan Grokhotkov <igrokhotkov@gmail.com>
Date: Wed, 20 Jan 2016 12:25:18 +0300
Subject: [PATCH 08/19] c++: Properly parse C++11 override and final members
Manual cherry-pick of
- https://github.com/geany/geany/commit/95a0d4db7e2188a62cf7770496ee2a51591f1962
- https://github.com/geany/geany/commit/641863c2647c21abb36aedc40ac93e6cc478f920
---
c.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/c.c b/c.c
index 0dd84d7..6e8b5aa 100644
--- a/c.c
+++ b/c.c
@@ -1986,7 +1986,13 @@ static boolean skipPostArgumentStuff (
break;
default:
- if (isType (token, TOKEN_NONE))
+ /* "override" and "final" are only keywords in the declaration of a virtual
+ * member function, so need to be handled specially, not as keywords */
+ if (isLanguage(Lang_cpp) && isType (token, TOKEN_NAME) &&
+ (strcmp ("override", vStringValue (token->name)) == 0 ||
+ strcmp ("final", vStringValue (token->name)) == 0))
+ ;
+ else if (isType (token, TOKEN_NONE))
;
else if (info->isKnrParamList && info->parameterCount > 0)
++elementCount;
@@ -2839,8 +2845,20 @@ static void tagCheck (statementInfo *const st)
st->declaration == DECL_NAMESPACE ||
st->declaration == DECL_PROGRAM)
{
- if (isType (prev, TOKEN_NAME))
+ tokenInfo *name_token = (tokenInfo *)prev;
+
+ /* C++ 11 allows class <name> final { ... } */
+ if (isLanguage (Lang_cpp) && isType (prev, TOKEN_NAME) &&
+ strcmp("final", vStringValue(prev->name)) == 0 &&
+ isType(prev2, TOKEN_NAME))
+ {
+ name_token = (tokenInfo *)prev2;
+ copyToken (st->blockName, name_token);
+ }
+ else if (isType (name_token, TOKEN_NAME))
+ {
copyToken (st->blockName, prev);
+ }
else
{
/* For an anonymous struct or union we use a unique ID
--
2.11.0

View File

@ -0,0 +1,33 @@
From cf9442ccad73448ff22ee96fa743893b29df5cfc Mon Sep 17 00:00:00 2001
From: Ivan Grokhotkov <igrokhotkov@gmail.com>
Date: Thu, 4 Feb 2016 19:36:35 +0300
Subject: [PATCH 09/19] Parse C++11 enums with type specifier
Manual cherry-pick of https://github.com/geany/geany/commit/f2f22d34ab9063852279bc6c5a45c8d3cfafdc0a
---
c.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/c.c b/c.c
index 6e8b5aa..ff7aa24 100644
--- a/c.c
+++ b/c.c
@@ -2528,6 +2528,15 @@ static void processColon (statementInfo *const st)
else if (c == ';')
setToken (st, TOKEN_SEMICOLON);
}
+ else if (isLanguage (Lang_cpp) && st->declaration == DECL_ENUM)
+ {
+ /* skip enum's base type */
+ c = skipToOneOf ("{;");
+ if (c == '{')
+ setToken (st, TOKEN_BRACE_OPEN);
+ else if (c == ';')
+ setToken (st, TOKEN_SEMICOLON);
+ }
else
{
const tokenInfo *const prev = prevToken (st, 1);
--
2.11.0

View File

@ -0,0 +1,48 @@
From 688ba978ea2394eb7144c964811e2c531e5c9c19 Mon Sep 17 00:00:00 2001
From: Ivan Grokhotkov <igrokhotkov@gmail.com>
Date: Thu, 4 Feb 2016 19:40:15 +0300
Subject: [PATCH 10/19] Parse C++11 classed enums
Manual cherry-pick of https://github.com/geany/geany/commit/6c7f69578d8e142f5994cc9cf0e0abc83a606a1b
---
c.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/c.c b/c.c
index ff7aa24..40db0e5 100644
--- a/c.c
+++ b/c.c
@@ -1725,6 +1725,12 @@ static void processInterface (statementInfo *const st)
st->declaration = DECL_INTERFACE;
}
+static void checkIsClassEnum (statementInfo *const st, const declType decl)
+{
+ if (! isLanguage (Lang_cpp) || st->declaration != DECL_ENUM)
+ st->declaration = decl;
+}
+
static void processToken (tokenInfo *const token, statementInfo *const st)
{
switch (token->keyword) /* is it a reserved word? */
@@ -1740,7 +1746,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
case KEYWORD_BIT: 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;
+ case KEYWORD_CLASS: checkIsClassEnum (st, DECL_CLASS); break;
case KEYWORD_CONST: st->declaration = DECL_BASE; break;
case KEYWORD_DOUBLE: st->declaration = DECL_BASE; break;
case KEYWORD_ENUM: st->declaration = DECL_ENUM; break;
@@ -1768,7 +1774,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
case KEYWORD_SIGNED: st->declaration = DECL_BASE; break;
case KEYWORD_STATIC_ASSERT: skipParens(); break;
case KEYWORD_STRING: st->declaration = DECL_BASE; break;
- case KEYWORD_STRUCT: st->declaration = DECL_STRUCT; break;
+ case KEYWORD_STRUCT: checkIsClassEnum (st, DECL_STRUCT); break;
case KEYWORD_TASK: st->declaration = DECL_TASK; break;
case KEYWORD_THROWS: discardTypeList (token); break;
case KEYWORD_UNION: st->declaration = DECL_UNION; break;
--
2.11.0

View File

@ -0,0 +1,62 @@
From e304e5ffff9718d99ab5767c8399225b79204c1f Mon Sep 17 00:00:00 2001
From: Daniel Garcia <danielgarcia@gmail.com>
Date: Tue, 23 Feb 2016 17:16:58 -0800
Subject: [PATCH 11/19] Handle template expressions that may use the << or >>
operators
---
c.c | 34 ++++++++++++++++++++++++----------
1 file changed, 24 insertions(+), 10 deletions(-)
diff --git a/c.c b/c.c
index 40db0e5..b975453 100644
--- a/c.c
+++ b/c.c
@@ -1392,20 +1392,34 @@ static void skipToMatch (const char *const pair)
if (c == begin)
{
- ++matchLevel;
- if (braceFormatting && getDirectiveNestLevel () != initialLevel)
- {
- skipToFormattedBraceMatch ();
- break;
+ // watch out for '<<' in template arguments
+ int x = cppGetc ();
+ if(c == '<' && x == '<') {
+ // we've found a << - do nothing
+ } else {
+ cppUngetc (x);
+ ++matchLevel;
+ if (braceFormatting && getDirectiveNestLevel () != initialLevel)
+ {
+ skipToFormattedBraceMatch ();
+ break;
+ }
}
}
else if (c == end)
{
- --matchLevel;
- if (braceFormatting && getDirectiveNestLevel () != initialLevel)
- {
- skipToFormattedBraceMatch ();
- break;
+ // watch out for '>>' in template arguments
+ int x = cppGetc ();
+ if(c == '>' && x == '>') {
+ // we've found a >> in a template - skip it
+ } else {
+ cppUngetc (x);
+ --matchLevel;
+ if (braceFormatting && getDirectiveNestLevel () != initialLevel)
+ {
+ skipToFormattedBraceMatch ();
+ break;
+ }
}
}
}
--
2.11.0

View File

@ -0,0 +1,39 @@
From fe0ba956daf1f3940543e3dce8ec0befcab4d386 Mon Sep 17 00:00:00 2001
From: Daniel Garcia <danielgarcia@gmail.com>
Date: Wed, 24 Feb 2016 00:59:15 -0800
Subject: [PATCH 12/19] Make sure we don't throw things away while collecting
the signature, though
---
c.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/c.c b/c.c
index b975453..386af29 100644
--- a/c.c
+++ b/c.c
@@ -1395,7 +1395,9 @@ static void skipToMatch (const char *const pair)
// watch out for '<<' in template arguments
int x = cppGetc ();
if(c == '<' && x == '<') {
- // we've found a << - do nothing
+ // we've found a << - do nothing except record the signature
+ if (CollectingSignature)
+ vStringPut(Signature, x);
} else {
cppUngetc (x);
++matchLevel;
@@ -1411,7 +1413,9 @@ static void skipToMatch (const char *const pair)
// watch out for '>>' in template arguments
int x = cppGetc ();
if(c == '>' && x == '>') {
- // we've found a >> in a template - skip it
+ // we've found a >> - do nothing except record the signature
+ if (CollectingSignature)
+ vStringPut(Signature, x);
} else {
cppUngetc (x);
--matchLevel;
--
2.11.0

View File

@ -0,0 +1,35 @@
From f928218c753e54968289a73285bf7c4345a8d553 Mon Sep 17 00:00:00 2001
From: Martino Facchin <m.facchin@arduino.cc>
Date: Tue, 23 Feb 2016 12:58:40 +0100
Subject: [PATCH 13/19] C++: mitigate matching error on generics containing an
expression
backport of https://github.com/geany/geany/commit/d40932ce4d05e57573a6d6c8f89f4aea8c42d4f3
---
c.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/c.c b/c.c
index 386af29..1386ddd 100644
--- a/c.c
+++ b/c.c
@@ -1426,6 +1426,16 @@ static void skipToMatch (const char *const pair)
}
}
}
+ /* early out if matching "<>" and we encounter a ";" or "{" to mitigate
+ * match problems with C++ generics containing a static expression like
+ * foo<X<Y> bar;
+ * normally neither ";" nor "{" could appear inside "<>" anyway. */
+ else if (isLanguage (Lang_cpp) && begin == '<' &&
+ (c == ';' || c == '{'))
+ {
+ cppUngetc (c);
+ break;
+ }
}
if (c == EOF)
{
--
2.11.0

View File

@ -0,0 +1,44 @@
From 5dbd71201f79e976a728802ca8638b14db0728dc Mon Sep 17 00:00:00 2001
From: Martino Facchin <m.facchin@arduino.cc>
Date: Wed, 9 Mar 2016 15:03:07 +0100
Subject: [PATCH 14/19] fix wrongly interpreted >> in template
---
c.c | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/c.c b/c.c
index 1386ddd..6add5f3 100644
--- a/c.c
+++ b/c.c
@@ -1410,20 +1410,14 @@ static void skipToMatch (const char *const pair)
}
else if (c == end)
{
- // watch out for '>>' in template arguments
+ // don't care if you find a '>>' (the important thing is closing the brackets)
int x = cppGetc ();
- if(c == '>' && x == '>') {
- // we've found a >> - do nothing except record the signature
- if (CollectingSignature)
- vStringPut(Signature, x);
- } else {
- cppUngetc (x);
- --matchLevel;
- if (braceFormatting && getDirectiveNestLevel () != initialLevel)
- {
- skipToFormattedBraceMatch ();
- break;
- }
+ cppUngetc (x);
+ --matchLevel;
+ if (braceFormatting && getDirectiveNestLevel () != initialLevel)
+ {
+ skipToFormattedBraceMatch ();
+ break;
}
}
/* early out if matching "<>" and we encounter a ";" or "{" to mitigate
--
2.11.0

View File

@ -0,0 +1,41 @@
From 83aa36d14a6b82e10b3ac55d54e0641648c56fcf Mon Sep 17 00:00:00 2001
From: Eric Sorton <esorton@gmail.com>
Date: Mon, 1 Aug 2016 23:04:35 -0400
Subject: [PATCH 15/19] Added constexpr as keyword.
---
c.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/c.c b/c.c
index 6add5f3..105bfa8 100644
--- a/c.c
+++ b/c.c
@@ -62,7 +62,7 @@ typedef enum eKeywordId {
KEYWORD_ATTRIBUTE, KEYWORD_ABSTRACT,
KEYWORD_BOOLEAN, KEYWORD_BYTE, KEYWORD_BAD_STATE, KEYWORD_BAD_TRANS,
KEYWORD_BIND, KEYWORD_BIND_VAR, KEYWORD_BIT,
- KEYWORD_CASE, KEYWORD_CATCH, KEYWORD_CHAR, KEYWORD_CLASS, KEYWORD_CONST,
+ KEYWORD_CASE, KEYWORD_CATCH, KEYWORD_CHAR, KEYWORD_CLASS, KEYWORD_CONST, KEYWORD_CONSTEXPR,
KEYWORD_CONSTRAINT, KEYWORD_COVERAGE_BLOCK, KEYWORD_COVERAGE_DEF,
KEYWORD_DEFAULT, KEYWORD_DELEGATE, KEYWORD_DELETE, KEYWORD_DO,
KEYWORD_DOUBLE,
@@ -377,6 +377,7 @@ static const keywordDesc KeywordTable [] = {
{ "char", KEYWORD_CHAR, { 1, 1, 1, 1, 0 } },
{ "class", KEYWORD_CLASS, { 0, 1, 1, 1, 1 } },
{ "const", KEYWORD_CONST, { 1, 1, 1, 1, 0 } },
+ { "constexpr", KEYWORD_CONSTEXPR, { 0, 1, 0, 0, 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 } },
@@ -1770,6 +1771,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
case KEYWORD_CHAR: st->declaration = DECL_BASE; break;
case KEYWORD_CLASS: checkIsClassEnum (st, DECL_CLASS); break;
case KEYWORD_CONST: st->declaration = DECL_BASE; break;
+ case KEYWORD_CONSTEXPR: st->declaration = DECL_BASE; break;
case KEYWORD_DOUBLE: st->declaration = DECL_BASE; break;
case KEYWORD_ENUM: st->declaration = DECL_ENUM; break;
case KEYWORD_EXTENDS: readParents (st, '.');
--
2.11.0

View File

@ -1,24 +1,19 @@
From e23093345c6f63358d979f2c87c57ef4050ba864 Mon Sep 17 00:00:00 2001
From: dfishburn <dfishburn@c5d04d22-be80-434c-894e-aa346cc9e8e8>
Date: Wed, 24 Oct 2012 01:13:13 +0000
Subject: [PATCH] Changed the javascript parser to set the tag's scope rather
than including it in the tag name.
Patch from Colomban.
From 7f6e3f1177f0ed53cf2a66ac207f6834591c568c Mon Sep 17 00:00:00 2001
From: dfishburn <dfishburn@sf.net>
Date: Wed, 24 Oct 2012 01:13:00 +0000
Subject: [PATCH 16/19] CVE-2014-7204
git-svn-id: svn://svn.code.sf.net/p/ctags/code/trunk@791 c5d04d22-be80-434c-894e-aa346cc9e8e8
Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
---
jscript.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++---
jscript.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 51 insertions(+), 3 deletions(-)
Index: ctags-5.8/jscript.c
===================================================================
--- ctags-5.8.orig/jscript.c
+++ ctags-5.8/jscript.c
@@ -215,6 +215,7 @@ static void deleteToken (tokenInfo *cons
diff --git a/jscript.c b/jscript.c
index c4e5b1a..901641a 100644
--- a/jscript.c
+++ b/jscript.c
@@ -215,6 +215,7 @@ static void deleteToken (tokenInfo *const token)
* Tag generation functions
*/
@ -26,7 +21,7 @@ Index: ctags-5.8/jscript.c
static void makeConstTag (tokenInfo *const token, const jsKind kind)
{
if (JsKinds [kind].enabled && ! token->ignoreTag )
@@ -238,12 +239,13 @@ static void makeJsTag (tokenInfo *const
@@ -238,12 +239,13 @@ static void makeJsTag (tokenInfo *const token, const jsKind kind)
if (JsKinds [kind].enabled && ! token->ignoreTag )
{
@ -42,7 +37,7 @@ Index: ctags-5.8/jscript.c
fulltag = vStringNew ();
vStringCopy(fulltag, token->scope);
vStringCatS (fulltag, ".");
@@ -251,8 +253,54 @@ static void makeJsTag (tokenInfo *const
@@ -251,8 +253,54 @@ static void makeJsTag (tokenInfo *const token, const jsKind kind)
vStringTerminate(fulltag);
vStringCopy(token->string, fulltag);
vStringDelete (fulltag);
@ -58,8 +53,7 @@ Index: ctags-5.8/jscript.c
+
+ e.extensionFields.scope[0] = JsKinds [parent_kind].name;
+ e.extensionFields.scope[1] = vStringValue (token->scope);
}
- makeConstTag (token, kind);
+ }
+ * makeConstTag (token, kind); *
+ makeTagEntry (&e);
+ }
@ -92,9 +86,13 @@ Index: ctags-5.8/jscript.c
+
+ e.extensionFields.scope[0] = JsKinds [parent_kind].name;
+ e.extensionFields.scope[1] = vStringValue (token->scope);
+ }
}
- makeConstTag (token, kind);
+
+ makeTagEntry (&e);
}
}
--
2.11.0

View File

@ -1,3 +1,15 @@
From 829234bfb8d481413bf0466562fe87e8c396defd Mon Sep 17 00:00:00 2001
From: Graham Anderson <graham@andtech.eu>
Date: Thu, 16 Aug 2012 12:04:00 +0000
Subject: [PATCH 17/19] Go language support
---
go.c | 670 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
parsers.h | 2 +
source.mak | 2 +
3 files changed, 674 insertions(+)
create mode 100644 go.c
diff --git a/go.c b/go.c
new file mode 100644
index 0000000..6bd3a36
@ -675,10 +687,10 @@ index 0000000..6bd3a36
+ return def;
+}
diff --git a/parsers.h b/parsers.h
index c0cab90..8f7b615 100644
index e4a50e1..b150506 100644
--- a/parsers.h
+++ b/parsers.h
@@ -31,6 +31,7 @@
@@ -32,6 +32,7 @@
ErlangParser, \
FlexParser, \
FortranParser, \
@ -686,8 +698,16 @@ index c0cab90..8f7b615 100644
HtmlParser, \
JavaParser, \
JavaScriptParser, \
@@ -76,6 +77,7 @@
FlexParser, \
FortranParser, \
GenieParser, \
+ GoParser, \
HtmlParser, \
JavaParser, \
JavaScriptParser, \
diff --git a/source.mak b/source.mak
index 559246f..df7067d 100644
index 3e5f740..d4c4c26 100644
--- a/source.mak
+++ b/source.mak
@@ -24,6 +24,7 @@ SOURCES = \
@ -698,7 +718,7 @@ index 559246f..df7067d 100644
html.c \
jscript.c \
keyword.c \
@@ -87,6 +88,7 @@ OBJECTS = \
@@ -86,6 +87,7 @@ OBJECTS = \
flex.$(OBJEXT) \
fortran.$(OBJEXT) \
get.$(OBJEXT) \
@ -706,3 +726,6 @@ index 559246f..df7067d 100644
html.$(OBJEXT) \
jscript.$(OBJEXT) \
keyword.$(OBJEXT) \
--
2.11.0

View File

@ -1,12 +1,24 @@
--- ctags.1
+++ ctags.1 2001/12/14 14:41:12
@@ -9,12 +9,29 @@
From e63684e0d8924dd6a56bda52ebfc81fb6c35811b Mon Sep 17 00:00:00 2001
From: Stepan Kasal <kasal@suse.cz>
Date: Mon, 31 Jan 2000 12:41:54 +0100
Subject: [PATCH 18/19] SUSE man page changes
---
ctags.1 | 35 +++++++++++++++++++++++++++++------
1 file changed, 29 insertions(+), 6 deletions(-)
diff --git a/ctags.1 b/ctags.1
index 2d89006..138e6ce 100644
--- a/ctags.1
+++ b/ctags.1
@@ -9,12 +9,29 @@ ctags \- Generate tag files for source code
.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.
@ -33,7 +45,7 @@
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 @@
@@ -1081,7 +1098,7 @@ embedded space. If this is a problem, use a configuration file instead.
.TP 8
.B ETAGS
Similar to the \fBCTAGS\fP variable above, this variable, if found, will be
@ -42,7 +54,7 @@
try to use \fBCTAGS\fP instead.
.TP 8
@@ -1535,9 +1552,15 @@
@@ -1136,9 +1153,15 @@ lines to indicate separate command-line arguments.
The default tag file created by \fBctags\fP.
.TP
.I TAGS
@ -59,3 +71,6 @@
The official Exuberant Ctags web site at:
.RS
--
2.11.0

View File

@ -1,19 +1,17 @@
Index: ctags-5.8/options.c
===================================================================
--- ctags-5.8.orig/options.c
+++ ctags-5.8/options.c
@@ -924,7 +924,6 @@ static void printProgramIdentification (
printf ("%s %s, %s %s\n",
PROGRAM_NAME, PROGRAM_VERSION,
PROGRAM_COPYRIGHT, AUTHOR_NAME);
- printf (" Compiled: %s, %s\n", __DATE__, __TIME__);
printf (" Addresses: <%s>, %s\n", AUTHOR_EMAIL, PROGRAM_URL);
printFeatureList ();
}
Index: ctags-5.8/main.c
===================================================================
--- ctags-5.8.orig/main.c
+++ ctags-5.8/main.c
From 2814d01a6cdb52a336dc6d6243ecc3cad44e60f1 Mon Sep 17 00:00:00 2001
From: Unknown Lost in OBS Migration <unk@nown.net>
Date: Sun, 26 Feb 2017 05:34:04 +0100
Subject: [PATCH 19/19] Do not include build time in binary.
---
main.c | 11 -----------
options.c | 1 -
2 files changed, 12 deletions(-)
diff --git a/main.c b/main.c
index 79948fe..8bca242 100644
--- a/main.c
+++ b/main.c
@@ -93,17 +93,6 @@
*/
static struct { long files, lines, bytes; } Totals = { 0, 0, 0 };
@ -32,3 +30,18 @@ Index: ctags-5.8/main.c
/*
* FUNCTION PROTOTYPES
*/
diff --git a/options.c b/options.c
index 1bee61d..0fc8e0c 100644
--- a/options.c
+++ b/options.c
@@ -926,7 +926,6 @@ static void printProgramIdentification (void)
printf ("%s %s, %s %s\n",
PROGRAM_NAME, PROGRAM_VERSION,
PROGRAM_COPYRIGHT, AUTHOR_NAME);
- printf (" Compiled: %s, %s\n", __DATE__, __TIME__);
printf (" Addresses: <%s>, %s\n", AUTHOR_EMAIL, PROGRAM_URL);
printFeatureList ();
}
--
2.11.0

View File

@ -1,3 +1,33 @@
-------------------------------------------------------------------
Sun Feb 26 04:37:26 UTC 2017 - msuchanek@suse.com
- merge with arduino-ctags https://github.com/arduino/ctags
* provide arduino-ctags
* redo patch queue http://repo.or.cz/git-browser/by-commit.html?r=arduino-ctags/SUSE.git
+ new patches
0001-Mixing-with-anjuta-tags-https-git.gnome.org-browse-a.patch
- add vala support
- update many existing tags with new features
0002-Making-inline-behave-like-an-attribute.-Fixes-1.patch
0003-Treat-typename-as-an-attribute.patch
0004-parseReturnType-should-start-from-the-first-non-brac.patch
0005-Ensuring-a-space-is-printed-in-return-type-AFTER-the.patch
0006-Prevent-C-static_assert-from-stopping-parsing.patch
0007-c-Handle-C-11-noexcept.patch
0008-c-Properly-parse-C-11-override-and-final-members.patch
0009-Parse-C-11-enums-with-type-specifier.patch
0010-Parse-C-11-classed-enums.patch
0011-Handle-template-expressions-that-may-use-the-or-oper.patch
0012-Make-sure-we-don-t-throw-things-away-while-collectin.patch
0013-C-mitigate-matching-error-on-generics-containing-an-.patch
0014-fix-wrongly-interpreted-in-template.patch
0015-Added-constexpr-as-keyword.patch
+ refreshed existing patches
0016-CVE-2014-7204.patch
0017-Go-language-support.patch (go-tags.patch)
0018-SUSE-man-page-changes.patch (ctags-5.7.diff)
0019-Do-not-include-build-time-in-binary.patch (ctags-date-time.patch)
-------------------------------------------------------------------
Thu Aug 18 08:25:26 UTC 2016 - adam.majer@suse.de

View File

@ -1,7 +1,7 @@
#
# spec file for package ctags
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -27,14 +27,30 @@ Source0: http://downloads.sourceforge.net/project/%{name}/%{name}/%{versi
# No resources to make this patch work with ctags-5.8 (applied to ctags-5.7)
# Anyone is welcome to make it work again.
Source2: ctags-ycp-parser.diff
Patch1: ctags-5.7.diff
Patch3: ctags-date-time.patch
Patch4: go-tags.patch
Patch5: CVE-2014-7204.patch
Patch1: 0001-Mixing-with-anjuta-tags-https-git.gnome.org-browse-a.patch
Patch2: 0002-Making-inline-behave-like-an-attribute.-Fixes-1.patch
Patch3: 0003-Treat-typename-as-an-attribute.patch
Patch4: 0004-parseReturnType-should-start-from-the-first-non-brac.patch
Patch5: 0005-Ensuring-a-space-is-printed-in-return-type-AFTER-the.patch
Patch6: 0006-Prevent-C-static_assert-from-stopping-parsing.patch
Patch7: 0007-c-Handle-C-11-noexcept.patch
Patch8: 0008-c-Properly-parse-C-11-override-and-final-members.patch
Patch9: 0009-Parse-C-11-enums-with-type-specifier.patch
Patch10: 0010-Parse-C-11-classed-enums.patch
Patch11: 0011-Handle-template-expressions-that-may-use-the-or-oper.patch
Patch12: 0012-Make-sure-we-don-t-throw-things-away-while-collectin.patch
Patch13: 0013-C-mitigate-matching-error-on-generics-containing-an-.patch
Patch14: 0014-fix-wrongly-interpreted-in-template.patch
Patch15: 0015-Added-constexpr-as-keyword.patch
Patch16: 0016-CVE-2014-7204.patch
Patch17: 0017-Go-language-support.patch
Patch18: 0018-SUSE-man-page-changes.patch
Patch19: 0019-Do-not-include-build-time-in-binary.patch
BuildRequires: update-alternatives
Requires(pre): update-alternatives
Requires(post): update-alternatives
Requires(post): update-alternatives
Requires(post): coreutils
Provides: arduino-ctags
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@ -44,11 +60,25 @@ Emacs, and several other editors.
%prep
%setup -q
%patch1
#%#patch2
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%build
%configure