SF.net SVN: geany:[4825] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Sat Apr 17 14:34:32 UTC 2010
Revision: 4825
http://geany.svn.sourceforge.net/geany/?rev=4825&view=rev
Author: eht16
Date: 2010-04-17 14:34:31 +0000 (Sat, 17 Apr 2010)
Log Message:
-----------
Remove duplicate code from Txt2Tags parser.
Remove the title control characters ('=') when parsing titles.
Modified Paths:
--------------
trunk/ChangeLog
trunk/tagmanager/txt2tags.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2010-04-17 14:34:19 UTC (rev 4824)
+++ trunk/ChangeLog 2010-04-17 14:34:31 UTC (rev 4825)
@@ -1,3 +1,10 @@
+2010-04-17 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * tagmanager/txt2tags.c:
+ Remove duplicate code from Txt2Tags parser.
+ Remove the title control characters ('=') when parsing titles.
+
+
2010-04-11 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* geany.glade, doc/geany.txt, plugins/geanyfunctions.h,
Modified: trunk/tagmanager/txt2tags.c
===================================================================
--- trunk/tagmanager/txt2tags.c 2010-04-17 14:34:19 UTC (rev 4824)
+++ trunk/tagmanager/txt2tags.c 2010-04-17 14:34:31 UTC (rev 4825)
@@ -25,8 +25,12 @@
* DATA DEFINITIONS
*/
+typedef enum {
+ K_SECTION = 0, K_HEADER
+} Txt2tagsKind;
+
static kindOption Txt2tagsKinds[] = {
- { TRUE, 'v', "members", "sections" },
+ { TRUE, 'm', "member", "sections" },
{ TRUE, 's', "struct", "header1"}
};
@@ -34,28 +38,42 @@
* FUNCTION DEFINITIONS
*/
-static void makeTxt2tagsTag (const vString* const name, boolean name_before)
+static void parse_title (vString* const name, const char control_char)
{
- tagEntryInfo e;
- initTagEntry (&e, vStringValue(name));
+ char *text = vStringValue(name);
+ char *p = text;
+ int offset_start = 0;
+ boolean in_or_after_title = FALSE;
- if (name_before)
- e.lineNumber--; /* we want the line before the underline chars */
- e.kindName = "variable";
- e.kind = 'v';
-
- makeTagEntry(&e);
+ while (p != NULL && *p != '\0')
+ {
+ if (*p == control_char)
+ {
+ if (in_or_after_title)
+ break;
+ else
+ offset_start++;
+ }
+ else
+ in_or_after_title = TRUE;
+ p++;
+ }
+ *p = '\0';
+ vStringCopyS(name, text + offset_start);
+ vStringStripLeading(name);
+ vStringStripTrailing(name);
}
-static void makeTxt2tagsTag2 (const vString* const name, boolean name_before)
+static void makeTxt2tagsTag (const vString* const name, boolean name_before, Txt2tagsKind type)
{
tagEntryInfo e;
+ kindOption *kind = &Txt2tagsKinds[type];
initTagEntry (&e, vStringValue(name));
if (name_before)
- e.lineNumber--;
- e.kindName = "struct";
- e.kind = 's';
+ e.lineNumber--; /* we want the line before the underline chars */
+ e.kindName = kind->name;
+ e.kind = kind->letter;
makeTagEntry(&e);
}
@@ -78,19 +96,16 @@
/*vStringClear(name);*/
vStringCatS(name, (const char *) line);
vStringTerminate(name);
- makeTxt2tagsTag(name, FALSE);
+ parse_title(name, line[0]);
+ makeTxt2tagsTag(name, FALSE, K_SECTION);
}
- /*else if (line[0] == "=") {
- vStringClear(name);
- vStringCatS(name, (const char *) line);
- vStringTerminate(name);
- makeTxt2tagsTag(name, FALSE);
- }*/
+ /* TODO what exactly should this match?
+ * K_HEADER ('struct') isn't matched in src/symbols.c */
else if (strcmp((char*)line, "°") == 0) {
/*vStringClear(name);*/
vStringCatS(name, (const char *) line);
vStringTerminate(name);
- makeTxt2tagsTag2(name, FALSE);
+ makeTxt2tagsTag(name, FALSE, K_HEADER);
}
else {
vStringClear (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