SF.net SVN: geany: [1684] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Mon Jul 9 15:11:18 UTC 2007


Revision: 1684
          http://svn.sourceforge.net/geany/?rev=1684&view=rev
Author:   eht16
Date:     2007-07-09 08:11:18 -0700 (Mon, 09 Jul 2007)

Log Message:
-----------
Use CTags SVN version of PHP parser.
Use only supported symbol types in the symbol view for PHP.      

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/symbols.c
    trunk/tagmanager/php.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-07-09 13:53:27 UTC (rev 1683)
+++ trunk/ChangeLog	2007-07-09 15:11:18 UTC (rev 1684)
@@ -8,6 +8,9 @@
    Use a TreeView for keybinding list in the preferences dialog and add
    descriptive sections for better usability.
  * src/keybindings.c: Use Ctrl-B for Goto matching brace.
+ * src/symbols.c, tagmanager/php.c:
+   Use CTags SVN version of PHP parser.
+   Use only supported symbol types in the symbol view for PHP.
 
 
 2007-07-08  Enrico Tröger  <enrico.troeger at uvena.de>

Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c	2007-07-09 13:53:27 UTC (rev 1683)
+++ trunk/src/symbols.c	2007-07-09 15:11:18 UTC (rev 1684)
@@ -502,6 +502,18 @@
 				//&(tv_iters.tag_other), _("Other"), NULL);
 			break;
 		}
