SF.net SVN: geany: [860] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Mon Oct 2 11:32:11 UTC 2006


Revision: 860
          http://svn.sourceforge.net/geany/?rev=860&view=rev
Author:   ntrel
Date:     2006-10-02 04:31:54 -0700 (Mon, 02 Oct 2006)

Log Message:
-----------
Move global tags code to symbols.c.
Added symbols_global_tags_loaded(), symbols_get_global_keywords().

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/po/POTFILES.in
    trunk/src/Makefile.am
    trunk/src/highlighting.c
    trunk/src/makefile.win32

Added Paths:
-----------
    trunk/src/symbols.c
    trunk/src/symbols.h

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2006-10-02 11:14:36 UTC (rev 859)
+++ trunk/ChangeLog	2006-10-02 11:31:54 UTC (rev 860)
@@ -2,6 +2,10 @@
 
  * src/templates.c:
    Added a blank line indent for templates D, HTML, PHP.
+ * src/symbols.c, src/symbols.h, src/highlighting.c,
+   src/makefile.win32, src/Makefile.am, po/POTFILES.in:
+   Move global tags code to symbols.c.
+   Added symbols_global_tags_loaded(), symbols_get_global_keywords().
 
 
 2006-10-01  Enrico Tröger  <enrico.troeger at uvena.de>

Modified: trunk/po/POTFILES.in
===================================================================
--- trunk/po/POTFILES.in	2006-10-02 11:14:36 UTC (rev 859)
+++ trunk/po/POTFILES.in	2006-10-02 11:31:54 UTC (rev 860)
@@ -27,3 +27,4 @@
 src/keybindings.c
 src/search.c
 src/notebook.c
+src/symbols.c

Modified: trunk/src/Makefile.am
===================================================================
--- trunk/src/Makefile.am	2006-10-02 11:14:36 UTC (rev 859)
+++ trunk/src/Makefile.am	2006-10-02 11:31:54 UTC (rev 860)
@@ -8,6 +8,7 @@
 
 SRCS = \
 	main.c main.h geany.h \
+	symbols.c symbols.h \
 	search.c search.h \
 	notebook.c notebook.h \
 	keybindings.c keybindings.h \

Modified: trunk/src/highlighting.c
===================================================================
--- trunk/src/highlighting.c	2006-10-02 11:14:36 UTC (rev 859)
+++ trunk/src/highlighting.c	2006-10-02 11:31:54 UTC (rev 860)
@@ -29,6 +29,7 @@
 #include "utils.h"
 #include "main.h"
 #include "filetypes.h"
+#include "symbols.h"
 
 
 typedef struct
@@ -81,42 +82,6 @@
 } common_style_set;
 
 
