Hi ports@
ctags with "#84 C++11 new using semantics" patch from
https://sourceforge.net/p/ctags/patches/84/
Kind regards,
Rafael
Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/ectags/Makefile,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 Makefile
--- Makefile 6 Apr 2015 22:10:56 -0000 1.16
+++ Makefile 2 Jul 2016 17:31:22 -0000
@@ -3,6 +3,7 @@
COMMENT= multilanguage implementation of ctags
DISTNAME= ctags-5.8
+REVISION= 0
PKGNAME= e${DISTNAME}
CATEGORIES= devel
HOMEPAGE= http://ctags.sourceforge.net/
Index: patches/patch-c_c
===================================================================
RCS file: patches/patch-c_c
diff -N patches/patch-c_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-c_c 2 Jul 2016 17:31:22 -0000
@@ -0,0 +1,56 @@
+$OpenBSD$
+
+adding support for this new C++11 syntax:
+using <Type> = <type definition>;
+
+https://sourceforge.net/p/ctags/patches/84/
+
+--- c.c.orig Sun Jul 5 06:02:43 2009
++++ c.c Sat Jul 2 19:29:15 2016
+@@ -130,6 +130,7 @@ typedef enum eTagScope {
+ SCOPE_EXTERN, /* external storage class */
+ SCOPE_FRIEND, /* declares access only */
+ SCOPE_TYPEDEF, /* scoping depends upon context */
++ SCOPE_USING, /* scoping depends upon context */
+ SCOPE_COUNT
+ } tagScope;
+
+@@ -1220,6 +1221,8 @@ static void qualifyFunctionDeclTag (const statementInf
+ qualifyFunctionTag (st, nameToken);
+ else if (st->scope == SCOPE_TYPEDEF)
+ makeTag (nameToken, st, TRUE, TAG_TYPEDEF);
++ else if (st->scope == SCOPE_USING && st->assignment)
++ makeTag (nameToken, st, TRUE, TAG_TYPEDEF);
+ else if (isValidTypeSpecifier (st->declaration) && ! isLanguage
(Lang_csharp))
+ makeTag (nameToken, st, TRUE, TAG_PROTOTYPE);
+ }
+@@ -1269,6 +1272,8 @@ static void qualifyVariableTag (const statementInfo *c
+ ;
+ else if (st->scope == SCOPE_TYPEDEF)
+ makeTag (nameToken, st, TRUE, TAG_TYPEDEF);
++ else if (st->scope == SCOPE_USING && st->assignment)
++ makeTag (nameToken, st, TRUE, TAG_TYPEDEF);
+ else if (st->declaration == DECL_EVENT)
+ makeTag (nameToken, st, (boolean) (st->member.access ==
ACCESS_PRIVATE),
+ TAG_EVENT);
+@@ -1757,7 +1762,10 @@ static void processToken (tokenInfo *const token, stat
+ case KEYWORD_THROWS: discardTypeList (token);
break;
+ case KEYWORD_UNION: st->declaration = DECL_UNION;
break;
+ case KEYWORD_UNSIGNED: st->declaration = DECL_BASE;
break;
+- case KEYWORD_USING: skipStatement (st);
break;
++ case KEYWORD_USING:
++ reinitStatement (st, FALSE);
++ st->scope = SCOPE_USING;
++ break;
+ case KEYWORD_VOID: st->declaration = DECL_BASE;
break;
+ case KEYWORD_VOLATILE: st->declaration = DECL_BASE;
break;
+ case KEYWORD_VIRTUAL: st->implementation = IMP_VIRTUAL;
break;
+@@ -2323,7 +2331,7 @@ static void analyzeParens (statementInfo *const st)
+ st->gotArgs = TRUE;
+ setToken (st, TOKEN_ARGS);
+ advanceToken (st);
+- if (st->scope != SCOPE_TYPEDEF)
++ if (st->scope != SCOPE_TYPEDEF && st->scope !=
SCOPE_USING)
+ analyzePostParens (st, &info);
+ }
+ else