SF.net SVN: geany:[3900] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sun Jun 28 10:42:34 UTC 2009


Revision: 3900
          http://geany.svn.sourceforge.net/geany/?rev=3900&view=rev
Author:   eht16
Date:     2009-06-28 10:42:34 +0000 (Sun, 28 Jun 2009)

Log Message:
-----------
Improve parsing of Tcl files (parsing new Tcl8.6 style classes, methods and namespaces).
Patch by Witek Mozga, thanks.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/symbols.c
    trunk/tagmanager/tcl.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-06-25 17:29:37 UTC (rev 3899)
+++ trunk/ChangeLog	2009-06-28 10:42:34 UTC (rev 3900)
@@ -1,3 +1,11 @@
+2009-06-28  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+
+ * tagmanager/tcl.c, src/symbol.c:
+   Improve parsing of Tcl files (parsing new Tcl8.6 style classes,
+   methods and namespaces).
+   Patch by Witek Mozga, thanks.
+
+
 2009-06-25  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * data/ui_toolbar.xml, doc/geany.txt, doc/geany.html, src/ui_utils.c,

Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c	2009-06-25 17:29:37 UTC (rev 3899)
+++ trunk/src/symbols.c	2009-06-28 10:42:34 UTC (rev 3900)
@@ -717,6 +717,15 @@
 			break;
 		}
 		case GEANY_FILETYPES_TCL:
+		{
+			tag_list_add_groups(tag_store,
+				&(tv_iters.tag_namespace), _("Namespaces"), "classviewer-namespace",
+				&(tv_iters.tag_class), _("Classes"), "classviewer-class",
+				&(tv_iters.tag_member), _("Methods"), "classviewer-method",
+				&(tv_iters.tag_function), _("Procedures"), "classviewer-method",
+				NULL);
+			break;
+		}
 		case GEANY_FILETYPES_PYTHON:
 		{
 			tag_list_add_groups(tag_store,

Modified: trunk/tagmanager/tcl.c
===================================================================
--- trunk/tagmanager/tcl.c	2009-06-25 17:29:37 UTC (rev 3899)
+++ trunk/tagmanager/tcl.c	2009-06-28 10:42:34 UTC (rev 3900)
@@ -24,13 +24,14 @@
 *   DATA DEFINITIONS
 */
 typedef enum {
-	K_CLASS, K_METHOD, K_PROCEDURE
+	K_CLASS, K_METHOD, K_PROCEDURE, K_MODULE
 } tclKind;
 
 static kindOption TclKinds [] = {
 	{ TRUE, 'c', "class",     "classes" },
-	{ TRUE, 'm', "member",    "methods" },
-	{ TRUE, 'p', "function",  "procedures" }
+	{ TRUE, 'f', "member",    "methods" },
+	{ TRUE, 'p', "function",  "procedures" },
+	{ TRUE, 'm', "namespace", "modules" }
 };
 
 /*
@@ -107,6 +108,29 @@
 				cp = makeTclTag (cp, name, K_METHOD);
 			}
 		}
+		else if (match (line, "method"))
+		{
+			cp = makeTclTag (cp, name, K_METHOD);
+		}
+		else if (match (line, "oo::class") ) {
+			if (match (cp, "create"))
+			{
+				cp += 6;
+				while (isspace ((int) *cp))
+					++cp;
+				cp = makeTclTag (cp, name, K_CLASS);
+			}
+		}
+		else if (match (line, "namespace") ) {
+			if (match (cp, "eval"))
+			{
+				cp += 4;
+				while (isspace ((int) *cp))
+					++cp;
+				cp = makeTclTag (cp, name, K_MODULE);
+			}
+		}
+
 	}
 	vStringDelete (name);
 }


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list