-enum	// Geany tag files
-{
-	GTF_C,
-	GTF_PASCAL,
-	GTF_PHP,
-	GTF_HTML_ENTITIES,
-	GTF_LATEX,
-	GTF_MAX
-};
-
-// langType used in TagManager (see the table in tagmanager/parsers.h)
-enum	// Geany lang type
-{
-	GLT_C = 0,
-	GLT_CPP = 1,
-	GLT_PASCAL = 4,
-	GLT_PHP = 6,
-	GLT_LATEX = 8
-};
-
-typedef struct
-{
-	gboolean	tags_loaded;
-	const gchar	*tag_file;
-} TagFileInfo;
-
-static TagFileInfo tag_file_info[GTF_MAX] =
-{
-	{FALSE, "global.tags"},
-	{FALSE, "pascal.tags"},
-	{FALSE, "php.tags"},
-	{FALSE, "html_entities.tags"},
-	{FALSE, "latex.tags"}
-};
-
-
 static void new_style_array(gint file_type_id, gint styling_count)
 {
 	style_sets[file_type_id].styling = g_new0(Style, styling_count);
@@ -131,41 +96,6 @@
 #endif
 
 
-// lang_type is for langType used in TagManager (see the table in tagmanager/parsers.h)
-static void ensure_tags_loaded(gint tag_file_index, gint lang_type)
-{
-	TagFileInfo *tfi;
-
-	if (app->ignore_global_tags) return;
-
-	tfi = &tag_file_info[tag_file_index];
-	if (! tfi->tags_loaded)
-	{
-		gchar *file = g_strconcat(app->datadir, G_DIR_SEPARATOR_S, tfi->tag_file, NULL);
-		tm_workspace_load_global_tags(file, lang_type);
-		tfi->tags_loaded = TRUE;
-		g_free(file);
-	}
-}
-
-
-static void ensure_html_tags_loaded()
-{
-	TagFileInfo *tfi;
-
-	if (app->ignore_global_tags) return;
-
-	tfi = &tag_file_info[GTF_HTML_ENTITIES];
-	if (! tfi->tags_loaded)
-	{
-		gchar *file = g_strconcat(app->datadir, G_DIR_SEPARATOR_S, tfi->tag_file, NULL);
-		html_entities = utils_read_file_in_array(file);
-		tfi->tags_loaded = TRUE;
-		g_free(file);
-	}
-}
-
-
 /* simple wrapper function to print file errors in DEBUG mode */
 static void load_system_keyfile(GKeyFile *key_file, const gchar *file, GKeyFileFlags flags,
 								G_GNUC_UNUSED GError **just_for_compatibility)
@@ -581,35 +511,23 @@
 	g_key_file_free(config_home);
 
 	// load global tags file for C autocompletion
-	ensure_tags_loaded(GTF_C, GLT_C);
+	symbols_global_tags_loaded(GEANY_FILETYPES_C);
 }
 
 
 void styleset_c(ScintillaObject *sci)
 {
+	GString *s;
+
 	styleset_common(sci, 5);
 	if (style_sets[GEANY_FILETYPES_C].styling == NULL) styleset_c_init();
 
 	/* Assign global keywords */
-	if ((app->tm_workspace) && (app->tm_workspace->global_tags))
+	s = symbols_get_global_keywords();
+	if (s != NULL)
 	{
-		guint j;
-		GPtrArray *g_typedefs = tm_tags_extract(app->tm_workspace->global_tags, tm_tag_typedef_t | tm_tag_struct_t | tm_tag_class_t);
-		if ((g_typedefs) && (g_typedefs->len > 0))
-		{
-			GString *s = g_string_sized_new(g_typedefs->len * 10);
-			for (j = 0; j < g_typedefs->len; ++j)
-			{
-				if (!(TM_TAG(g_typedefs->pdata[j])->atts.entry.scope))
-				{
-					g_string_append(s, TM_TAG(g_typedefs->pdata[j])->name);
-					g_string_append_c(s, ' ');
-				}
-			}
-			SSM(sci, SCI_SETKEYWORDS, 1, (sptr_t) s->str);
-			g_string_free(s, TRUE);
-		}
-		g_ptr_array_free(g_typedefs, TRUE);
+		SSM(sci, SCI_SETKEYWORDS, 1, (sptr_t) s->str);
+		g_string_free(s, TRUE);
 	}
 
 	SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) style_sets[GEANY_FILETYPES_C].wordchars);
@@ -702,35 +620,23 @@
 	g_key_file_free(config_home);
 
 	// load global tags file for C autocompletion
-	ensure_tags_loaded(GTF_C, GLT_CPP);
+	symbols_global_tags_loaded(GEANY_FILETYPES_CPP);
 }
 
 
 void styleset_cpp(ScintillaObject *sci)
 {
+	GString *s;
+
 	styleset_common(sci, 5);
 	if (style_sets[GEANY_FILETYPES_CPP].styling == NULL) styleset_cpp_init();
 
 	/* Assign global keywords */
-	if ((app->tm_workspace) && (app->tm_workspace->global_tags))
+	s = symbols_get_global_keywords();
+	if (s != NULL)
 	{
-		guint j;
-		GPtrArray *g_typedefs = tm_tags_extract(app->tm_workspace->global_tags, tm_tag_typedef_t | tm_tag_struct_t | tm_tag_class_t);
-		if ((g_typedefs) && (g_typedefs->len > 0))
-		{
-			GString *s = g_string_sized_new(g_typedefs->len * 10);
-			for (j = 0; j < g_typedefs->len; ++j)
-			{
-				if (!(TM_TAG(g_typedefs->pdata[j])->atts.entry.scope))
-				{
-					g_string_append(s, TM_TAG(g_typedefs->pdata[j])->name);
-					g_string_append_c(s, ' ');
-				}
-			}
-			SSM(sci, SCI_SETKEYWORDS, 1, (sptr_t) s->str);
-			g_string_free(s, TRUE);
-		}
-		g_ptr_array_free(g_typedefs, TRUE);
+		SSM(sci, SCI_SETKEYWORDS, 1, (sptr_t) s->str);
+		g_string_free(s, TRUE);
 	}
 
 	SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) style_sets[GEANY_FILETYPES_CPP].wordchars);
@@ -811,7 +717,7 @@
 	filetypes_get_config(config, config_home, GEANY_FILETYPES_PASCAL);
 
 	// load global tags file for PASCAL autocompletion
-	ensure_tags_loaded(GTF_PASCAL, GLT_PASCAL);
+	symbols_global_tags_loaded(GEANY_FILETYPES_PASCAL);
 
 	g_key_file_free(config);
 	g_key_file_free(config_home);
