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