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