SF.net SVN: geany: [2737] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Mon Jun 30 15:59:01 UTC 2008
Revision: 2737
http://geany.svn.sourceforge.net/geany/?rev=2737&view=rev
Author: eht16
Date: 2008-06-30 08:59:00 -0700 (Mon, 30 Jun 2008)
Log Message:
-----------
In templates_free_templates() destroy also file template menu items.
Add reload argument to filetypes_load_config() to allow re-reading of the settings.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/filetypes.c
trunk/src/filetypes.h
trunk/src/highlighting.c
trunk/src/templates.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-06-30 15:20:50 UTC (rev 2736)
+++ trunk/ChangeLog 2008-06-30 15:59:00 UTC (rev 2737)
@@ -3,6 +3,11 @@
* waf, wscript:
Update waf to its latest SVN rev which makes it 20 KB smaller.
Update waf script to reflect waf API changes.
+ * src/filetypes.c, src/filetypes.h, src/highlighting.c,
+ src/templates.c:
+ In templates_free_templates() destroy also file template menu items.
+ Add reload argument to filetypes_load_config() to allow re-reading
+ of the settings.
2008-06-30 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/src/filetypes.c
===================================================================
--- trunk/src/filetypes.c 2008-06-30 15:20:50 UTC (rev 2736)
+++ trunk/src/filetypes.c 2008-06-30 15:59:00 UTC (rev 2737)
@@ -891,15 +891,20 @@
/* Load the configuration file for the associated filetype id.
* This should only be called when the filetype is needed, to save loading
* 20+ configuration files all at once. */
-void filetypes_load_config(gint ft_id)
+void filetypes_load_config(gint ft_id, gboolean reload)
{
GKeyFile *config, *config_home;
FullFileType *fft = (FullFileType*)filetypes[ft_id];
g_return_if_fail(ft_id >= 0 && ft_id < (gint) filetypes_array->len);
- if (fft->keyfile_loaded)
+ /* when reloading, proceed only if the settings were already loaded */
+ if (reload && ! fft->keyfile_loaded)
return;
+
+ /* when not reloading, load the settings only once */
+ if (! reload && fft->keyfile_loaded)
+ return;
fft->keyfile_loaded = TRUE;
config = g_key_file_new();
@@ -921,7 +926,9 @@
}
load_settings(ft_id, config, config_home);
- highlighting_init_styles(ft_id, config, config_home);
+ if (! reload)
+ /* reloading highlighting settings not yet supported */
+ highlighting_init_styles(ft_id, config, config_home);
g_key_file_free(config);
g_key_file_free(config_home);
Modified: trunk/src/filetypes.h
===================================================================
--- trunk/src/filetypes.h 2008-06-30 15:20:50 UTC (rev 2736)
+++ trunk/src/filetypes.h 2008-06-30 15:59:00 UTC (rev 2737)
@@ -147,7 +147,7 @@
/* frees the array and all related pointers */
void filetypes_free_types(void);
-void filetypes_load_config(gint ft_id);
+void filetypes_load_config(gint ft_id, gboolean reload);
void filetypes_save_commands(void);
Modified: trunk/src/highlighting.c
===================================================================
--- trunk/src/highlighting.c 2008-06-30 15:20:50 UTC (rev 2736)
+++ trunk/src/highlighting.c 2008-06-30 15:59:00 UTC (rev 2737)
@@ -1112,10 +1112,10 @@
{
/* Used by several filetypes */
if (style_sets[GEANY_FILETYPES_XML].styling == NULL)
- filetypes_load_config(GEANY_FILETYPES_XML);
+ filetypes_load_config(GEANY_FILETYPES_XML, FALSE);
/* manually initialise filetype Python for use with embedded Python */
- filetypes_load_config(GEANY_FILETYPES_PYTHON);
+ filetypes_load_config(GEANY_FILETYPES_PYTHON, FALSE);
/* don't set keywords for plain XML */
if (set_keywords)
@@ -2873,7 +2873,7 @@
{
/* All stylesets depend on filetypes.common */
if (filetype_idx != GEANY_FILETYPES_NONE)
- filetypes_load_config(GEANY_FILETYPES_NONE);
+ filetypes_load_config(GEANY_FILETYPES_NONE, FALSE);
switch (filetype_idx)
{
@@ -2922,7 +2922,7 @@
void highlighting_set_styles(ScintillaObject *sci, gint filetype_idx)
{
- filetypes_load_config(filetype_idx); /* load filetypes.ext */
+ filetypes_load_config(filetype_idx, FALSE); /* load filetypes.ext */
/* load tags files (some lexers highlight global typenames) */
if (filetype_idx < GEANY_FILETYPES_NONE)
@@ -2978,7 +2978,7 @@
return NULL;
if (style_sets[ft_id].styling == NULL)
- filetypes_load_config(ft_id);
+ filetypes_load_config(ft_id, FALSE);
/** TODO style_id might not be the real array index (Scintilla styles are not always synced
* with array indices) */
Modified: trunk/src/templates.c
===================================================================
--- trunk/src/templates.c 2008-06-30 15:20:50 UTC (rev 2736)
+++ trunk/src/templates.c 2008-06-30 15:59:00 UTC (rev 2737)
@@ -663,7 +663,7 @@
filetype_id ft_id = filetype_idx;
GeanyFiletype *ft = filetypes[ft_id];
- filetypes_load_config(ft_id); /* load any user extension setting */
+ filetypes_load_config(ft_id, FALSE); /* load any user extension setting */
if (fname == NULL)
{
@@ -753,10 +753,27 @@
void templates_free_templates(void)
{
gint i;
+ GList *children, *item;
+
for (i = 0; i < GEANY_MAX_TEMPLATES; i++)
{
g_free(templates[i]);
}
+ for (i = 0; i < GEANY_MAX_BUILT_IN_FILETYPES; i++)
+ {
+ g_free(ft_templates[i]);
+ }
+ /* destroy "New with template" sub menu items (in case we want to reload the templates) */
+ children = gtk_container_get_children(GTK_CONTAINER(ui_widgets.new_file_menu));
+ for (item = children; item != NULL; item = g_list_next(item))
+ {
+ gtk_widget_destroy(GTK_WIDGET(item->data));
+ }
+ children = gtk_container_get_children(GTK_CONTAINER(new_with_template_menu));
+ for (item = children; item != NULL; item = g_list_next(item))
+ {
+ gtk_widget_destroy(GTK_WIDGET(item->data));
+ }
}
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