SF.net SVN: geany:[3716] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Tue Apr 21 20:52:20 UTC 2009
Revision: 3716
http://geany.svn.sourceforge.net/geany/?rev=3716&view=rev
Author: eht16
Date: 2009-04-21 20:52:19 +0000 (Tue, 21 Apr 2009)
Log Message:
-----------
Add a trivial symbol parser for NSIS files.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/filetypes.c
trunk/src/symbols.c
trunk/tagmanager/Makefile.am
trunk/tagmanager/makefile.win32
trunk/tagmanager/parsers.h
trunk/wscript
Added Paths:
-----------
trunk/tagmanager/nsis.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-04-21 20:51:53 UTC (rev 3715)
+++ trunk/ChangeLog 2009-04-21 20:52:19 UTC (rev 3716)
@@ -4,6 +4,9 @@
src/prefs.c:
Replace our own GEANY_KEYS_MODIFIER_MASK by
gtk_accelerator_get_default_mod_mask() which gives the same result.
+ * src/filetypes.c, src/symbols.c, tagmanager/Makefile.am,
+ tagmanager/makefile.win32, tagmanager/parsers.h, wscript:
+ Add a trivial symbol parser for NSIS files.
2009-04-19 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/src/filetypes.c
===================================================================
--- trunk/src/filetypes.c 2009-04-21 20:51:53 UTC (rev 3715)
+++ trunk/src/filetypes.c 2009-04-21 20:52:19 UTC (rev 3716)
@@ -558,7 +558,7 @@
#define NSIS
ft = filetypes[GEANY_FILETYPES_NSIS];
- ft->lang = -2;
+ ft->lang = 35;
ft->name = g_strdup("NSIS");
ft->title = g_strdup_printf(_("%s source file"), "NSIS");
ft->extension = g_strdup("nsis");
Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c 2009-04-21 20:51:53 UTC (rev 3715)
+++ trunk/src/symbols.c 2009-04-21 20:52:19 UTC (rev 3716)
@@ -602,6 +602,13 @@
&tv_iters.tag_macro, _("Keys"), "classviewer-var",
NULL);
break;
+ case GEANY_FILETYPES_NSIS:
+ tag_list_add_groups(tag_store,
+ &tv_iters.tag_namespace, _("Sections"), "classviewer-other",
+ &tv_iters.tag_function, _("Functions"), "classviewer-method",
+ &(tv_iters.tag_variable), _("Variables"), "classviewer-var",
+ NULL);
+ break;
case GEANY_FILETYPES_LATEX:
{
tag_list_add_groups(tag_store,
Modified: trunk/tagmanager/Makefile.am
===================================================================
--- trunk/tagmanager/Makefile.am 2009-04-21 20:51:53 UTC (rev 3715)
+++ trunk/tagmanager/Makefile.am 2009-04-21 20:52:19 UTC (rev 3716)
@@ -61,6 +61,7 @@
sh.c\
vhdl.c\
actionscript.c\
+ nsis.c\
ctags.c\
entry.c\
get.c\
Modified: trunk/tagmanager/makefile.win32
===================================================================
--- trunk/tagmanager/makefile.win32 2009-04-21 20:51:53 UTC (rev 3715)
+++ trunk/tagmanager/makefile.win32 2009-04-21 20:52:19 UTC (rev 3716)
@@ -40,7 +40,7 @@
-$(RM) deps.mak *.o $(COMPLIB)
$(COMPLIB): args.o c.o fortran.o make.o conf.o pascal.o perl.o php.o diff.o vhdl.o lua.o js.o \
-actionscript.o \
+actionscript.o nsis.o \
haskell.o haxe.o html.o python.o lregex.o rest.o sh.o ctags.o entry.o get.o keyword.o options.o \
parse.o basic.o read.o sort.o strlist.o latex.o matlab.o docbook.o tcl.o ruby.o asm.o sql.o css.o \
vstring.o regex.o tm_workspace.o tm_work_object.o tm_source_file.o tm_project.o tm_tag.o \
Added: trunk/tagmanager/nsis.c
===================================================================
--- trunk/tagmanager/nsis.c (rev 0)
+++ trunk/tagmanager/nsis.c 2009-04-21 20:52:19 UTC (rev 3716)
@@ -0,0 +1,149 @@
+/*
+* $Id$
+*
+* Copyright (c) 2000-2002, Darren Hiebert
+* Copyright (c) 2009, Enrico Tröger
+*
+* This source code is released for free distribution under the terms of the
+* GNU General Public License.
+*
+* This module contains functions for generating tags for NSIS scripts (based on sh.c).
+*/
+
+/*
+* INCLUDE FILES
+*/
+#include "general.h" /* must always come first */
+
+#include <string.h>
+
+#include "parse.h"
+#include "read.h"
+#include "main.h"
+#include "vstring.h"
+
+/*
+* DATA DEFINITIONS
+*/
+typedef enum {
+ K_SECTION,
+ K_FUNCTION,
+ K_VARIABLE
+} NsisKind;
+
+static kindOption NsisKinds [] = {
+ { TRUE, 'n', "namespace", "sections"},
+ { TRUE, 'f', "function", "functions"},
+ { TRUE, 'v', "variable", "variables"}
+};
+
+/*
+* FUNCTION DEFINITIONS
+*/
+
+static void findNsisTags (void)
+{
+ vString *name = vStringNew ();
+ const unsigned char *line;
+
+ while ((line = fileReadLine ()) != NULL)
+ {
+ const unsigned char* cp = line;
+
+ while (isspace (*cp))
+ cp++;
+
+ if (*cp == '#' || *cp == ';')
+ continue;
+
+ /* functions */
+ if (strncasecmp ((const char*) cp, "function", (size_t) 8) == 0 &&
+ isspace ((int) cp [8]))
+ {
+ cp += 8;
+ /* skip all whitespace */
+ while (isspace ((int) *cp))
+ ++cp;
+ while (isalnum ((int) *cp) || *cp == '_' || *cp == '-' || *cp == '.' || *cp == '!')
+ {
+ vStringPut (name, (int) *cp);
+ ++cp;
+ }
+ vStringTerminate (name);
+ makeSimpleTag (name, NsisKinds, K_FUNCTION);
+ vStringClear (name);
+ }
+ /* variables */
+ else if (strncasecmp ((const char*) cp, "var", (size_t) 3) == 0 &&
+ isspace ((int) cp [3]))
+ {
+ cp += 3;
+ /* skip all whitespace */
+ while (isspace ((int) *cp))
+ ++cp;
+ /* skip any flags */
+ while (*cp == '/')
+ {
+ ++cp;
+ while (! isspace ((int) *cp))
+ ++cp;
+ while (isspace ((int) *cp))
+ ++cp;
+ }
+ while (isalnum ((int) *cp) || *cp == '_')
+ {
+ vStringPut (name, (int) *cp);
+ ++cp;
+ }
+ vStringTerminate (name);
+ makeSimpleTag (name, NsisKinds, K_VARIABLE);
+ vStringClear (name);
+ }
+ /* sections */
+ else if (strncasecmp ((const char*) cp, "section", (size_t) 7) == 0 &&
+ isspace ((int) cp [7]))
+ {
+ boolean in_quotes = FALSE;
+ cp += 7;
+ /* skip all whitespace */
+ while (isspace ((int) *cp))
+ ++cp;
+ while (isalnum ((int) *cp) || isspace ((int) *cp) ||
+ *cp == '_' || *cp == '-' || *cp == '.' || *cp == '!' || *cp == '"')
+ {
+ if (*cp == '"')
+ {
+ if (in_quotes)
+ break;
+ else
+ {
+ in_quotes = TRUE;
+ ++cp;
+ continue;
+ }
+ }
+ vStringPut (name, (int) *cp);
+ ++cp;
+ }
+ vStringTerminate (name);
+ makeSimpleTag (name, NsisKinds, K_SECTION);
+ vStringClear (name);
+ }
+ }
+ vStringDelete (name);
+}
+
+extern parserDefinition* NsisParser (void)
+{
+ static const char *const extensions [] = {
+ "nsi", "nsh", NULL
+ };
+ parserDefinition* def = parserNew ("NSIS");
+ def->kinds = NsisKinds;
+ def->kindCount = KIND_COUNT (NsisKinds);
+ def->extensions = extensions;
+ def->parser = findNsisTags;
+ return def;
+}
+
+/* vi:set tabstop=8 shiftwidth=4: */
Property changes on: trunk/tagmanager/nsis.c
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/tagmanager/parsers.h
===================================================================
--- trunk/tagmanager/parsers.h 2009-04-21 20:51:53 UTC (rev 3715)
+++ trunk/tagmanager/parsers.h 2009-04-21 20:52:19 UTC (rev 3716)
@@ -49,7 +49,8 @@
GLSLParser, \
MatlabParser, \
ValaParser, \
- ActionScriptParser
+ ActionScriptParser, \
+ NsisParser
/*
langType of each parser
@@ -88,6 +89,7 @@
32 MatlabParser
33 ValaParser
34 ActionScriptParser
+35 NsisParser
*/
#endif /* _PARSERS_H */
Modified: trunk/wscript
===================================================================
--- trunk/wscript 2009-04-21 20:51:53 UTC (rev 3715)
+++ trunk/wscript 2009-04-21 20:52:19 UTC (rev 3716)
@@ -58,8 +58,8 @@
'tagmanager/docbook.c', 'tagmanager/entry.c', 'tagmanager/fortran.c', 'tagmanager/get.c',
'tagmanager/haskell.c', 'tagmanager/haxe.c', 'tagmanager/html.c', 'tagmanager/js.c',
'tagmanager/keyword.c', 'tagmanager/latex.c', 'tagmanager/lregex.c', 'tagmanager/lua.c',
- 'tagmanager/make.c', 'tagmanager/matlab.c', 'tagmanager/options.c', 'tagmanager/parse.c',
- 'tagmanager/pascal.c',
+ 'tagmanager/make.c', 'tagmanager/matlab.c', 'tagmanager/nsis.c', 'tagmanager/options.c',
+ 'tagmanager/parse.c', 'tagmanager/pascal.c',
'tagmanager/perl.c', 'tagmanager/php.c', 'tagmanager/python.c', 'tagmanager/read.c',
'tagmanager/rest.c', 'tagmanager/ruby.c', 'tagmanager/sh.c', 'tagmanager/sort.c',
'tagmanager/sql.c', 'tagmanager/strlist.c', 'tagmanager/tcl.c', 'tagmanager/tm_file_entry.c',
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