@@ -964,7 +870,7 @@
 	filetypes_get_config(config, config_home, GEANY_FILETYPES_LATEX);
 
 	// load global tags file for LaTeX autocompletion
-	ensure_tags_loaded(GTF_LATEX, GLT_LATEX);
+	symbols_global_tags_loaded(GEANY_FILETYPES_LATEX);
 
 	g_key_file_free(config);
 	g_key_file_free(config_home);
@@ -1005,7 +911,7 @@
 	filetypes_get_config(config, config_home, GEANY_FILETYPES_PHP);
 
 	// load global tags file for PHP autocompletion
-	ensure_tags_loaded(GTF_PHP, GLT_PHP);
+	symbols_global_tags_loaded(GEANY_FILETYPES_PHP);
 
 	g_key_file_free(config);
 	g_key_file_free(config_home);
@@ -1045,7 +951,7 @@
 	filetypes_get_config(config, config_home, GEANY_FILETYPES_HTML);
 
 	// load global tags file for HTML entities autocompletion
-	ensure_html_tags_loaded();
+	symbols_global_tags_loaded(GEANY_FILETYPES_HTML);
 
 	g_key_file_free(config);
 	g_key_file_free(config_home);
@@ -2591,35 +2497,23 @@
 
 	// load global tags file for C autocompletion
 	// C++ is a special case, here we use 0 to have C global tags in C++, too
-	ensure_tags_loaded(GTF_C, GLT_C);
+	symbols_global_tags_loaded(GEANY_FILETYPES_C);
 }
 
 
 void styleset_d(ScintillaObject *sci)
 {
+	GString *s;
+
 	styleset_common(sci, 5);
 	if (style_sets[GEANY_FILETYPES_D].styling == NULL) styleset_d_init();
 
 	/* Assign global keywords */
-	if ((app->tm_workspace) && (app->tm_workspace->global_tags))
+	s = symbols_get_global_keywords();
+	if (s != NULL)
 	{
-		guint j;
-		GPtrArray *g_typedefs = tm_tags_extract(app->tm_workspace->global_tags, tm_tag_typedef_t | tm_tag_struct_t | tm_tag_class_t);
-		if ((g_typedefs) && (g_typedefs->len > 0))
-		{
-			GString *s = g_string_sized_new(g_typedefs->len * 10);
-			for (j = 0; j < g_typedefs->len; ++j)
-			{
-				if (!(TM_TAG(g_typedefs->pdata[j])->atts.entry.scope))
-				{
-					g_string_append(s, TM_TAG(g_typedefs->pdata[j])->name);
-					g_string_append_c(s, ' ');
-				}
-			}
-			SSM(sci, SCI_SETKEYWORDS, 1, (sptr_t) s->str);
-			g_string_free(s, TRUE);
-		}
-		g_ptr_array_free(g_typedefs, TRUE);
+		SSM(sci, SCI_SETKEYWORDS, 1, (sptr_t) s->str);
+		g_string_free(s, TRUE);
 	}
 
 	SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) style_sets[GEANY_FILETYPES_D].wordchars);

Modified: trunk/src/makefile.win32
===================================================================
--- trunk/src/makefile.win32	2006-10-02 11:14:36 UTC (rev 859)
+++ trunk/src/makefile.win32	2006-10-02 11:31:54 UTC (rev 860)
@@ -46,7 +46,8 @@
 
 OBJS = treeviews.o templates.o encodings.o about.o prefs.o win32.o build.o msgwindow.o dialogs.o \
 	filetypes.o interface.o main.o support.o callbacks.o utils.o ui_utils.o socket.o \
-	highlighting.o sci_cb.o document.o sciwrappers.o keyfile.o keybindings.o search.o notebook.o
+	highlighting.o sci_cb.o document.o sciwrappers.o keyfile.o keybindings.o search.o notebook.o \
+	symbols.o
 
 .c.o:
 	$(CC) $(CCFLAGS) -c $<

