SF.net SVN: geany: [1885] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Mon Sep 17 15:28:28 UTC 2007
Revision: 1885
http://geany.svn.sourceforge.net/geany/?rev=1885&view=rev
Author: ntrel
Date: 2007-09-17 08:28:27 -0700 (Mon, 17 Sep 2007)
Log Message:
-----------
Apply code from blackdog to parse Haxe typedef tags (thanks).
Show Haxe typedefs in the symbol list.
Add tag_type treeview iter.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/symbols.c
trunk/tagmanager/haxe.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-09-17 11:16:48 UTC (rev 1884)
+++ trunk/ChangeLog 2007-09-17 15:28:27 UTC (rev 1885)
@@ -3,6 +3,10 @@
* src/build.h, src/plugindata.h, src/plugins.c:
Apply patch from blackdog to add build_info and
msgwindow->compiler_add() to the plugin API (thanks).
+ * src/symbols.c, tagmanager/haxe.c:
+ Apply code from blackdog to parse Haxe typedef tags (thanks).
+ Show Haxe typedefs in the symbol list.
+ Add tag_type treeview iter.
2007-09-13 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c 2007-09-17 11:16:48 UTC (rev 1884)
+++ trunk/src/symbols.c 2007-09-17 15:28:27 UTC (rev 1885)
@@ -45,8 +45,6 @@
#include "main.h"
-#define MAX_SYMBOL_TYPES 8 // amount of types in the symbol list (currently max. 8 are used)
-
const guint TM_GLOBAL_TYPE_MASK =
tm_tag_class_t | tm_tag_enum_t | tm_tag_interface_t |
tm_tag_struct_t | tm_tag_typedef_t | tm_tag_union_t;
@@ -406,6 +404,9 @@
}
+// amount of types in the symbol list (currently max. 8 are used)
+#define MAX_SYMBOL_TYPES (sizeof(tv_iters) / sizeof(GtkTreeIter))
+
struct TreeviewSymbols
{
GtkTreeIter tag_function;
@@ -415,6 +416,7 @@
GtkTreeIter tag_variable;
GtkTreeIter tag_namespace;
GtkTreeIter tag_struct;
+ GtkTreeIter tag_type;
GtkTreeIter tag_other;
} tv_iters;
@@ -430,6 +432,7 @@
tv_iters.tag_variable.stamp = -1;
tv_iters.tag_namespace.stamp = -1;
tv_iters.tag_struct.stamp = -1;
+ tv_iters.tag_type.stamp = -1;
tv_iters.tag_other.stamp = -1;
}
@@ -637,12 +640,13 @@
case GEANY_FILETYPES_HAXE:
{
tag_list_add_groups(tag_store,
- &(tv_iters.tag_struct), _("Interfaces"), NULL,
+ &(tv_iters.tag_struct), _("Interfaces"), "classviewer-struct",
&(tv_iters.tag_class), _("Classes"), "classviewer-class",
&(tv_iters.tag_function), _("Methods"), "classviewer-method",
+ &(tv_iters.tag_type), _("Types"), NULL,
&(tv_iters.tag_variable), _("Variables"), "classviewer-var",
+ &(tv_iters.tag_other), _("Other"), "classviewer-other",
NULL);
-
break;
}
case GEANY_FILETYPES_D:
@@ -681,7 +685,7 @@
static void hide_empty_rows(GtkTreeModel *model, GtkTreeStore *store)
{
GtkTreeIter iter, *iters[MAX_SYMBOL_TYPES] = { NULL };
- gint i = 0;
+ guint i = 0;
if (! gtk_tree_model_get_iter_first(model, &iter))
return; // stop when first iter is invalid, i.e. no elements
@@ -709,6 +713,7 @@
const GList *tags;
GtkTreeIter iter;
GtkTreeModel *model;
+ filetype_id ft_id = FILETYPE_ID(doc_list[idx].file_type);
g_return_val_if_fail(DOC_IDX_VALID(idx), FALSE);
@@ -764,6 +769,15 @@
}
case tm_tag_typedef_t:
case tm_tag_enum_t:
+ {
+ // TODO: separate C-like types here also
+ if (ft_id == GEANY_FILETYPES_HAXE)
+ {
+ if (tv_iters.tag_type.stamp == -1) break;
+ parent = &(tv_iters.tag_type);
+ break;
+ }
+ }
case tm_tag_union_t:
case tm_tag_struct_t:
case tm_tag_interface_t:
Modified: trunk/tagmanager/haxe.c
===================================================================
--- trunk/tagmanager/haxe.c 2007-09-17 11:16:48 UTC (rev 1884)
+++ trunk/tagmanager/haxe.c 2007-09-17 15:28:27 UTC (rev 1885)
@@ -42,6 +42,7 @@
HXTAG_ENUM,
HXTAG_VARIABLE,
HXTAG_INTERFACE,
+ HXTAG_TYPEDEF,
HXTAG_COUNT
} hxKind;
@@ -50,7 +51,8 @@
{ TRUE, 'c', "class", "classes" },
{ TRUE, 'e', "enums", "enumerations" },
{ TRUE, 'v', "variable", "variables" },
- { TRUE, 'i', "interface", "interfaces" }
+ { TRUE, 'i', "interface", "interfaces" },
+ { TRUE, 't', "typedef", "typedefs" },
};
@@ -186,12 +188,25 @@
vStringTerminate (name);
makeSimpleTag (name, HxKinds, HXTAG_INTERFACE);
vStringClear (name);
- }
+ } else if (strncmp ((const char *) cp,"typedef",(size_t) 7) == 0 && isspace(((int) cp[7]))) {
+ cp += 7;
+ while (isspace ((int) *cp))
+ ++cp;
+ vStringClear (name);
+ while (isalnum ((int) *cp) || *cp == '_') {
+ vStringPut (name, (int) *cp);
+ ++cp;
+ }
+ vStringTerminate (name);
+ makeSimpleTag (name, HxKinds, HXTAG_TYPEDEF);
+ vStringClear (name);
+ }
+
}
- vStringDelete (name);
+ vStringDelete(name);
vStringDelete(clsName);
vStringDelete(scope2);
vStringDelete(laccess);
@@ -216,3 +231,4 @@
}
+
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