SF.net SVN: geany:[3951] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Fri Jul 10 15:57:12 UTC 2009


Revision: 3951
          http://geany.svn.sourceforge.net/geany/?rev=3951&view=rev
Author:   ntrel
Date:     2009-07-10 15:57:12 +0000 (Fri, 10 Jul 2009)

Log Message:
-----------
Show relative paths in diff filename tags.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/tagmanager/diff.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-07-10 15:42:22 UTC (rev 3950)
+++ trunk/ChangeLog	2009-07-10 15:57:12 UTC (rev 3951)
@@ -5,6 +5,8 @@
    scrolling with the arrow keys.
  * src/keybindings.c, src/keybindings.h, src/search.c, src/search.h:
    Add 'Mark All' keybinding.
+ * tagmanager/diff.c:
+   Show relative paths in diff filename tags.
 
 
 2009-07-09  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/tagmanager/diff.c
===================================================================
--- trunk/tagmanager/diff.c	2009-07-10 15:42:22 UTC (rev 3950)
+++ trunk/tagmanager/diff.c	2009-07-10 15:57:12 UTC (rev 3951)
@@ -24,11 +24,11 @@
 *   DATA DEFINITIONS
 */
 typedef enum {
-    K_FUNCTION
+	K_FUNCTION
 } diffKind;
 
 static kindOption DiffKinds [] = {
-    { TRUE, 'f', "function", "functions"}
+	{ TRUE, 'f', "function", "functions"}
 };
 
 /*
@@ -37,32 +37,40 @@
 
 static void findDiffTags (void)
 {
-    vString *filename = vStringNew ();
-    const unsigned char *line, *tmp;
+	vString *filename = vStringNew ();
+	const unsigned char *line, *tmp;
 
-    while ((line = fileReadLine ()) != NULL)
-    {
+	while ((line = fileReadLine ()) != NULL)
+	{
 		const unsigned char* cp = line;
-		boolean skipSlash = TRUE;
+		boolean skipSlash = FALSE;
 
 		if (strncmp((const char*) cp, "--- ", (size_t) 4) == 0)
 		{
 			cp += 4;
 			if (isspace ((int) *cp)) continue;
 
-			tmp = (const unsigned char*) strrchr((const char*) cp,  '/');
-			if (tmp == NULL)
-			{	/* if no / is contained try \ in case of a Windows filename */
-				tmp = (const unsigned char*) strrchr((const char*) cp, '\\');
+			/* strip any absolute path */
+			if (*cp == '/' || *cp == '\\')
+			{
+				skipSlash = TRUE;
+				tmp = (const unsigned char*) strrchr((const char*) cp,  '/');
 				if (tmp == NULL)
-				{	/* last fallback, probably the filename doesn't contain a path, so take it */
-					if (strlen((const char*) cp) > 0)
-					{
-						tmp = cp;
-						skipSlash = FALSE;
+				{	/* if no / is contained try \ in case of a Windows filename */
+					tmp = (const unsigned char*) strrchr((const char*) cp, '\\');
+					if (tmp == NULL)
+					{	/* last fallback, probably the filename doesn't contain a path, so take it */
+						if (strlen((const char*) cp) > 0)
+						{
+							tmp = cp;
+							skipSlash = FALSE;
+						}
 					}
 				}
 			}
+			else
+				tmp = cp;
+
 			if (tmp != NULL)
 			{
 				if (skipSlash) tmp++; /* skip the leading slash or backslash */
@@ -77,20 +85,20 @@
 			}
 		}
 	}
-    vStringDelete (filename);
+	vStringDelete (filename);
 }
 
 extern parserDefinition* DiffParser (void)
 {
-    static const char *const patterns [] = { "*.diff", "*.patch", NULL };
-    static const char *const extensions [] = { "diff", NULL };
-    parserDefinition* const def = parserNew ("Diff");
-    def->kinds      = DiffKinds;
-    def->kindCount  = KIND_COUNT (DiffKinds);
-    def->patterns   = patterns;
-    def->extensions = extensions;
-    def->parser     = findDiffTags;
-    return def;
+	static const char *const patterns [] = { "*.diff", "*.patch", NULL };
+	static const char *const extensions [] = { "diff", NULL };
+	parserDefinition* const def = parserNew ("Diff");
+	def->kinds      = DiffKinds;
+	def->kindCount  = KIND_COUNT (DiffKinds);
+	def->patterns   = patterns;
+	def->extensions = extensions;
+	def->parser     = findDiffTags;
+	return def;
 }
 
 /* vi:set tabstop=8 shiftwidth=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