Move code to reload configuration files into utils_reload_configuration() and add it to the plugin API.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@2794 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
Enrico Tröger 2008-07-20 18:07:53 +00:00
parent d0ec5f6134
commit 8f38a69121
6 changed files with 49 additions and 27 deletions

View File

@ -4,7 +4,9 @@
Add menu item accelerators first after default and user keybindings Add menu item accelerators first after default and user keybindings
have been read to avoid that menu item accelerators of user have been read to avoid that menu item accelerators of user
keybindings can't be overridden anymore (closes #2021703). keybindings can't be overridden anymore (closes #2021703).
* src/callbacks.c, src/plugindata.h, src/plugins.c, src/utils.c, src/utils.h:
Move code to reload configuration files into utils_reload_configuration()
and add it to the plugin API.
2008-07-18 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de> 2008-07-18 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>

View File

@ -2222,29 +2222,6 @@ void
on_menu_reload_configuration1_activate (GtkMenuItem *menuitem, on_menu_reload_configuration1_activate (GtkMenuItem *menuitem,
gpointer user_data) gpointer user_data)
{ {
guint i; utils_reload_configuration();
/* reload templates */
templates_free_templates();
templates_init();
/* reload snippets */
editor_snippets_free();
editor_snippets_init();
/* reload filetype extensions */
configuration_read_filetype_extensions();
/* save possibly changed commands before re-reading them */
filetypes_save_commands();
/* reload filetype configs */
for (i = 0; i < filetypes_array->len; i++)
{
/* filetypes_load_config() will skip not loaded filetypes */
filetypes_load_config(i, TRUE);
}
ui_set_statusbar(TRUE, _("Configuration files reloaded."));
} }

View File

@ -36,7 +36,7 @@
/* The API version should be incremented whenever any plugin data types below are /* The API version should be incremented whenever any plugin data types below are
* modified or appended to. */ * modified or appended to. */
static const gint api_version = 78; static const gint api_version = 79;
/* The ABI version should be incremented whenever existing fields in the plugin /* The ABI version should be incremented whenever existing fields in the plugin
* data types below have to be changed or reordered. It should stay the same if fields * data types below have to be changed or reordered. It should stay the same if fields
@ -300,6 +300,7 @@ typedef struct UtilsFuncs
gboolean (*spawn_async) (const gchar *dir, gchar **argv, gchar **env, GSpawnFlags flags, gboolean (*spawn_async) (const gchar *dir, gchar **argv, gchar **env, GSpawnFlags flags,
GSpawnChildSetupFunc child_setup, gpointer user_data, GPid *child_pid, GSpawnChildSetupFunc child_setup, gpointer user_data, GPid *child_pid,
GError **error); GError **error);
void (*reload_configuration) (void);
} }
UtilsFuncs; UtilsFuncs;

View File

@ -170,7 +170,8 @@ static UtilsFuncs utils_funcs = {
&utils_get_setting_integer, &utils_get_setting_integer,
&utils_get_setting_string, &utils_get_setting_string,
&utils_spawn_sync, &utils_spawn_sync,
&utils_spawn_async &utils_spawn_async,
&utils_reload_configuration
}; };
static UIUtilsFuncs uiutils_funcs = { static UIUtilsFuncs uiutils_funcs = {

View File

@ -1523,3 +1523,42 @@ gboolean utils_spawn_async(const gchar *dir, gchar **argv, gchar **env, GSpawnFl
#endif #endif
return result; return result;
} }
/**
* Reloads most of Geany's configuration files without restarting. Currently the following
* files are reloaded: all template files, also new file templates and the 'New (with template)'
* menus will be updated, Snippets (snippets.conf), filetype extensions (filetype_extensions.conf),
* and 'settings' and 'build_settings' sections of the filetype definition files.
*
* Plugins may call this function if they changed any of these files (e.g. a configuration file
* editor plugin).
*
**/
void utils_reload_configuration(void)
{
guint i;
/* reload templates */
templates_free_templates();
templates_init();
/* reload snippets */
editor_snippets_free();
editor_snippets_init();
/* reload filetype extensions */
configuration_read_filetype_extensions();
/* save possibly changed commands before re-reading them */
filetypes_save_commands();
/* reload filetype configs */
for (i = 0; i < filetypes_array->len; i++)
{
/* filetypes_load_config() will skip not loaded filetypes */
filetypes_load_config(i, TRUE);
}
ui_set_statusbar(TRUE, _("Configuration files reloaded."));
}

View File

@ -141,4 +141,6 @@ gboolean utils_spawn_async(const gchar *dir, gchar **argv, gchar **env, GSpawnFl
GSpawnChildSetupFunc child_setup, gpointer user_data, GPid *child_pid, GSpawnChildSetupFunc child_setup, gpointer user_data, GPid *child_pid,
GError **error); GError **error);
void utils_reload_configuration(void);
#endif #endif