SF.net SVN: geany: [1791] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Tue Aug 14 11:50:04 UTC 2007
Revision: 1791
http://geany.svn.sourceforge.net/geany/?rev=1791&view=rev
Author: ntrel
Date: 2007-08-14 04:50:03 -0700 (Tue, 14 Aug 2007)
Log Message:
-----------
Add reStructuredText filetype and parser.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/filetypes.c
trunk/src/filetypes.h
trunk/src/symbols.c
trunk/tagmanager/Makefile.am
trunk/tagmanager/makefile.win32
trunk/tagmanager/parsers.h
Added Paths:
-----------
trunk/tagmanager/rest.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-08-13 18:27:19 UTC (rev 1790)
+++ trunk/ChangeLog 2007-08-14 11:50:03 UTC (rev 1791)
@@ -1,3 +1,11 @@
+2007-08-14 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/filetypes.c, src/filetypes.h, src/symbols.c,
+ tagmanager/parsers.h, tagmanager/makefile.win32, tagmanager/rest.c,
+ tagmanager/Makefile.am:
+ Add reStructuredText filetype and parser.
+
+
2007-08-13 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* src/about.c: Increase border space in credits tab and align developer
Modified: trunk/src/filetypes.c
===================================================================
--- trunk/src/filetypes.c 2007-08-13 18:27:19 UTC (rev 1790)
+++ trunk/src/filetypes.c 2007-08-14 11:50:03 UTC (rev 1791)
@@ -77,7 +77,8 @@
FILETYPE_UID_HASKELL, // 29
FILETYPE_UID_CS, // 30
FILETYPE_UID_BASIC, // 31
- FILETYPE_UID_HAXE // 32
+ FILETYPE_UID_HAXE, // 32
+ FILETYPE_UID_REST // 33
};
@@ -535,6 +536,18 @@
filetypes[GEANY_FILETYPES_HAXE]->comment_open = g_strdup("//");
filetypes[GEANY_FILETYPES_HAXE]->comment_close = NULL;
+#define REST
+ filetypes[GEANY_FILETYPES_REST]->id = GEANY_FILETYPES_REST;
+ filetypes[GEANY_FILETYPES_REST]->uid = FILETYPE_UID_REST;
+ filetypes[GEANY_FILETYPES_REST]->lang = 28;
+ filetypes[GEANY_FILETYPES_REST]->name = g_strdup("reStructuredText");
+ filetypes[GEANY_FILETYPES_REST]->title = g_strdup(_("reStructuredText file"));
+ filetypes[GEANY_FILETYPES_REST]->extension = g_strdup("rest");
+ filetypes[GEANY_FILETYPES_REST]->pattern = utils_strv_new("*.rest", "*.reST", NULL);
+ filetypes[GEANY_FILETYPES_REST]->style_func_ptr = styleset_none;
+ filetypes[GEANY_FILETYPES_REST]->comment_open = NULL;
+ filetypes[GEANY_FILETYPES_REST]->comment_close = NULL;
+
#define ALL
filetypes[GEANY_FILETYPES_ALL]->id = GEANY_FILETYPES_ALL;
filetypes[GEANY_FILETYPES_ALL]->name = g_strdup("None");
Modified: trunk/src/filetypes.h
===================================================================
--- trunk/src/filetypes.h 2007-08-13 18:27:19 UTC (rev 1790)
+++ trunk/src/filetypes.h 2007-08-14 11:50:03 UTC (rev 1791)
@@ -74,6 +74,7 @@
GEANY_FILETYPES_LATEX,
GEANY_FILETYPES_DIFF,
GEANY_FILETYPES_CONF,
+ GEANY_FILETYPES_REST,
GEANY_FILETYPES_ALL, // must be last filetype, used for 'None' item.
GEANY_MAX_FILE_TYPES
Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c 2007-08-13 18:27:19 UTC (rev 1790)
+++ trunk/src/symbols.c 2007-08-14 11:50:03 UTC (rev 1791)
@@ -552,6 +552,16 @@
//&(tv_iters.tag_other), _("Other"), NULL);
break;
}
+ case GEANY_FILETYPES_REST:
+ {
+ tag_list_add_groups(tag_store,
+ &(tv_iters.tag_namespace), _("Chapter"), NULL,
+ &(tv_iters.tag_member), _("Section"), NULL,
+ &(tv_iters.tag_macro), _("Subsection"), NULL,
+ &(tv_iters.tag_variable), _("Subsubsection"), NULL,
+ NULL);
+ break;
+ }
case GEANY_FILETYPES_RUBY:
{
tag_list_add_groups(tag_store,
Modified: trunk/tagmanager/Makefile.am
===================================================================
--- trunk/tagmanager/Makefile.am 2007-08-13 18:27:19 UTC (rev 1790)
+++ trunk/tagmanager/Makefile.am 2007-08-14 11:50:03 UTC (rev 1791)
@@ -38,6 +38,7 @@
docbook.c\
fortran.c\
haskell.c\
+ haxe.c\
js.c\
lua.c\
make.c\
@@ -45,6 +46,7 @@
latex.c\
pascal.c\
perl.c\
+ rest.c\
ruby.c\
sql.c\
php.c\
@@ -54,7 +56,6 @@
sh.c\
vhdl.c\
ctags.c\
- haxe.c\
entry.c\
get.c\
keyword.c\
Modified: trunk/tagmanager/makefile.win32
===================================================================
--- trunk/tagmanager/makefile.win32 2007-08-13 18:27:19 UTC (rev 1790)
+++ trunk/tagmanager/makefile.win32 2007-08-14 11:50:03 UTC (rev 1791)
@@ -33,7 +33,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 \
-haskell.o python.o regex.o sh.o ctags.o entry.o get.o keyword.o options.o parse.o basic.o haxe.o \
+haskell.o haxe.o python.o regex.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 docbook.o tcl.o ruby.o asm.o sql.o css.o vstring.o tm_workspace.o tm_work_object.o \
tm_source_file.o tm_project.o tm_tag.o tm_symbol.o tm_file_entry.o \
tm_tagmanager.o
Modified: trunk/tagmanager/parsers.h
===================================================================
--- trunk/tagmanager/parsers.h 2007-08-13 18:27:19 UTC (rev 1790)
+++ trunk/tagmanager/parsers.h 2007-08-14 11:50:03 UTC (rev 1791)
@@ -42,7 +42,8 @@
HaskellParser, \
CsharpParser, \
FreeBasicParser,\
- HaxeParser
+ HaxeParser,\
+ RestParser
/*
langType of each parser
@@ -73,7 +74,8 @@
24 HaskellParser
25 CsharpParser
26 FreeBasicParser
-27 Haxe
+27 HaxeParser
+28 RestParser
*/
#endif /* _PARSERS_H */
Added: trunk/tagmanager/rest.c
===================================================================
--- trunk/tagmanager/rest.c (rev 0)
+++ trunk/tagmanager/rest.c 2007-08-14 11:50:03 UTC (rev 1791)
@@ -0,0 +1,112 @@
+/*
+*
+* Copyright (c) 2007, Nick Treleaven
+*
+* 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 reStructuredText (reST) files.
+*/
+
+/*
+* INCLUDE FILES
+*/
+#include "general.h" /* must always come first */
+
+#include <ctype.h>
+#include <string.h>
+
+#include "parse.h"
+#include "read.h"
+#include "vstring.h"
+
+/*
+* DATA DEFINITIONS
+*/
+typedef enum {
+ K_CHAPTER,
+ K_SECTION,
+ K_SUBSECTION,
+ K_SUBSUBSECTION
+} restKind;
+
+static kindOption RestKinds[] = {
+ { TRUE, 'n', "namespace", "chapters"},
+ { TRUE, 'm', "member", "sections" },
+ { TRUE, 'd', "macro", "subsections" },
+ { TRUE, 'v', "variable", "subsubsections" }
+};
+
+/*
+* FUNCTION DEFINITIONS
+*/
+
+static void makeRestTag (const vString* const name,
+ kindOption* const kinds, const int kind)
+{
+ if (name != NULL && vStringLength (name) > 0)
+ {
+ tagEntryInfo e;
+ initTagEntry (&e, vStringValue (name));
+
+ e.lineNumber--; // we want the line before the '---' underline chars
+ e.kindName = kinds [kind].name;
+ e.kind = kinds [kind].letter;
+
+ makeTagEntry (&e);
+ }
+}
+
+static void findRestTags (void)
+{
+ vString *name = vStringNew ();
+ const unsigned char *line;
+
+ while ((line = fileReadLine ()) != NULL)
+ {
+ if (strlen((const char*) line) > 3 && vStringLength(name) > 0)
+ if (! strstr((const char*) line, " "))
+ {
+ if (strncmp((const char*) line, "===", 3) == 0)
+ {
+ makeRestTag(name, RestKinds, K_CHAPTER);
+ continue;
+ }
+ else if (strncmp((const char*) line, "---", 3) == 0)
+ {
+ makeRestTag(name, RestKinds, K_SECTION);
+ continue;
+ }
+ else if (strncmp((const char*) line, "^^^", 3) == 0)
+ {
+ makeRestTag(name, RestKinds, K_SUBSECTION);
+ continue;
+ }
+ else if (strncmp((const char*) line, "```", 3) == 0)
+ {
+ makeRestTag(name, RestKinds, K_SUBSUBSECTION);
+ continue;
+ }
+ }
+ vStringClear (name);
+ if (! isspace(*line))
+ vStringCatS(name, (const char*) line);
+ vStringTerminate(name);
+ }
+ vStringDelete (name);
+}
+
+extern parserDefinition* RestParser (void)
+{
+ static const char *const patterns [] = { "*.rest", "*.reST", NULL };
+ static const char *const extensions [] = { "rest", NULL };
+ parserDefinition* const def = parserNew ("reStructuredText");
+ def->kinds = RestKinds;
+ def->kindCount = KIND_COUNT (RestKinds);
+ def->patterns = patterns;
+ def->extensions = extensions;
+ def->parser = findRestTags;
+ return def;
+}
+
+/* vi:set tabstop=8 shiftwidth=4: */
Property changes on: trunk/tagmanager/rest.c
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
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