Added: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c	                        (rev 0)
+++ trunk/src/symbols.c	2006-10-02 11:31:54 UTC (rev 860)
@@ -0,0 +1,145 @@
+/*
+ *      symbols.c - this file is part of Geany, a fast and lightweight IDE
+ *
+ *      Copyright 2006 Enrico Troeger <enrico.troeger at uvena.de>
+ *      Copyright 2006 Nick Treleaven <nick.treleaven at btinternet.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $Id$
+ */
+
+#include "geany.h"
+#include "symbols.h"
+#include "utils.h"
+#include "filetypes.h"
+#include "sci_cb.h"	// html_entities
+
+
+enum	// Geany tag files
+{
+	GTF_C,
+	GTF_PASCAL,
+	GTF_PHP,
+	GTF_HTML_ENTITIES,
+	GTF_LATEX,
+	GTF_MAX
+};
+
+typedef struct
+{
+	gboolean	tags_loaded;
+	const gchar	*tag_file;
+} TagFileInfo;
+
+static TagFileInfo tag_file_info[GTF_MAX] =
+{
+	{FALSE, "global.tags"},
+	{FALSE, "pascal.tags"},
+	{FALSE, "php.tags"},
+	{FALSE, "html_entities.tags"},
+	{FALSE, "latex.tags"}
+};
+
+// langType used in TagManager (see tagmanager/parsers.h)
+enum	// Geany lang type
+{
+	GLT_C = 0,
+	GLT_CPP = 1,
+	GLT_PASCAL = 4,
+	GLT_PHP = 6,
+	GLT_LATEX = 8
+};
+
+
+static void html_tags_loaded();
+
+
+// Ensure that the global tags file for the file_type_idx filetype is loaded.
+void symbols_global_tags_loaded(gint file_type_idx)
+{
+	TagFileInfo *tfi;
+	gint gtf, lt;
+
+	if (app->ignore_global_tags) return;
+
+	switch (file_type_idx)
+	{
+		case GEANY_FILETYPES_HTML:
+			html_tags_loaded();
+			return;
+		case GEANY_FILETYPES_C:		gtf = GTF_C;		lt = GLT_C; break;
+		case GEANY_FILETYPES_CPP:	gtf = GTF_C;		lt = GLT_CPP; break;
+		case GEANY_FILETYPES_PASCAL:gtf = GTF_PASCAL;	lt = GLT_PASCAL; break;
+		case GEANY_FILETYPES_PHP:	gtf = GTF_PHP;		lt = GLT_PHP; break;
+		case GEANY_FILETYPES_LATEX:	gtf = GTF_LATEX;	lt = GLT_LATEX; break;
+		default:
+			return;
+	}
+	tfi = &tag_file_info[gtf];
+
+	if (! tfi->tags_loaded)
+	{
+		gchar *file = g_strconcat(app->datadir, G_DIR_SEPARATOR_S, tfi->tag_file, NULL);
+		tm_workspace_load_global_tags(file, lt);
+		tfi->tags_loaded = TRUE;
+		g_free(file);
+	}
+}
+
+
+static void html_tags_loaded()
+{
+	TagFileInfo *tfi;
+
+	if (app->ignore_global_tags) return;
+
+	tfi = &tag_file_info[GTF_HTML_ENTITIES];
+	if (! tfi->tags_loaded)
+	{
+		gchar *file = g_strconcat(app->datadir, G_DIR_SEPARATOR_S, tfi->tag_file, NULL);
+		html_entities = utils_read_file_in_array(file);
+		tfi->tags_loaded = TRUE;
+		g_free(file);
+	}
+}
+
+
+GString *symbols_get_global_keywords()
+{
+	GString *s = NULL;
+
+	if ((app->tm_workspace) && (app->tm_workspace->global_tags))
+	{
+		guint j;
+		GPtrArray *g_typedefs = tm_tags_extract(app->tm_workspace->global_tags,
+				tm_tag_typedef_t | tm_tag_struct_t | tm_tag_class_t);
+
+		if ((g_typedefs) && (g_typedefs->len > 0))
+		{
+			s = g_string_sized_new(g_typedefs->len * 10);
+			for (j = 0; j < g_typedefs->len; ++j)
+			{
+				if (!(TM_TAG(g_typedefs->pdata[j])->atts.entry.scope))
+				{
+					g_string_append(s, TM_TAG(g_typedefs->pdata[j])->name);
+					g_string_append_c(s, ' ');
+				}
+			}
+		}
+		g_ptr_array_free(g_typedefs, TRUE);
+	}
+	return s;
+}


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

Added: trunk/src/symbols.h
===================================================================
--- trunk/src/symbols.h	                        (rev 0)
+++ trunk/src/symbols.h	2006-10-02 11:31:54 UTC (rev 860)
@@ -0,0 +1,32 @@
+/*
+ *      symbols.h - this file is part of Geany, a fast and lightweight IDE
+ *
+ *      Copyright 2006 Enrico Troeger <enrico.troeger at uvena.de>
+ *      Copyright 2006 Nick Treleaven <nick.treleaven at btinternet.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $Id$
+ */
+
+
+#ifndef GEANY_SYMBOLS_H
+#define GEANY_SYMBOLS_H 1
+
+void symbols_global_tags_loaded(gint file_type_idx);
+
+GString *symbols_get_global_keywords();
+
+#endif


Property changes on: trunk/src/symbols.h
___________________________________________________________________
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