SF.net SVN: geany: [2317] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sun Mar 9 18:50:44 UTC 2008


Revision: 2317
          http://geany.svn.sourceforge.net/geany/?rev=2317&view=rev
Author:   eht16
Date:     2008-03-09 11:50:41 -0700 (Sun, 09 Mar 2008)

Log Message:
-----------
Add HTML parser to get h1, h2, h3 symbols as well as link anchors and JavaScript functions (closes #1896068).

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/filetypes.c
    trunk/src/symbols.c
    trunk/tagmanager/Makefile.am
    trunk/tagmanager/makefile.win32
    trunk/tagmanager/parsers.h

Added Paths:
-----------
    trunk/tagmanager/html.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-03-09 16:30:01 UTC (rev 2316)
+++ trunk/ChangeLog	2008-03-09 18:50:41 UTC (rev 2317)
@@ -1,8 +1,12 @@
 2008-03-09  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * src/document.c:
-  Use SCI_SETSCROLLWIDTHTRACKING to improve horizontal scrollbar
-  behaviour by always adjusting to the longest line (part of #1905141).
+   Use SCI_SETSCROLLWIDTHTRACKING to improve horizontal scrollbar
+   behaviour by always adjusting to the longest line (part of #1905141).
+ * src/filetypes.c, src/symbols.c, tagmanager/parsers.h,
+   tagmanager/makefile.win32, tagmanager/html.c, tagmanager/Makefile.am:
+   Add HTML parser to get h1, h2, h3 symbols as well as link anchors and
+   JavaScript functions (closes #1896068).
 
 
 2008-03-07  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/src/filetypes.c
===================================================================
--- trunk/src/filetypes.c	2008-03-09 16:30:01 UTC (rev 2316)
+++ trunk/src/filetypes.c	2008-03-09 18:50:41 UTC (rev 2317)
@@ -364,7 +364,7 @@
 #define HTML
 	filetypes[GEANY_FILETYPES_HTML]->id = GEANY_FILETYPES_HTML;
 	filetypes[GEANY_FILETYPES_HTML]->uid = FILETYPE_UID_HTML;
-	filetypes[GEANY_FILETYPES_HTML]->lang = -2;
+	filetypes[GEANY_FILETYPES_HTML]->lang = 29;
 	filetypes[GEANY_FILETYPES_HTML]->name = g_strdup("HTML");
 	filetypes[GEANY_FILETYPES_HTML]->title = g_strdup_printf(_("%s source file"), "HTML");
 	filetypes[GEANY_FILETYPES_HTML]->extension = g_strdup("html");

Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c	2008-03-09 16:30:01 UTC (rev 2316)
+++ trunk/src/symbols.c	2008-03-09 18:50:41 UTC (rev 2317)
@@ -615,6 +615,17 @@
 				/*&(tv_iters.tag_other), _("Other"), NULL);*/
 			break;
 		}
+		case GEANY_FILETYPES_HTML:
+		{
+			tag_list_add_groups(tag_store,
+				&(tv_iters.tag_function), _("JavaScript functions"), NULL,
+				&(tv_iters.tag_member), _("Anchor"), NULL,
+				&(tv_iters.tag_namespace), _("Heading (H1)"), NULL,
+				&(tv_iters.tag_class), _("Heading (H2)"), NULL,
+				&(tv_iters.tag_variable), _("Heading (H3)"), NULL,
+				NULL);
+			break;
+		}
 		case GEANY_FILETYPES_REST:
 		{
 			tag_list_add_groups(tag_store,

Modified: trunk/tagmanager/Makefile.am
===================================================================
--- trunk/tagmanager/Makefile.am	2008-03-09 16:30:01 UTC (rev 2316)
+++ trunk/tagmanager/Makefile.am	2008-03-09 18:50:41 UTC (rev 2317)
@@ -36,6 +36,7 @@
 	fortran.c\
 	haskell.c\
 	haxe.c\
+	html.c\
 	js.c\
 	lua.c\
 	make.c\

Added: trunk/tagmanager/html.c
===================================================================
--- trunk/tagmanager/html.c	                        (rev 0)
+++ trunk/tagmanager/html.c	2008-03-09 18:50:41 UTC (rev 2317)
@@ -0,0 +1,71 @@
+/*
+*   $Id$
+*
+*   Copyright (c) 2003, Darren Hiebert
+*
+*   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 HTML language
+*   files.
+*/
+
+/*
+*   INCLUDE FILES
+*/
+#include "general.h"  /* must always come first */
+#include "parse.h"
+
+/*
+*   FUNCTION DEFINITIONS
+*/
+
+static void installHtmlRegex (const langType language)
+{
+#define POSSIBLE_ATTRIBUTES "([ \t]+[a-z]+=\"?[^>\"]*\"?)*"
+/* the following matches headings with "<a>" tags inside like
+ * <h1><a href="#id109">Some Text</a></h1>
+ * but it fails matching simple headings like
+ * <h1>Some Text</h1> */
+/*#define INNER_HEADING "[ \t]*(<.*>(.*+)<.*>[ \t]*"*/
+
+/* this matches simple heading without nested tags */
+/** TODO combine both pattern to be able to match both heading styles */
+#define INNER_HEADING "[ \t]*(.*+)[ \t]*"
+
+	addTagRegex (language,
+		"<a"
+		POSSIBLE_ATTRIBUTES
+		"[ \t]+name=\"?([^>\"]+)\"?"
+		POSSIBLE_ATTRIBUTES
+		"[ \t]*>",
+		"\\2", "m,member,named anchors", "i");
+
+	addTagRegex (language,
+		"<h1>" INNER_HEADING "</h1>",
+		"\\1", "n,namespace,H1 heading", "i");
+
+	addTagRegex (language,
+		"<h2>" INNER_HEADING "</h2>",
+		"\\1", "c,class,H2 heading", "i");
+
+	addTagRegex (language,
+		"<h3>" INNER_HEADING "</h3>",
+		"\\1", "v,variable,H3 heading", "i");
+
+	addTagRegex (language, "^[ \t]*function[ \t]*([A-Za-z0-9_]+)[ \t]*\\(",
+		"\\1", "f,function,JavaScript functions", NULL);
+}
+
+/* Create parser definition stucture */
+extern parserDefinition* HtmlParser (void)
+{
+	static const char *const extensions [] = { "htm", "html", NULL };
+	parserDefinition *const def = parserNew ("HTML");
+	def->extensions = extensions;
+	def->initialize = installHtmlRegex;
+	def->regex      = TRUE;
+	return def;
+}
+
+/* vi:set tabstop=4 shiftwidth=4: */


Property changes on: trunk/tagmanager/html.c
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Modified: trunk/tagmanager/makefile.win32
===================================================================
--- trunk/tagmanager/makefile.win32	2008-03-09 16:30:01 UTC (rev 2316)
+++ trunk/tagmanager/makefile.win32	2008-03-09 18:50:41 UTC (rev 2317)
@@ -35,10 +35,10 @@
 	-$(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 haxe.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 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 tm_symbol.o tm_file_entry.o \
-tm_tagmanager.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 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 \
+tm_symbol.o tm_file_entry.o tm_tagmanager.o
 	$(AR) rc $@ $^
 	$(RANLIB) $@
 

Modified: trunk/tagmanager/parsers.h
===================================================================
--- trunk/tagmanager/parsers.h	2008-03-09 16:30:01 UTC (rev 2316)
+++ trunk/tagmanager/parsers.h	2008-03-09 18:50:41 UTC (rev 2317)
@@ -43,7 +43,8 @@
     CsharpParser, \
     FreeBasicParser,\
     HaxeParser,\
-    RestParser
+    RestParser, \
+    HtmlParser
 
 /*
 langType of each parser
@@ -76,6 +77,7 @@
 26	FreeBasicParser
 27  HaxeParser
 28  RestParser
+29  HtmlParser
 */
 #endif	/* _PARSERS_H */
 


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