Revision: 4834 http://geany.svn.sourceforge.net/geany/?rev=4834&view=rev Author: eht16 Date: 2010-04-18 21:42:49 +0000 (Sun, 18 Apr 2010)
Log Message: ----------- Use tm_source_file_set_tag_arglist() to set the argument list field of Python class tags to the argument list of their __init__() methods.
Modified Paths: -------------- trunk/ChangeLog trunk/tagmanager/python.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-04-18 21:42:38 UTC (rev 4833) +++ trunk/ChangeLog 2010-04-18 21:42:49 UTC (rev 4834) @@ -5,6 +5,10 @@ tagmanager/parse.h, tagmanager/tm_source_file.c: Add tm_source_file_set_tag_arglist() to manually set the argument list of a tag. + * tagmanager/python.c: + Use tm_source_file_set_tag_arglist() to set the argument list + field of Python class tags to the argument list of their + __init__() methods.
2010-04-17 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/tagmanager/python.c =================================================================== --- trunk/tagmanager/python.c 2010-04-18 21:42:38 UTC (rev 4833) +++ trunk/tagmanager/python.c 2010-04-18 21:42:49 UTC (rev 4834) @@ -57,6 +57,30 @@ return (boolean) (isalnum (c) || c == '_'); }
+static const char *get_class_name_from_parent (const char *parent) +{ + const char *result; + + if (parent == NULL) + return NULL; + + result = strrchr (parent, '.'); + if (result != NULL) + { + result++; + parent = result; + } + + result = strrchr (parent, '/'); + if (result != NULL) + result++; + else + result = parent; + + return result; +} + + /* Given a string with the contents of a line directly after the "def" keyword, * extract all relevant information and create a tag. */ @@ -69,6 +93,13 @@ tag.kindName = "function"; tag.kind = 'f'; tag.extensionFields.arglist = arglist; + /* add argument list of __init__() methods to the class tag */ + if (strcmp (vStringValue (function), "__init__") == 0 && parent != NULL) + { + const char *parent_tag_name = get_class_name_from_parent (vStringValue (parent)); + if (parent_tag_name != NULL) + setTagArglistByName (parent_tag_name, arglist); + }
if (vStringLength (parent) > 0) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.