+		case GEANY_FILETYPES_PHP:
+		{
+			tag_list_add_groups(tag_store,
+				&(tv_iters.tag_class), _("Classes"),
+				&(tv_iters.tag_function), _("Functions"),
+				&(tv_iters.tag_macro), _("Constants"),
+				&(tv_iters.tag_variable), _("Variables"), NULL);
+				//&(tv_iters.tag_struct), _("Label"),
+				//&(tv_iters.tag_namespace), _("Begin"),
+				//&(tv_iters.tag_other), _("Other"), NULL);
+			break;
+		}
 		case GEANY_FILETYPES_RUBY:
 		{
 			tag_list_add_groups(tag_store,

Modified: trunk/tagmanager/php.c
===================================================================
--- trunk/tagmanager/php.c	2007-07-09 13:53:27 UTC (rev 1683)
+++ trunk/tagmanager/php.c	2007-07-09 15:11:18 UTC (rev 1684)
@@ -16,7 +16,7 @@
 /*
 *   INCLUDE FILES
 */
-#include "general.h"	/* must always come first */
+#include "general.h"  /* must always come first */
 
 #include <string.h>
 
@@ -28,144 +28,151 @@
 *   DATA DEFINITIONS
 */
 typedef enum {
-    K_CLASS, K_DEFINE, K_FUNCTION, K_VARIABLE
+	K_CLASS, K_DEFINE, K_FUNCTION, K_VARIABLE
 } phpKind;
 
 static kindOption PhpKinds [] = {
-    { TRUE, 'c', "class",    "classes" },
-    { TRUE, 'd', "define",   "constant definitions" },
-    { TRUE, 'f', "function", "functions" },
-    { TRUE, 'v', "variable", "variables" }
+	{ TRUE, 'c', "class",    "classes" },
+	{ TRUE, 'd', "macro",   "constant definitions" },
+	{ TRUE, 'f', "function", "functions" },
+	{ TRUE, 'v', "variable", "variables" }
 };
 
 /*
 *   FUNCTION DEFINITIONS
 */
-
 static boolean isLetter(const int c)
 {
-    return (boolean)(isalpha(c) || (c >= 127  &&  c <= 255));
+	return (boolean)(isalpha(c) || (c >= 127  &&  c <= 255));
 }
 
 static boolean isVarChar1(const int c)
 {
-    return (boolean)(isLetter (c)  ||  c == '_');
+	return (boolean)(isLetter (c)  ||  c == '_');
 }
 
 static boolean isVarChar(const int c)
 {
-    return (boolean)(isVarChar1 (c) || isdigit (c));
+	return (boolean)(isVarChar1 (c) || isdigit (c));
 }
 
 static void findPhpTags (void)
 {
-    vString *name = vStringNew ();
-    const unsigned char *line;
+	vString *name = vStringNew ();
+	const unsigned char *line;
 
-    while ((line = fileReadLine ()) != NULL)
-    {
-	const unsigned char *cp = line;
+	while ((line = fileReadLine ()) != NULL)
+	{
+		const unsigned char *cp = line;
+		const char* f;
 
-	while (isspace (*cp))
-	    cp++;
+		while (isspace (*cp))
+			cp++;
 
-	if (*(const char*)cp == '$'  &&  isVarChar1 (*(const char*)(cp+1)))
-	{
-	    cp += 1;
-	    vStringClear (name);
-	    while (isVarChar ((int) *cp))
-	    {
-		vStringPut (name, (int) *cp);
-		++cp;
-	    }
-	    while (isspace ((int) *cp))
-		++cp;
-	    if (*(const char*) cp == '=')
-	    {
-		vStringTerminate (name);
-		makeSimpleTag (name, PhpKinds, K_VARIABLE);
-		vStringClear (name);
-	    }
-	}
-	else if (strncmp ((const char*) cp, "function", (size_t) 8) == 0  &&
-	    isspace ((int) cp [8]))
-	{
-	    cp += 8;
+		if (*(const char*)cp == '$'  &&  isVarChar1 (*(const char*)(cp+1)))
+		{
+			cp += 1;
+			vStringClear (name);
+			while (isVarChar ((int) *cp))
+			{
+				vStringPut (name, (int) *cp);
+				++cp;
+			}
+			while (isspace ((int) *cp))
+				++cp;
+			if (*(const char*) cp == '=')
+			{
+				vStringTerminate (name);
+				makeSimpleTag (name, PhpKinds, K_VARIABLE);
+				vStringClear (name);
+			}
+		}
+		else if ((f = strstr ((const char*) cp, "function")) != NULL &&
+			(f == (const char*) cp || isspace ((int) f [-1])) &&
+			isspace ((int) f [8]))
+		{
+			cp = ((const unsigned char *) f) + 8;
 
-	    while (isspace ((int) *cp))
-		++cp;
+			while (isspace ((int) *cp))
+				++cp;
 
-	    if (*cp == '&')	/* skip reference character */
-		cp++;
+			if (*cp == '&')	/* skip reference character and following whitespace */
+			{
+				cp++;
 
-	    vStringClear (name);
-	    while (isalnum ((int) *cp)  ||  *cp == '_')
-	    {
-		vStringPut (name, (int) *cp);
-		++cp;
-	    }
-	    vStringTerminate (name);
-	    makeSimpleTag (name, PhpKinds, K_FUNCTION);
-	    vStringClear (name);
-	} 
-	else if (strncmp ((const char*) cp, "class", (size_t) 5) == 0 &&
-		 isspace ((int) cp [5]))
-	{
-	    cp += 5;
+				while (isspace ((int) *cp))
+					++cp;
+			}
 
-	    while (isspace ((int) *cp))
-		++cp;
-	    vStringClear (name);
-	    while (isalnum ((int) *cp)  ||  *cp == '_')
-	    {
-		vStringPut (name, (int) *cp);
-		++cp;
-	    }
-	    vStringTerminate (name);
-	    makeSimpleTag (name, PhpKinds, K_CLASS);
-	    vStringClear (name);
-	}
-	else if (strncmp ((const char*) cp, "define", (size_t) 6) == 0 &&
-	         ! isalnum ((int) cp [6]))
-	{
-	    cp += 6;
+			vStringClear (name);
+			while (isalnum ((int) *cp)  ||  *cp == '_')
+			{
+				vStringPut (name, (int) *cp);
+				++cp;
+			}
+			vStringTerminate (name);
+			makeSimpleTag (name, PhpKinds, K_FUNCTION);
+			vStringClear (name);
+		}
+		else if (strncmp ((const char*) cp, "class", (size_t) 5) == 0 &&
+				 isspace ((int) cp [5]))
+		{
+			cp += 5;
 
-	    while (isspace ((int) *cp))
-		++cp;
-	    if (*cp != '(')
-		continue;
-	    ++cp;
+			while (isspace ((int) *cp))
+				++cp;
+			vStringClear (name);
+			while (isalnum ((int) *cp)  ||  *cp == '_')
+			{
+				vStringPut (name, (int) *cp);
+				++cp;
+			}
+			vStringTerminate (name);
+			makeSimpleTag (name, PhpKinds, K_CLASS);
+			vStringClear (name);
+		}
+		else if (strncmp ((const char*) cp, "define", (size_t) 6) == 0 &&
+				 ! isalnum ((int) cp [6]))
+		{
+			cp += 6;
 
-	    while (isspace ((int) *cp))
-		++cp;
-	    if ((*cp == '\'') || (*cp == '"'))
-		++cp;
-	    else if (! ((*cp == '_')  || isalnum ((int) *cp)))
-		continue;
-          
-	    vStringClear (name);
-	    while (isalnum ((int) *cp)  ||  *cp == '_')
-	    {
-		vStringPut (name, (int) *cp);
-		++cp;
-	    }
-	    vStringTerminate (name);
-	    makeSimpleTag (name, PhpKinds, K_DEFINE);
-	    vStringClear (name);
+			while (isspace ((int) *cp))
+				++cp;
+			if (*cp != '(')
+				continue;
+			++cp;
+
+			while (isspace ((int) *cp))
+				++cp;
+			if ((*cp == '\'') || (*cp == '"'))
+				++cp;
+			else if (! ((*cp == '_')  || isalnum ((int) *cp)))
+				continue;
+
+			vStringClear (name);
+			while (isalnum ((int) *cp)  ||  *cp == '_')
+			{
+				vStringPut (name, (int) *cp);
+				++cp;
+			}
+			vStringTerminate (name);
+			makeSimpleTag (name, PhpKinds, K_DEFINE);
+			vStringClear (name);
+		}
 	}
-    }
-    vStringDelete (name);
+	vStringDelete (name);
 }
 
 extern parserDefinition* PhpParser (void)
 {
-    static const char *const extensions [] = { "php", "php3", "phtml", NULL };
-    parserDefinition* def = parserNew ("PHP");
-    def->kinds      = PhpKinds;
-    def->kindCount  = KIND_COUNT (PhpKinds);
-    def->extensions = extensions;
-    def->parser     = findPhpTags;
-    return def;
+	static const char *const extensions [] = { "php", "php3", "phtml", NULL };
+	parserDefinition* def = parserNew ("PHP");
+	def->kinds      = PhpKinds;
+	def->kindCount  = KIND_COUNT (PhpKinds);
+	def->extensions = extensions;
+	def->parser     = findPhpTags;
+	return def;
 }
 
-/* vi:set tabstop=8 shiftwidth=4: */
+
+/* vi:set tabstop=4 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