SF.net SVN: geany-plugins:[1434] trunk/geany-plugins/geanygendoc

colombanw at users.sourceforge.net colombanw at xxxxx
Sat Jun 12 14:54:58 UTC 2010


Revision: 1434
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1434&view=rev
Author:   colombanw
Date:     2010-06-12 14:54:58 +0000 (Sat, 12 Jun 2010)

Log Message:
-----------
GeanyGenDoc: Fix finding of tag's children

Pretty hackish fix but it now works even if there is two top-level
tags sharing the same name.

Modified Paths:
--------------
    trunk/geany-plugins/geanygendoc/ChangeLog
    trunk/geany-plugins/geanygendoc/src/ggd-tag-utils.c

Modified: trunk/geany-plugins/geanygendoc/ChangeLog
===================================================================
--- trunk/geany-plugins/geanygendoc/ChangeLog	2010-06-10 08:17:11 UTC (rev 1433)
+++ trunk/geany-plugins/geanygendoc/ChangeLog	2010-06-12 14:54:58 UTC (rev 1434)
@@ -1,3 +1,10 @@
+2010-06-12  Colomban Wendling  <ban(at)herbesfolles(dot)org>
+
+  * src/ggd-tag-utils.c:
+    Fix finding of tag's children. Pretty hackish fix but it now works even if
+    there is two top-level tags sharing the same name.
+
+
 2010-06-04  Colomban Wendling  <ban(at)herbesfolles(dot)org>
 
   * src/ggd.c:

Modified: trunk/geany-plugins/geanygendoc/src/ggd-tag-utils.c
===================================================================
--- trunk/geany-plugins/geanygendoc/src/ggd-tag-utils.c	2010-06-10 08:17:11 UTC (rev 1433)
+++ trunk/geany-plugins/geanygendoc/src/ggd-tag-utils.c	2010-06-12 14:54:58 UTC (rev 1434)
@@ -505,6 +505,7 @@
  * @parent: Tag for which get children
  * @geany_ft: The Geany's file type identifier for which tags were generated
  * @depth: Maximum depth for children to be found (< 0 means infinite)
+ *         Value != 0 aren't honored for now, see FIXME in function's body.
  * @filter: A logical OR of the TMTagType<!-- -->s to match
  * 
  * Finds children tags of a #TMTag that matches @matches.
@@ -523,28 +524,40 @@
   GList  *children = NULL;
   guint   i;
   TMTag  *el;
-  gchar  *fake_scope;
+  /*gchar  *fake_scope;*/
   
   g_return_val_if_fail (tags != NULL, NULL);
   g_return_val_if_fail (parent != NULL, NULL);
   
-  if (parent->atts.entry.scope) {
+  /*if (parent->atts.entry.scope) {
     fake_scope = g_strconcat (parent->atts.entry.scope,
                               ggd_tag_utils_get_context_separator (geany_ft),
                               parent->name, NULL);
   } else {
     fake_scope = g_strdup (parent->name);
-  }
+  }*/
   GGD_PTR_ARRAY_FOR (tags, i, el) {
-    if (scope_child_matches (fake_scope, el->atts.entry.scope,
-                             geany_ft, depth) &&
-        el->type & filter) {
+    /* FIXME: we definitely need a better way to determinate who is child of
+     * who and who is parent of who.
+     * On this side, it may find as children a tag that isn't the children,
+     * and simply getting children that comes after parent isn't a proper fix
+     * since the first possible parent will have all children.
+     * Crap.
+     * 
+     * Hack by checking if the parent of the element is the same as the parent
+     * we search for children. It breaks depth >= 0, but as we don't use it for
+     * now it's OK. A little odd but it works. */
+    if (el->type & filter &&
+        /*el->atts.entry.line >= parent->atts.entry.line &&*/
+        /*scope_child_matches (fake_scope, el->atts.entry.scope,
+                             geany_ft, depth) &&*/
+        ggd_tag_find_parent (tags, geany_ft, el) == parent) {
       children = g_list_insert_sorted_with_data (children, el,
                                                  tag_cmp_by_line,
                                                  GINT_TO_POINTER (GGD_SORT_ASC));
     }
   }
-  g_free (fake_scope);
+  /*g_free (fake_scope);*/
   
   return children;
 }


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



More information about the Plugins-Commits mailing list