SF.net SVN: geany: [2591] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Fri May 16 12:08:42 UTC 2008


Revision: 2591
          http://geany.svn.sourceforge.net/geany/?rev=2591&view=rev
Author:   ntrel
Date:     2008-05-16 05:08:39 -0700 (Fri, 16 May 2008)

Log Message:
-----------
Note: this commit breaks the plugin API (but is necessary so that in
future the ABI can stay stable when adding preferences).
Split up prefs into interface_prefs, toolbar_prefs, file_prefs,
search_prefs, tool_prefs, template_prefs, and add these to the
plugin API.
Move suppress_search_dialogs and search_use_current_word to
search_prefs, and rename accordingly.
Rename switch_msgwin_pages pref to switch_to_status.
Remove toolbar_ prefix for toolbar_prefs items.
Remove tool_ prefix for tool_prefs items.
Remove template_ prefix for template_prefs items.
Add Geany prefix for EditorPrefs.
Add Geany prefix for SearchPrefs.
Initialize search_prefs to zero in main.c.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/plugins/export.c
    trunk/plugins/filebrowser.c
    trunk/src/build.c
    trunk/src/callbacks.c
    trunk/src/dialogs.c
    trunk/src/document.c
    trunk/src/document.h
    trunk/src/editor.c
    trunk/src/editor.h
    trunk/src/keybindings.c
    trunk/src/keyfile.c
    trunk/src/main.c
    trunk/src/msgwindow.c
    trunk/src/notebook.c
    trunk/src/plugindata.h
    trunk/src/plugins.c
    trunk/src/prefs.c
    trunk/src/prefs.h
    trunk/src/printing.c
    trunk/src/search.c
    trunk/src/search.h
    trunk/src/templates.c
    trunk/src/templates.h
    trunk/src/treeviews.c
    trunk/src/ui_utils.c
    trunk/src/ui_utils.h
    trunk/src/utils.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/ChangeLog	2008-05-16 12:08:39 UTC (rev 2591)
@@ -1,3 +1,28 @@
+2008-05-16  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/templates.c, src/build.c, src/utils.c, src/ui_utils.h,
+   src/templates.h, src/keybindings.c, src/printing.c, src/prefs.c,
+   src/dialogs.c, src/prefs.h, src/plugindata.h, src/treeviews.c,
+   src/msgwindow.c, src/callbacks.c, src/notebook.c, src/keyfile.c,
+   src/search.c, src/search.h, src/document.c, src/plugins.c,
+   src/document.h, src/main.c, src/editor.c, src/editor.h, src/ui_utils.c,
+   plugins/export.c, plugins/filebrowser.c:
+   Note: this commit breaks the plugin API (but is necessary so that in
+   future the ABI can stay stable when adding preferences).
+   Split up prefs into interface_prefs, toolbar_prefs, file_prefs,
+   search_prefs, tool_prefs, template_prefs, and add these to the
+   plugin API.
+   Move suppress_search_dialogs and search_use_current_word to
+   search_prefs, and rename accordingly.
+   Rename switch_msgwin_pages pref to switch_to_status.
+   Remove toolbar_ prefix for toolbar_prefs items.
+   Remove tool_ prefix for tool_prefs items.
+   Remove template_ prefix for template_prefs items.
+   Add Geany prefix for EditorPrefs.
+   Add Geany prefix for SearchPrefs.
+   Initialize search_prefs to zero in main.c.
+
+
 2008-05-15  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * src/*.c src/*.h:

Modified: trunk/plugins/export.c
===================================================================
--- trunk/plugins/export.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/plugins/export.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -34,6 +34,7 @@
 #include "document.h"
 #include "prefs.h"
 #include "utils.h"
+#include "ui_utils.h"
 #include "pluginmacros.h"
 
 
@@ -575,7 +576,7 @@
 	}
 
 	/* read Geany's font and font size */
-	font_desc = pango_font_description_from_string(prefs->editor_font);
+	font_desc = pango_font_description_from_string(geany_data->interface_prefs->editor_font);
 	font_name = pango_font_description_get_family(font_desc);
 	/*font_size = pango_font_description_get_size(font_desc) / PANGO_SCALE;*/
 	/* take the zoom level also into account */

Modified: trunk/plugins/filebrowser.c
===================================================================
--- trunk/plugins/filebrowser.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/plugins/filebrowser.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -34,6 +34,7 @@
 #include "utils.h"
 #include "keybindings.h"
 #include "project.h"
+#include "ui_utils.h"
 
 #include "plugindata.h"
 #include "pluginmacros.h"
@@ -712,7 +713,7 @@
 	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(file_view), TRUE);
 	gtk_tree_view_set_search_column(GTK_TREE_VIEW(file_view), FILEVIEW_COLUMN_NAME);
 
-	pfd = pango_font_description_from_string(prefs->tagbar_font);
+	pfd = pango_font_description_from_string(geany_data->interface_prefs->tagbar_font);
 	gtk_widget_modify_font(file_view, pfd);
 	pango_font_description_free(pfd);
 

Modified: trunk/src/build.c
===================================================================
--- trunk/src/build.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/build.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -192,7 +192,7 @@
 	locale_cmd_string = utils_get_locale_from_utf8(cmd_string);
 
 	/* get the terminal path */
-	locale_term_cmd = utils_get_locale_from_utf8(prefs.tools_term_cmd);
+	locale_term_cmd = utils_get_locale_from_utf8(tool_prefs.term_cmd);
 	/* split the term_cmd, so arguments will work too */
 	term_argv = g_strsplit(locale_term_cmd, " ", -1);
 	term_argv_len = g_strv_length(term_argv);
@@ -209,7 +209,7 @@
 	{
 		ui_set_statusbar(TRUE,
 			_("Could not find terminal \"%s\" "
-				"(check path for Terminal tool setting in Preferences)"), prefs.tools_term_cmd);
+				"(check path for Terminal tool setting in Preferences)"), tool_prefs.term_cmd);
 
 		utils_free_pointers(executable, view_file, locale_filename, cmd_string, locale_cmd_string,
 										locale_term_cmd, NULL);
@@ -317,7 +317,7 @@
 
 	if (idx < 0 || doc_list[idx].file_name == NULL) return (GPid) 1;
 
-	cmdstr = g_string_new(prefs.tools_make_cmd);
+	cmdstr = g_string_new(tool_prefs.make_cmd);
 	g_string_append_c(cmdstr, ' ');
 
 	if (build_opts == GBO_MAKE_OBJECT)
@@ -751,7 +751,7 @@
 		gchar  **argv = NULL;
 
 		/* get the terminal path */
-		locale_term_cmd = utils_get_locale_from_utf8(prefs.tools_term_cmd);
+		locale_term_cmd = utils_get_locale_from_utf8(tool_prefs.term_cmd);
 		/* split the term_cmd, so arguments will work too */
 		term_argv = g_strsplit(locale_term_cmd, " ", -1);
 		term_argv_len = g_strv_length(term_argv);
@@ -768,7 +768,7 @@
 		{
 			ui_set_statusbar(TRUE,
 				_("Could not find terminal \"%s\" "
-					"(check path for Terminal tool setting in Preferences)"), prefs.tools_term_cmd);
+					"(check path for Terminal tool setting in Preferences)"), tool_prefs.term_cmd);
 			run_info.pid = (GPid) 1;
 			goto free_strings;
 		}

Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/callbacks.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -485,7 +485,7 @@
 	if (ignore_toolbar_toggle) return;
 
 	gtk_toolbar_set_style(GTK_TOOLBAR(app->toolbar), GTK_TOOLBAR_BOTH);
-	prefs.toolbar_icon_style = GTK_TOOLBAR_BOTH;
+	toolbar_prefs.icon_style = GTK_TOOLBAR_BOTH;
 }
 
 
@@ -496,7 +496,7 @@
 	if (ignore_toolbar_toggle) return;
 
 	gtk_toolbar_set_style(GTK_TOOLBAR(app->toolbar), GTK_TOOLBAR_ICONS);
-	prefs.toolbar_icon_style = GTK_TOOLBAR_ICONS;
+	toolbar_prefs.icon_style = GTK_TOOLBAR_ICONS;
 }
 
 
@@ -507,7 +507,7 @@
 	if (ignore_toolbar_toggle) return;
 
 	gtk_toolbar_set_style(GTK_TOOLBAR(app->toolbar), GTK_TOOLBAR_TEXT);
-	prefs.toolbar_icon_style = GTK_TOOLBAR_TEXT;
+	toolbar_prefs.icon_style = GTK_TOOLBAR_TEXT;
 }
 
 
@@ -623,7 +623,7 @@
 {
 	if (ignore_toolbar_toggle) return;
 
-	prefs.toolbar_icon_size = GTK_ICON_SIZE_LARGE_TOOLBAR;
+	toolbar_prefs.icon_size = GTK_ICON_SIZE_LARGE_TOOLBAR;
 	ui_update_toolbar_icons(GTK_ICON_SIZE_LARGE_TOOLBAR);
 }
 
@@ -634,7 +634,7 @@
 {
 	if (ignore_toolbar_toggle) return;
 
-	prefs.toolbar_icon_size = GTK_ICON_SIZE_SMALL_TOOLBAR;
+	toolbar_prefs.icon_size = GTK_ICON_SIZE_SMALL_TOOLBAR;
 	ui_update_toolbar_icons(GTK_ICON_SIZE_SMALL_TOOLBAR);
 }
 
@@ -829,7 +829,7 @@
 
 		ignore_toolbar_toggle = TRUE;
 
-		switch (prefs.toolbar_icon_style)
+		switch (toolbar_prefs.icon_style)
 		{
 			case 0: w = lookup_widget(ui_widgets.toolbar_menu, "images_only2"); break;
 			case 1: w = lookup_widget(ui_widgets.toolbar_menu, "text_only2"); break;
@@ -837,7 +837,7 @@
 		}
 		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w), TRUE);
 
-		switch (prefs.toolbar_icon_size)
+		switch (toolbar_prefs.icon_size)
 		{
 			case GTK_ICON_SIZE_LARGE_TOOLBAR:
 					w = lookup_widget(ui_widgets.toolbar_menu, "large_icons1"); break;
@@ -920,8 +920,8 @@
 {
 	if (app->ignore_callback) return;
 
-	prefs.toolbar_visible = (prefs.toolbar_visible) ? FALSE : TRUE;;
-	ui_widget_show_hide(GTK_WIDGET(app->toolbar), prefs.toolbar_visible);
+	toolbar_prefs.visible = (toolbar_prefs.visible) ? FALSE : TRUE;;
+	ui_widget_show_hide(GTK_WIDGET(app->toolbar), toolbar_prefs.visible);
 }
 
 
@@ -1357,7 +1357,7 @@
 	sci_insert_text(doc_list[idx].sci, 0, text);
 	/* sets the cursor to the right position to type the changelog text,
 	 * the template has 21 chars + length of name and email */
-	sci_goto_pos(doc_list[idx].sci, 21 + strlen(prefs.template_developer) + strlen(prefs.template_mail), TRUE);
+	sci_goto_pos(doc_list[idx].sci, 21 + strlen(template_prefs.developer) + strlen(template_prefs.mail), TRUE);
 
 	g_free(text);
 }
@@ -1600,10 +1600,10 @@
 
 	ui_prefs.sidebar_visible = ! ui_prefs.sidebar_visible;
 
-	if ((! prefs.sidebar_openfiles_visible && ! prefs.sidebar_symbol_visible))
+	if ((! interface_prefs.sidebar_openfiles_visible && ! interface_prefs.sidebar_symbol_visible))
 	{
-		prefs.sidebar_openfiles_visible = TRUE;
-		prefs.sidebar_symbol_visible = TRUE;
+		interface_prefs.sidebar_openfiles_visible = TRUE;
+		interface_prefs.sidebar_symbol_visible = TRUE;
 	}
 
 	ui_sidebar_show_hide();
@@ -1940,7 +1940,7 @@
 	}
 	else
 	{
-		command = g_strdup(prefs.context_action_cmd);
+		command = g_strdup(tool_prefs.context_action_cmd);
 	}
 
 	/* substitute the wildcard %s and run the command if it is non empty */
@@ -1974,7 +1974,7 @@
 	if (hide_all == -1)
 	{
 		if (! gtk_check_menu_item_get_active(msgw) &&
-			! prefs.show_notebook_tabs &&
+			! interface_prefs.show_notebook_tabs &&
 			! gtk_check_menu_item_get_active(toolbari))
 		{
 			hide_all = TRUE;
@@ -1990,8 +1990,8 @@
 		if (gtk_check_menu_item_get_active(msgw))
 			gtk_check_menu_item_set_active(msgw, ! gtk_check_menu_item_get_active(msgw));
 
-		prefs.show_notebook_tabs = FALSE;
-		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(app->notebook), prefs.show_notebook_tabs);
+		interface_prefs.show_notebook_tabs = FALSE;
+		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(app->notebook), interface_prefs.show_notebook_tabs);
 
 		ui_statusbar_showhide(FALSE);
 
@@ -2004,8 +2004,8 @@
 		if (! gtk_check_menu_item_get_active(msgw))
 			gtk_check_menu_item_set_active(msgw, ! gtk_check_menu_item_get_active(msgw));
 
-		prefs.show_notebook_tabs = TRUE;
-		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(app->notebook), prefs.show_notebook_tabs);
+		interface_prefs.show_notebook_tabs = TRUE;
+		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(app->notebook), interface_prefs.show_notebook_tabs);
 
 		ui_statusbar_showhide(TRUE);
 

Modified: trunk/src/dialogs.c
===================================================================
--- trunk/src/dialogs.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/dialogs.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -43,7 +43,6 @@
 
 #include "dialogs.h"
 
-#include "prefs.h"
 #include "callbacks.h"
 #include "document.h"
 #include "filetypes.h"
@@ -789,7 +788,7 @@
 					"clicked", G_CALLBACK(on_font_apply_button_clicked), NULL);
 
 		gtk_font_selection_dialog_set_font_name(
-			GTK_FONT_SELECTION_DIALOG(ui_widgets.open_fontsel), prefs.editor_font);
+			GTK_FONT_SELECTION_DIALOG(ui_widgets.open_fontsel), interface_prefs.editor_font);
 		gtk_window_set_transient_for(GTK_WINDOW(ui_widgets.open_fontsel), GTK_WINDOW(app->window));
 	}
 	/* We make sure the dialog is visible. */

Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/document.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -51,7 +51,6 @@
 #include <glib/gstdio.h>
 
 #include "document.h"
-#include "prefs.h"
 #include "filetypes.h"
 #include "support.h"
 #include "sciwrappers.h"
@@ -73,8 +72,11 @@
 #include "highlighting.h"
 #include "navqueue.h"
 #include "win32.h"
+#include "search.h"
 
 
+GeanyFilePrefs file_prefs;
+
 /* dynamic array of document elements to hold all information of the notebook tabs */
 GArray *doc_array;
 
@@ -457,7 +459,7 @@
 
 	document_apply_update_prefs(new_idx);
 
-	pfd = pango_font_description_from_string(prefs.editor_font);
+	pfd = pango_font_description_from_string(interface_prefs.editor_font);
 	fname = g_strdup_printf("!%s", pango_font_description_get_family(pfd));
 	editor_set_font(new_idx, fname, pango_font_description_get_size(pfd) / PANGO_SCALE);
 	pango_font_description_free(pfd);
@@ -583,11 +585,11 @@
 	else
 		sci_clear_all(doc_list[idx].sci);
 
-	sci_set_eol_mode(doc_list[idx].sci, prefs.default_eol_character);
+	sci_set_eol_mode(doc_list[idx].sci, file_prefs.default_eol_character);
 	/* convert the eol chars in the template text in case they are different from
-	 * from prefs.default_eol */
+	 * from file_prefs.default_eol */
 	if (text != NULL)
-		sci_convert_eols(doc_list[idx].sci, prefs.default_eol_character);
+		sci_convert_eols(doc_list[idx].sci, file_prefs.default_eol_character);
 
 	editor_set_use_tabs(idx, editor_prefs.use_tabs);
 	sci_set_undo_collection(doc_list[idx].sci, TRUE);
@@ -596,7 +598,7 @@
 	doc_list[idx].mtime = time(NULL);
 	doc_list[idx].changed = FALSE;
 
-	doc_list[idx].encoding = g_strdup(encodings[prefs.default_new_encoding].charset);
+	doc_list[idx].encoding = g_strdup(encodings[file_prefs.default_new_encoding].charset);
 	/* store the opened encoding for undo/redo */
 	store_saved_encoding(idx);
 
@@ -1011,8 +1013,8 @@
 	}
 
 	/* if default encoding for opening files is set, use it if no forced encoding is set */
-	if (prefs.default_open_encoding >= 0 && forced_enc == NULL)
-		forced_enc = encodings[prefs.default_open_encoding].charset;
+	if (file_prefs.default_open_encoding >= 0 && forced_enc == NULL)
+		forced_enc = encodings[file_prefs.default_open_encoding].charset;
 
 	if (! load_text_file(locale_filename, utf8_filename, &filedata, forced_enc))
 	{
@@ -1413,11 +1415,11 @@
 	}
 
 	/* replaces tabs by spaces */
-	if (prefs.replace_tabs) editor_replace_tabs(idx);
+	if (file_prefs.replace_tabs) editor_replace_tabs(idx);
 	/* strip trailing spaces */
-	if (prefs.strip_trailing_spaces) editor_strip_trailing_spaces(idx);
+	if (file_prefs.strip_trailing_spaces) editor_strip_trailing_spaces(idx);
 	/* ensure the file has a newline at the end */
-	if (prefs.final_new_line) editor_ensure_final_newline(idx);
+	if (file_prefs.final_new_line) editor_ensure_final_newline(idx);
 
 	len = sci_get_length(doc_list[idx].sci) + 1;
 	if (doc_list[idx].has_bom && encodings_is_unicode_charset(doc_list[idx].encoding))
@@ -1616,7 +1618,7 @@
 		}
 
 		/* we searched only part of the document, so ask whether to wraparound. */
-		if (prefs.suppress_search_dialogs ||
+		if (search_prefs.suppress_dialogs ||
 			dialogs_show_question_full(parent, GTK_STOCK_FIND, GTK_STOCK_CANCEL,
 				_("Wrap search and find again?"), _("\"%s\" was not found."), text))
 		{

Modified: trunk/src/document.h
===================================================================
--- trunk/src/document.h	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/document.h	2008-05-16 12:08:39 UTC (rev 2591)
@@ -43,6 +43,24 @@
 #endif
 
 
+typedef struct GeanyFilePrefs
+{
+	gint			default_new_encoding;
+	gint			default_open_encoding;
+	gboolean		final_new_line;
+	gboolean		strip_trailing_spaces;
+	gboolean		replace_tabs;
+	gboolean		tab_order_ltr;
+	gboolean		show_tab_cross;
+	guint			mru_length;
+	gint			default_eol_character;
+	gint			disk_check_timeout;
+}
+GeanyFilePrefs;
+
+extern GeanyFilePrefs file_prefs;
+
+
 typedef struct FileEncoding
 {
 	gchar 			*encoding;

Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/editor.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -50,7 +50,7 @@
 static gchar current_word[GEANY_MAX_WORD_LENGTH];
 
 /* Initialised in keyfile.c. */
-EditorPrefs editor_prefs;
+GeanyEditorPrefs editor_prefs;
 
 EditorInfo editor_info = {current_word, -1};
 

Modified: trunk/src/editor.h
===================================================================
--- trunk/src/editor.h	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/editor.h	2008-05-16 12:08:39 UTC (rev 2591)
@@ -56,7 +56,7 @@
 /* These are the default prefs when creating a new editor window.
  * Some of these can be overridden per document.
  * Remember to increment abi_version in plugindata.h when changing items. */
-typedef struct EditorPrefs
+typedef struct GeanyEditorPrefs
 {
 	/* display */
 	gboolean	show_white_space;
@@ -94,9 +94,9 @@
 	gboolean	detect_tab_mode;
 	gint		line_break_column;
 	gboolean	auto_continue_multiline;
-} EditorPrefs;
+} GeanyEditorPrefs;
 
-extern EditorPrefs editor_prefs;
+extern GeanyEditorPrefs editor_prefs;
 
 
 typedef struct

Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/keybindings.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -751,7 +751,7 @@
 		if (keyval == GDK_0)
 			page = npages - 1;
 		/* invert the order if tabs are added on the other side */
-		if (swap_alt_tab_order && ! prefs.tab_order_ltr)
+		if (swap_alt_tab_order && ! file_prefs.tab_order_ltr)
 			page = (npages - 1) - page;
 
 		gtk_notebook_set_current_page(GTK_NOTEBOOK(app->notebook), page);
@@ -1174,7 +1174,7 @@
 
 static void cb_func_switch_search_bar(G_GNUC_UNUSED guint key_id)
 {
-	if (prefs.toolbar_visible && prefs.toolbar_show_search)
+	if (toolbar_prefs.visible && toolbar_prefs.show_search)
 		gtk_widget_grab_focus(lookup_widget(app->window, "entry1"));
 }
 
@@ -1239,10 +1239,10 @@
 			break;
 		}
 		case GEANY_KEYS_NOTEBOOK_MOVETABFIRST:
-			gtk_notebook_reorder_child(nb, sci, (prefs.tab_order_ltr) ? 0 : -1);
+			gtk_notebook_reorder_child(nb, sci, (file_prefs.tab_order_ltr) ? 0 : -1);
 			break;
 		case GEANY_KEYS_NOTEBOOK_MOVETABLAST:
-			gtk_notebook_reorder_child(nb, sci, (prefs.tab_order_ltr) ? -1 : 0);
+			gtk_notebook_reorder_child(nb, sci, (file_prefs.tab_order_ltr) ? -1 : 0);
 			break;
 	}
 	return;

Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/keyfile.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -58,6 +58,7 @@
 #include "editor.h"
 #include "printing.h"
 #include "plugins.h"
+#include "templates.h"
 
 
 /* some default settings which are used at the very first start of Geany to fill
@@ -90,10 +91,10 @@
 
 static void save_recent_files(GKeyFile *config)
 {
-	gchar **recent_files = g_new0(gchar*, prefs.mru_length + 1);
+	gchar **recent_files = g_new0(gchar*, file_prefs.mru_length + 1);
 	guint i;
 
-	for (i = 0; i < prefs.mru_length; i++)
+	for (i = 0; i < file_prefs.mru_length; i++)
 	{
 		if (! g_queue_is_empty(ui_prefs.recent_queue))
 		{
@@ -108,9 +109,9 @@
 		}
 	}
 	/* There is a bug in GTK 2.6 g_key_file_set_string_list, we must NULL terminate. */
-	recent_files[prefs.mru_length] = NULL;
+	recent_files[file_prefs.mru_length] = NULL;
 	g_key_file_set_string_list(config, "files", "recent_files",
-				(const gchar**)recent_files, prefs.mru_length);
+				(const gchar**)recent_files, file_prefs.mru_length);
 	g_strfreev(recent_files);
 }
 
@@ -191,27 +192,27 @@
 	g_key_file_set_boolean(config, PACKAGE, "pref_main_project_session", project_prefs.project_session);
 	g_key_file_set_boolean(config, PACKAGE, "pref_main_save_winpos", prefs.save_winpos);
 	g_key_file_set_boolean(config, PACKAGE, "pref_main_confirm_exit", prefs.confirm_exit);
-	g_key_file_set_boolean(config, PACKAGE, "pref_main_suppress_search_dialogs", prefs.suppress_search_dialogs);
-	g_key_file_set_boolean(config, PACKAGE, "pref_main_search_use_current_word", prefs.search_use_current_word);
+	g_key_file_set_boolean(config, PACKAGE, "pref_main_suppress_search_dialogs", search_prefs.suppress_dialogs);
+	g_key_file_set_boolean(config, PACKAGE, "pref_main_search_use_current_word", search_prefs.use_current_word);
 	g_key_file_set_boolean(config, PACKAGE, "pref_main_suppress_status_messages", prefs.suppress_status_messages);
-	g_key_file_set_boolean(config, PACKAGE, "switch_msgwin_pages", prefs.switch_msgwin_pages);
+	g_key_file_set_boolean(config, PACKAGE, "switch_msgwin_pages", prefs.switch_to_status);
 	g_key_file_set_boolean(config, PACKAGE, "beep_on_errors", prefs.beep_on_errors);
 	g_key_file_set_boolean(config, PACKAGE, "auto_focus", prefs.auto_focus);
 	g_key_file_set_string(config, PACKAGE, "default_open_path", prefs.default_open_path);
 
 	/* interface */
-	g_key_file_set_boolean(config, PACKAGE, "sidebar_symbol_visible", prefs.sidebar_symbol_visible);
-	g_key_file_set_boolean(config, PACKAGE, "sidebar_openfiles_visible", prefs.sidebar_openfiles_visible);
-	g_key_file_set_boolean(config, PACKAGE, "sidebar_openfiles_fullpath", prefs.sidebar_openfiles_fullpath);
-	g_key_file_set_string(config, PACKAGE, "editor_font", prefs.editor_font);
-	g_key_file_set_string(config, PACKAGE, "tagbar_font", prefs.tagbar_font);
-	g_key_file_set_string(config, PACKAGE, "msgwin_font", prefs.msgwin_font);
-	g_key_file_set_boolean(config, PACKAGE, "show_notebook_tabs", prefs.show_notebook_tabs);
-	g_key_file_set_boolean(config, PACKAGE, "show_tab_cross", prefs.show_tab_cross);
-	g_key_file_set_boolean(config, PACKAGE, "tab_order_ltr", prefs.tab_order_ltr);
-	g_key_file_set_integer(config, PACKAGE, "tab_pos_editor", prefs.tab_pos_editor);
-	g_key_file_set_integer(config, PACKAGE, "tab_pos_msgwin", prefs.tab_pos_msgwin);
-	g_key_file_set_integer(config, PACKAGE, "tab_pos_sidebar", prefs.tab_pos_sidebar);
+	g_key_file_set_boolean(config, PACKAGE, "sidebar_symbol_visible", interface_prefs.sidebar_symbol_visible);
+	g_key_file_set_boolean(config, PACKAGE, "sidebar_openfiles_visible", interface_prefs.sidebar_openfiles_visible);
+	g_key_file_set_boolean(config, PACKAGE, "sidebar_openfiles_fullpath", interface_prefs.sidebar_openfiles_fullpath);
+	g_key_file_set_string(config, PACKAGE, "editor_font", interface_prefs.editor_font);
+	g_key_file_set_string(config, PACKAGE, "tagbar_font", interface_prefs.tagbar_font);
+	g_key_file_set_string(config, PACKAGE, "msgwin_font", interface_prefs.msgwin_font);
+	g_key_file_set_boolean(config, PACKAGE, "show_notebook_tabs", interface_prefs.show_notebook_tabs);
+	g_key_file_set_boolean(config, PACKAGE, "show_tab_cross", file_prefs.show_tab_cross);
+	g_key_file_set_boolean(config, PACKAGE, "tab_order_ltr", file_prefs.tab_order_ltr);
+	g_key_file_set_integer(config, PACKAGE, "tab_pos_editor", interface_prefs.tab_pos_editor);
+	g_key_file_set_integer(config, PACKAGE, "tab_pos_msgwin", interface_prefs.tab_pos_msgwin);
+	g_key_file_set_integer(config, PACKAGE, "tab_pos_sidebar", interface_prefs.tab_pos_sidebar);
 
 	/* display */
 	g_key_file_set_boolean(config, PACKAGE, "show_indent_guide", editor_prefs.show_indent_guide);
@@ -244,46 +245,46 @@
 	g_key_file_set_boolean(config, PACKAGE, "auto_continue_multiline", editor_prefs.auto_continue_multiline);
 
 	/* files */
-	g_key_file_set_string(config, PACKAGE, "pref_editor_default_new_encoding", encodings[prefs.default_new_encoding].charset);
-	if (prefs.default_open_encoding == -1)
+	g_key_file_set_string(config, PACKAGE, "pref_editor_default_new_encoding", encodings[file_prefs.default_new_encoding].charset);
+	if (file_prefs.default_open_encoding == -1)
 		g_key_file_set_string(config, PACKAGE, "pref_editor_default_open_encoding", "none");
 	else
-		g_key_file_set_string(config, PACKAGE, "pref_editor_default_open_encoding", encodings[prefs.default_open_encoding].charset);
-	g_key_file_set_integer(config, PACKAGE, "default_eol_character", prefs.default_eol_character);
-	g_key_file_set_boolean(config, PACKAGE, "pref_editor_new_line", prefs.final_new_line);
-	g_key_file_set_boolean(config, PACKAGE, "pref_editor_replace_tabs", prefs.replace_tabs);
-	g_key_file_set_boolean(config, PACKAGE, "pref_editor_trail_space", prefs.strip_trailing_spaces);
-	g_key_file_set_integer(config, PACKAGE, "mru_length", prefs.mru_length);
+		g_key_file_set_string(config, PACKAGE, "pref_editor_default_open_encoding", encodings[file_prefs.default_open_encoding].charset);
+	g_key_file_set_integer(config, PACKAGE, "default_eol_character", file_prefs.default_eol_character);
+	g_key_file_set_boolean(config, PACKAGE, "pref_editor_new_line", file_prefs.final_new_line);
+	g_key_file_set_boolean(config, PACKAGE, "pref_editor_replace_tabs", file_prefs.replace_tabs);
+	g_key_file_set_boolean(config, PACKAGE, "pref_editor_trail_space", file_prefs.strip_trailing_spaces);
+	g_key_file_set_integer(config, PACKAGE, "mru_length", file_prefs.mru_length);
 	g_key_file_set_integer(config, PACKAGE, "disk_check_timeout", file_prefs.disk_check_timeout);
 
 	/* toolbar */
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show", prefs.toolbar_visible);
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_search", prefs.toolbar_show_search);
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_goto", prefs.toolbar_show_goto);
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_zoom", prefs.toolbar_show_zoom);
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_indent", prefs.toolbar_show_indent);
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_undo", prefs.toolbar_show_undo);
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_navigation", prefs.toolbar_show_navigation);
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_compile", prefs.toolbar_show_compile);
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_colour", prefs.toolbar_show_colour);
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_fileops", prefs.toolbar_show_fileops);
-	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_quit", prefs.toolbar_show_quit);
-	g_key_file_set_integer(config, PACKAGE, "pref_toolbar_icon_style", prefs.toolbar_icon_style);
-	g_key_file_set_integer(config, PACKAGE, "pref_toolbar_icon_size", prefs.toolbar_icon_size);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show", toolbar_prefs.visible);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_search", toolbar_prefs.show_search);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_goto", toolbar_prefs.show_goto);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_zoom", toolbar_prefs.show_zoom);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_indent", toolbar_prefs.show_indent);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_undo", toolbar_prefs.show_undo);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_navigation", toolbar_prefs.show_navigation);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_compile", toolbar_prefs.show_compile);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_colour", toolbar_prefs.show_colour);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_fileops", toolbar_prefs.show_fileops);
+	g_key_file_set_boolean(config, PACKAGE, "pref_toolbar_show_quit", toolbar_prefs.show_quit);
+	g_key_file_set_integer(config, PACKAGE, "pref_toolbar_icon_style", toolbar_prefs.icon_style);
+	g_key_file_set_integer(config, PACKAGE, "pref_toolbar_icon_size", toolbar_prefs.icon_size);
 
 	/* templates */
-	g_key_file_set_string(config, PACKAGE, "pref_template_developer", prefs.template_developer);
-	g_key_file_set_string(config, PACKAGE, "pref_template_company", prefs.template_company);
-	g_key_file_set_string(config, PACKAGE, "pref_template_mail", prefs.template_mail);
-	g_key_file_set_string(config, PACKAGE, "pref_template_initial", prefs.template_initial);
-	g_key_file_set_string(config, PACKAGE, "pref_template_version", prefs.template_version);
+	g_key_file_set_string(config, PACKAGE, "pref_template_developer", template_prefs.developer);
+	g_key_file_set_string(config, PACKAGE, "pref_template_company", template_prefs.company);
+	g_key_file_set_string(config, PACKAGE, "pref_template_mail", template_prefs.mail);
+	g_key_file_set_string(config, PACKAGE, "pref_template_initial", template_prefs.initials);
+	g_key_file_set_string(config, PACKAGE, "pref_template_version", template_prefs.version);
 
 	/* tools settings */
-	g_key_file_set_string(config, "tools", "make_cmd", prefs.tools_make_cmd ? prefs.tools_make_cmd : "");
-	g_key_file_set_string(config, "tools", "term_cmd", prefs.tools_term_cmd ? prefs.tools_term_cmd : "");
-	g_key_file_set_string(config, "tools", "browser_cmd", prefs.tools_browser_cmd ? prefs.tools_browser_cmd : "");
-	g_key_file_set_string(config, "tools", "grep_cmd", prefs.tools_grep_cmd ? prefs.tools_grep_cmd : "");
-	g_key_file_set_string(config, PACKAGE, "context_action_cmd", prefs.context_action_cmd);
+	g_key_file_set_string(config, "tools", "make_cmd", tool_prefs.make_cmd ? tool_prefs.make_cmd : "");
+	g_key_file_set_string(config, "tools", "term_cmd", tool_prefs.term_cmd ? tool_prefs.term_cmd : "");
+	g_key_file_set_string(config, "tools", "browser_cmd", tool_prefs.browser_cmd ? tool_prefs.browser_cmd : "");
+	g_key_file_set_string(config, "tools", "grep_cmd", tool_prefs.grep_cmd ? tool_prefs.grep_cmd : "");
+	g_key_file_set_string(config, PACKAGE, "context_action_cmd", tool_prefs.context_action_cmd);
 
 	/* printing */
 	g_key_file_set_string(config, "printing", "print_cmd", printing_prefs.external_print_cmd ? printing_prefs.external_print_cmd : "");
@@ -329,7 +330,7 @@
 static void save_ui_prefs(GKeyFile *config)
 {
 	g_key_file_set_boolean(config, PACKAGE, "sidebar_visible", ui_prefs.sidebar_visible);
-	g_key_file_set_boolean(config, PACKAGE, "statusbar_visible", prefs.statusbar_visible);
+	g_key_file_set_boolean(config, PACKAGE, "statusbar_visible", interface_prefs.statusbar_visible);
 	g_key_file_set_boolean(config, PACKAGE, "msgwindow_visible", ui_prefs.msgwindow_visible);
 	g_key_file_set_boolean(config, PACKAGE, "fullscreen", ui_prefs.fullscreen);
 
@@ -391,7 +392,7 @@
 	write_hidden_pref_boolean(config, PACKAGE, "complete_snippets_whilst_editing", editor_prefs.complete_snippets_whilst_editing);
 	write_hidden_pref_boolean(config, PACKAGE, "scroll_stop_at_last_line", editor_prefs.scroll_stop_at_last_line);
 #if GTK_CHECK_VERSION(2, 12, 0)
-	write_hidden_pref_boolean(config, PACKAGE, "show_symbol_list_expanders", prefs.show_symbol_list_expanders);
+	write_hidden_pref_boolean(config, PACKAGE, "show_symbol_list_expanders", interface_prefs.show_symbol_list_expanders);
 #endif
 }
 
@@ -443,7 +444,7 @@
 	recent_files = g_key_file_get_string_list(config, "files", "recent_files", &len, NULL);
 	if (recent_files != NULL)
 	{
-		for (i = 0; (i < len) && (i < prefs.mru_length); i++)
+		for (i = 0; (i < len) && (i < file_prefs.mru_length); i++)
 		{
 			gchar *filename = g_strdup(recent_files[i]);
 			g_queue_push_tail(ui_prefs.recent_queue, filename);
@@ -489,33 +490,33 @@
 
 	/* general */
 	prefs.confirm_exit = utils_get_setting_boolean(config, PACKAGE, "pref_main_confirm_exit", FALSE);
-	prefs.suppress_search_dialogs = utils_get_setting_boolean(config, PACKAGE, "pref_main_suppress_search_dialogs", FALSE);
-	prefs.search_use_current_word = utils_get_setting_boolean(config, PACKAGE, "pref_main_search_use_current_word", TRUE);
+	search_prefs.suppress_dialogs = utils_get_setting_boolean(config, PACKAGE, "pref_main_suppress_search_dialogs", FALSE);
+	search_prefs.use_current_word = utils_get_setting_boolean(config, PACKAGE, "pref_main_search_use_current_word", TRUE);
 	prefs.suppress_status_messages = utils_get_setting_boolean(config, PACKAGE, "pref_main_suppress_status_messages", FALSE);
 	prefs.load_session = utils_get_setting_boolean(config, PACKAGE, "pref_main_load_session", TRUE);
 	project_prefs.project_session = utils_get_setting_boolean(config, PACKAGE, "pref_main_project_session", TRUE);
 	prefs.save_winpos = utils_get_setting_boolean(config, PACKAGE, "pref_main_save_winpos", TRUE);
 	prefs.beep_on_errors = utils_get_setting_boolean(config, PACKAGE, "beep_on_errors", TRUE);
-	prefs.switch_msgwin_pages = utils_get_setting_boolean(config, PACKAGE, "switch_msgwin_pages", FALSE);
+	prefs.switch_to_status = utils_get_setting_boolean(config, PACKAGE, "switch_msgwin_pages", FALSE);
 	prefs.auto_focus = utils_get_setting_boolean(config, PACKAGE, "auto_focus", FALSE);
 	prefs.default_open_path = utils_get_setting_string(config, PACKAGE, "default_open_path", "");
 
 	/* interface */
-	prefs.tab_pos_editor = utils_get_setting_integer(config, PACKAGE, "tab_pos_editor", GTK_POS_TOP);
-	prefs.tab_pos_msgwin = utils_get_setting_integer(config, PACKAGE, "tab_pos_msgwin",GTK_POS_LEFT);
-	prefs.tab_pos_sidebar = utils_get_setting_integer(config, PACKAGE, "tab_pos_sidebar", GTK_POS_TOP);
-	prefs.sidebar_symbol_visible = utils_get_setting_boolean(config, PACKAGE, "sidebar_symbol_visible", TRUE);
-	prefs.sidebar_openfiles_visible = utils_get_setting_boolean(config, PACKAGE, "sidebar_openfiles_visible", TRUE);
-	prefs.sidebar_openfiles_fullpath = utils_get_setting_boolean(config, PACKAGE, "sidebar_openfiles_fullpath", FALSE);
-	prefs.statusbar_visible = utils_get_setting_boolean(config, PACKAGE, "statusbar_visible", TRUE);
-	prefs.tab_order_ltr = utils_get_setting_boolean(config, PACKAGE, "tab_order_ltr", TRUE);
-	prefs.show_notebook_tabs = utils_get_setting_boolean(config, PACKAGE, "show_notebook_tabs", TRUE);
-	prefs.show_tab_cross = utils_get_setting_boolean(config, PACKAGE, "show_tab_cross", TRUE);
-	prefs.editor_font = utils_get_setting_string(config, PACKAGE, "editor_font", GEANY_DEFAULT_FONT_EDITOR);
-	prefs.tagbar_font = utils_get_setting_string(config, PACKAGE, "tagbar_font", GEANY_DEFAULT_FONT_SYMBOL_LIST);
-	prefs.msgwin_font = utils_get_setting_string(config, PACKAGE, "msgwin_font", GEANY_DEFAULT_FONT_MSG_WINDOW);
+	interface_prefs.tab_pos_editor = utils_get_setting_integer(config, PACKAGE, "tab_pos_editor", GTK_POS_TOP);
+	interface_prefs.tab_pos_msgwin = utils_get_setting_integer(config, PACKAGE, "tab_pos_msgwin",GTK_POS_LEFT);
+	interface_prefs.tab_pos_sidebar = utils_get_setting_integer(config, PACKAGE, "tab_pos_sidebar", GTK_POS_TOP);
+	interface_prefs.sidebar_symbol_visible = utils_get_setting_boolean(config, PACKAGE, "sidebar_symbol_visible", TRUE);
+	interface_prefs.sidebar_openfiles_visible = utils_get_setting_boolean(config, PACKAGE, "sidebar_openfiles_visible", TRUE);
+	interface_prefs.sidebar_openfiles_fullpath = utils_get_setting_boolean(config, PACKAGE, "sidebar_openfiles_fullpath", FALSE);
+	interface_prefs.statusbar_visible = utils_get_setting_boolean(config, PACKAGE, "statusbar_visible", TRUE);
+	file_prefs.tab_order_ltr = utils_get_setting_boolean(config, PACKAGE, "tab_order_ltr", TRUE);
+	interface_prefs.show_notebook_tabs = utils_get_setting_boolean(config, PACKAGE, "show_notebook_tabs", TRUE);
+	file_prefs.show_tab_cross = utils_get_setting_boolean(config, PACKAGE, "show_tab_cross", TRUE);
+	interface_prefs.editor_font = utils_get_setting_string(config, PACKAGE, "editor_font", GEANY_DEFAULT_FONT_EDITOR);
+	interface_prefs.tagbar_font = utils_get_setting_string(config, PACKAGE, "tagbar_font", GEANY_DEFAULT_FONT_SYMBOL_LIST);
+	interface_prefs.msgwin_font = utils_get_setting_string(config, PACKAGE, "msgwin_font", GEANY_DEFAULT_FONT_MSG_WINDOW);
 #if GTK_CHECK_VERSION(2, 12, 0)
-	prefs.show_symbol_list_expanders = utils_get_setting_boolean(config, PACKAGE, "show_symbol_list_expanders", TRUE);
+	interface_prefs.show_symbol_list_expanders = utils_get_setting_boolean(config, PACKAGE, "show_symbol_list_expanders", TRUE);
 #endif
 
 	/* display, editor */
@@ -561,9 +562,9 @@
 	{
 		const GeanyEncoding *enc = encodings_get_from_charset(tmp_string);
 		if (enc != NULL)
-			prefs.default_new_encoding = enc->idx;
+			file_prefs.default_new_encoding = enc->idx;
 		else
-			prefs.default_new_encoding = GEANY_ENCODING_UTF_8;
+			file_prefs.default_new_encoding = GEANY_ENCODING_UTF_8;
 
 		g_free(tmp_string);
 	}
@@ -573,39 +574,39 @@
 	{
 		const GeanyEncoding *enc = encodings_get_from_charset(tmp_string);
 		if (enc != NULL)
-			prefs.default_open_encoding = enc->idx;
+			file_prefs.default_open_encoding = enc->idx;
 		else
-			prefs.default_open_encoding = -1;
+			file_prefs.default_open_encoding = -1;
 
 		g_free(tmp_string);
 	}
-	prefs.default_eol_character = utils_get_setting_integer(config, PACKAGE, "default_eol_character", GEANY_DEFAULT_EOL_CHARACTER);
-	prefs.replace_tabs = utils_get_setting_boolean(config, PACKAGE, "pref_editor_replace_tabs", FALSE);
-	prefs.final_new_line = utils_get_setting_boolean(config, PACKAGE, "pref_editor_new_line", TRUE);
-	prefs.strip_trailing_spaces = utils_get_setting_boolean(config, PACKAGE, "pref_editor_trail_space", FALSE);
-	prefs.mru_length = utils_get_setting_integer(config, PACKAGE, "mru_length", GEANY_DEFAULT_MRU_LENGTH);
+	file_prefs.default_eol_character = utils_get_setting_integer(config, PACKAGE, "default_eol_character", GEANY_DEFAULT_EOL_CHARACTER);
+	file_prefs.replace_tabs = utils_get_setting_boolean(config, PACKAGE, "pref_editor_replace_tabs", FALSE);
+	file_prefs.final_new_line = utils_get_setting_boolean(config, PACKAGE, "pref_editor_new_line", TRUE);
+	file_prefs.strip_trailing_spaces = utils_get_setting_boolean(config, PACKAGE, "pref_editor_trail_space", FALSE);
+	file_prefs.mru_length = utils_get_setting_integer(config, PACKAGE, "mru_length", GEANY_DEFAULT_MRU_LENGTH);
 	file_prefs.disk_check_timeout = utils_get_setting_integer(config, PACKAGE,
 		"disk_check_timeout", GEANY_DISK_CHECK_TIMEOUT);
 
 	/* toolbar */
-	prefs.toolbar_visible = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show", TRUE);
-	prefs.toolbar_show_search = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_search", TRUE);
-	prefs.toolbar_show_goto = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_goto", TRUE);
-	prefs.toolbar_show_zoom = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_zoom", FALSE);
-	prefs.toolbar_show_indent = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_indent", FALSE);
-	prefs.toolbar_show_compile = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_compile", TRUE);
-	prefs.toolbar_show_undo = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_undo", FALSE);
-	prefs.toolbar_show_navigation = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_navigation", TRUE);
-	prefs.toolbar_show_colour = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_colour", TRUE);
-	prefs.toolbar_show_fileops = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_fileops", TRUE);
-	prefs.toolbar_show_quit = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_quit", TRUE);
+	toolbar_prefs.visible = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show", TRUE);
+	toolbar_prefs.show_search = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_search", TRUE);
+	toolbar_prefs.show_goto = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_goto", TRUE);
+	toolbar_prefs.show_zoom = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_zoom", FALSE);
+	toolbar_prefs.show_indent = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_indent", FALSE);
+	toolbar_prefs.show_compile = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_compile", TRUE);
+	toolbar_prefs.show_undo = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_undo", FALSE);
+	toolbar_prefs.show_navigation = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_navigation", TRUE);
+	toolbar_prefs.show_colour = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_colour", TRUE);
+	toolbar_prefs.show_fileops = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_fileops", TRUE);
+	toolbar_prefs.show_quit = utils_get_setting_boolean(config, PACKAGE, "pref_toolbar_show_quit", TRUE);
 	{
 		GtkIconSize tb_iconsize;
 		GtkToolbarStyle tb_style;
 		GEANY_GET_SETTING("gtk-toolbar-style", tb_style, GTK_TOOLBAR_ICONS);
 		GEANY_GET_SETTING("gtk-toolbar-icon-size", tb_iconsize, GTK_ICON_SIZE_LARGE_TOOLBAR);
-		prefs.toolbar_icon_style = utils_get_setting_integer(config, PACKAGE, "pref_toolbar_icon_style", tb_style);
-		prefs.toolbar_icon_size = utils_get_setting_integer(config, PACKAGE, "pref_toolbar_icon_size", tb_iconsize);
+		toolbar_prefs.icon_style = utils_get_setting_integer(config, PACKAGE, "pref_toolbar_icon_style", tb_style);
+		toolbar_prefs.icon_size = utils_get_setting_integer(config, PACKAGE, "pref_toolbar_icon_size", tb_iconsize);
 	}
 
 	/* VTE */
@@ -647,27 +648,27 @@
 	}
 #endif
 	/* templates */
-	prefs.template_developer = utils_get_setting_string(config, PACKAGE, "pref_template_developer", g_get_real_name());
-	prefs.template_company = utils_get_setting_string(config, PACKAGE, "pref_template_company", "");
-	tmp_string = utils_get_initials(prefs.template_developer);
-	prefs.template_initial = utils_get_setting_string(config, PACKAGE, "pref_template_initial", tmp_string);
+	template_prefs.developer = utils_get_setting_string(config, PACKAGE, "pref_template_developer", g_get_real_name());
+	template_prefs.company = utils_get_setting_string(config, PACKAGE, "pref_template_company", "");
+	tmp_string = utils_get_initials(template_prefs.developer);
+	template_prefs.initials = utils_get_setting_string(config, PACKAGE, "pref_template_initial", tmp_string);
 	g_free(tmp_string);
 
-	prefs.template_version = utils_get_setting_string(config, PACKAGE, "pref_template_version", "1.0");
+	template_prefs.version = utils_get_setting_string(config, PACKAGE, "pref_template_version", "1.0");
 
 	tmp_string2 = utils_get_hostname();
 	tmp_string = g_strdup_printf("%s@%s", g_get_user_name(), tmp_string2);
-	prefs.template_mail = utils_get_setting_string(config, PACKAGE, "pref_template_mail", tmp_string);
+	template_prefs.mail = utils_get_setting_string(config, PACKAGE, "pref_template_mail", tmp_string);
 	g_free(tmp_string);
 	g_free(tmp_string2);
 
 	/* tools */
-	prefs.tools_make_cmd = utils_get_setting_string(config, "tools", "make_cmd", GEANY_DEFAULT_TOOLS_MAKE);
-	prefs.tools_term_cmd = utils_get_setting_string(config, "tools", "term_cmd", GEANY_DEFAULT_TOOLS_TERMINAL);
-	prefs.tools_browser_cmd = utils_get_setting_string(config, "tools", "browser_cmd", GEANY_DEFAULT_TOOLS_BROWSER);
-	prefs.tools_grep_cmd = utils_get_setting_string(config, "tools", "grep_cmd", GEANY_DEFAULT_TOOLS_GREP);
+	tool_prefs.make_cmd = utils_get_setting_string(config, "tools", "make_cmd", GEANY_DEFAULT_TOOLS_MAKE);
+	tool_prefs.term_cmd = utils_get_setting_string(config, "tools", "term_cmd", GEANY_DEFAULT_TOOLS_TERMINAL);
+	tool_prefs.browser_cmd = utils_get_setting_string(config, "tools", "browser_cmd", GEANY_DEFAULT_TOOLS_BROWSER);
+	tool_prefs.grep_cmd = utils_get_setting_string(config, "tools", "grep_cmd", GEANY_DEFAULT_TOOLS_GREP);
 
-	prefs.context_action_cmd = utils_get_setting_string(config, PACKAGE, "context_action_cmd", "");
+	tool_prefs.context_action_cmd = utils_get_setting_string(config, PACKAGE, "context_action_cmd", "");
 
 	/* printing */
 	tmp_string2 = g_find_program_in_path(GEANY_DEFAULT_TOOLS_PRINTCMD);
@@ -875,7 +876,7 @@
 
 	document_delay_colourise();
 
-	i = prefs.tab_order_ltr ? 0 : (session_files->len - 1);
+	i = file_prefs.tab_order_ltr ? 0 : (session_files->len - 1);
 	while (TRUE)
 	{
 		gchar **tmp = g_ptr_array_index(session_files, i);
@@ -887,7 +888,7 @@
 		}
 		g_strfreev(tmp);
 
-		if (prefs.tab_order_ltr)
+		if (file_prefs.tab_order_ltr)
 		{
 			i++;
 			if (i >= (gint)session_files->len) break;

Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/main.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -169,7 +169,7 @@
 	ui_update_fold_items();
 
 	/* toolbar, message window and sidebar are by default visible, so don't change it if it is true */
-	if (! prefs.toolbar_visible)
+	if (! toolbar_prefs.visible)
 	{
 		app->ignore_callback = TRUE;
 		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(lookup_widget(app->window, "menu_show_toolbar1")), FALSE);
@@ -191,7 +191,7 @@
 	}
 	ui_sidebar_show_hide();
 	/* sets the icon style of the toolbar */
-	switch (prefs.toolbar_icon_style)
+	switch (toolbar_prefs.icon_style)
 	{
 		case GTK_TOOLBAR_BOTH:
 		{
@@ -212,15 +212,15 @@
 			break;
 		}
 	}
-	gtk_toolbar_set_style(GTK_TOOLBAR(app->toolbar), prefs.toolbar_icon_style);
+	gtk_toolbar_set_style(GTK_TOOLBAR(app->toolbar), toolbar_prefs.icon_style);
 
 	/* sets the icon size of the toolbar, use user preferences (.gtkrc) if not set */
-	if (prefs.toolbar_icon_size == GTK_ICON_SIZE_SMALL_TOOLBAR ||
-		prefs.toolbar_icon_size == GTK_ICON_SIZE_LARGE_TOOLBAR)
+	if (toolbar_prefs.icon_size == GTK_ICON_SIZE_SMALL_TOOLBAR ||
+		toolbar_prefs.icon_size == GTK_ICON_SIZE_LARGE_TOOLBAR)
 	{
-		gtk_toolbar_set_icon_size(GTK_TOOLBAR(app->toolbar), prefs.toolbar_icon_size);
+		gtk_toolbar_set_icon_size(GTK_TOOLBAR(app->toolbar), toolbar_prefs.icon_size);
 	}
-	ui_update_toolbar_icons(prefs.toolbar_icon_size);
+	ui_update_toolbar_icons(toolbar_prefs.icon_size);
 
 	/* line number and markers margin are by default enabled */
 	if (! editor_prefs.show_markers_margin)
@@ -244,7 +244,7 @@
 	}
 
 	/* hide statusbar if desired */
-	if (! prefs.statusbar_visible)
+	if (! interface_prefs.statusbar_visible)
 	{
 		gtk_widget_hide(app->statusbar);
 	}
@@ -262,14 +262,14 @@
 			lookup_widget(app->window, "menutoolbutton1")), ui_widgets.new_file_menu);
 
 	/* set the tab placements of the notebooks */
-	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(app->notebook), prefs.tab_pos_editor);
-	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(msgwindow.notebook), prefs.tab_pos_msgwin);
-	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(app->treeview_notebook), prefs.tab_pos_sidebar);
+	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(app->notebook), interface_prefs.tab_pos_editor);
+	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(msgwindow.notebook), interface_prefs.tab_pos_msgwin);
+	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(app->treeview_notebook), interface_prefs.tab_pos_sidebar);
 
 	ui_update_toolbar_items();
 
 	/* whether to show notebook tabs or not */
-	gtk_notebook_set_show_tabs(GTK_NOTEBOOK(app->notebook), prefs.show_notebook_tabs);
+	gtk_notebook_set_show_tabs(GTK_NOTEBOOK(app->notebook), interface_prefs.show_notebook_tabs);
 }
 
 
@@ -285,7 +285,7 @@
 	ui_widgets.prefs_dialog		= NULL;
 	tv.default_tag_tree	= NULL;
 	main_status.main_window_realized= FALSE;
-	prefs.tab_order_ltr		= FALSE;
+	file_prefs.tab_order_ltr		= FALSE;
 	main_status.quitting			= FALSE;
 	app->ignore_callback	= FALSE;
 	app->tm_workspace		= tm_get_workspace();
@@ -758,6 +758,13 @@
 	app = g_new0(GeanyApp, 1);
 	memset(&main_status, 0, sizeof(GeanyStatus));
 	memset(&prefs, 0, sizeof(GeanyPrefs));
+	memset(&interface_prefs, 0, sizeof(GeanyInterfacePrefs));
+	memset(&toolbar_prefs, 0, sizeof(GeanyToolbarPrefs));
+	memset(&editor_prefs, 0, sizeof(GeanyEditorPrefs));
+	memset(&file_prefs, 0, sizeof(GeanyFilePrefs));
+	memset(&search_prefs, 0, sizeof(GeanySearchPrefs));
+	memset(&tool_prefs, 0, sizeof(GeanyToolPrefs));
+	memset(&template_prefs, 0, sizeof(GeanyTemplatePrefs));
 	memset(&ui_prefs, 0, sizeof(UIPrefs));
 	memset(&ui_widgets, 0, sizeof(UIWidgets));
 
@@ -957,20 +964,20 @@
 	g_free(app->docdir);
 	g_free(prefs.default_open_path);
 	g_free(ui_prefs.custom_date_format);
-	g_free(prefs.editor_font);
-	g_free(prefs.tagbar_font);
-	g_free(prefs.msgwin_font);
+	g_free(interface_prefs.editor_font);
+	g_free(interface_prefs.tagbar_font);
+	g_free(interface_prefs.msgwin_font);
 	g_free(editor_prefs.long_line_color);
-	g_free(prefs.context_action_cmd);
-	g_free(prefs.template_developer);
-	g_free(prefs.template_company);
-	g_free(prefs.template_mail);
-	g_free(prefs.template_initial);
-	g_free(prefs.template_version);
-	g_free(prefs.tools_make_cmd);
-	g_free(prefs.tools_term_cmd);
-	g_free(prefs.tools_browser_cmd);
-	g_free(prefs.tools_grep_cmd);
+	g_free(tool_prefs.context_action_cmd);
+	g_free(template_prefs.developer);
+	g_free(template_prefs.company);
+	g_free(template_prefs.mail);
+	g_free(template_prefs.initials);
+	g_free(template_prefs.version);
+	g_free(tool_prefs.make_cmd);
+	g_free(tool_prefs.term_cmd);
+	g_free(tool_prefs.browser_cmd);
+	g_free(tool_prefs.grep_cmd);
 	g_free(printing_prefs.external_print_cmd);
 	g_free(printing_prefs.page_header_datefmt);
 	g_strfreev(ui_prefs.custom_commands);

Modified: trunk/src/msgwindow.c
===================================================================
--- trunk/src/msgwindow.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/msgwindow.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -117,7 +117,7 @@
 
 	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(msgwindow.tree_status), FALSE);
 
-	pfd = pango_font_description_from_string(prefs.msgwin_font);
+	pfd = pango_font_description_from_string(interface_prefs.msgwin_font);
 	gtk_widget_modify_font(msgwindow.tree_status, pfd);
 	pango_font_description_free(pfd);
 
@@ -147,7 +147,7 @@
 
 	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(msgwindow.tree_msg), FALSE);
 
-	pfd = pango_font_description_from_string(prefs.msgwin_font);
+	pfd = pango_font_description_from_string(interface_prefs.msgwin_font);
 	gtk_widget_modify_font(msgwindow.tree_msg, pfd);
 	pango_font_description_free(pfd);
 
@@ -180,7 +180,7 @@
 
 	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(msgwindow.tree_compiler), FALSE);
 
-	pfd = pango_font_description_from_string(prefs.msgwin_font);
+	pfd = pango_font_description_from_string(interface_prefs.msgwin_font);
 	gtk_widget_modify_font(msgwindow.tree_compiler, pfd);
 	pango_font_description_free(pfd);
 
@@ -353,7 +353,7 @@
 		GtkTreePath *path = gtk_tree_model_get_path(gtk_tree_view_get_model(GTK_TREE_VIEW(msgwindow.tree_status)), &iter);
 
 		gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(msgwindow.tree_status), path, NULL, FALSE, 0.0, 0.0);
-		if (prefs.switch_msgwin_pages) gtk_notebook_set_current_page(GTK_NOTEBOOK(msgwindow.notebook), MSG_STATUS);
+		if (prefs.switch_to_status) gtk_notebook_set_current_page(GTK_NOTEBOOK(msgwindow.notebook), MSG_STATUS);
 		gtk_tree_path_free(path);
 	}
 }

Modified: trunk/src/notebook.c
===================================================================
--- trunk/src/notebook.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/notebook.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -27,7 +27,6 @@
 
 #include "geany.h"
 #include "notebook.h"
-#include "prefs.h"
 #include "document.h"
 #include "ui_utils.h"
 #include "treeviews.h"
@@ -339,7 +338,7 @@
 	gtk_container_add(GTK_CONTAINER(ebox), this->tab_label);
 	gtk_box_pack_start(GTK_BOX(hbox), ebox, FALSE, FALSE, 0);
 
-	if (prefs.show_tab_cross)
+	if (file_prefs.show_tab_cross)
 	{
 		GtkWidget *image, *btn, *align;
 		GtkRcStyle *rcstyle;
@@ -376,7 +375,7 @@
 	this->tabmenu_label = gtk_label_new(title);
 	gtk_misc_set_alignment(GTK_MISC(this->tabmenu_label), 0.0, 0);
 
-	if (prefs.tab_order_ltr)
+	if (file_prefs.tab_order_ltr)
 		tabnum = gtk_notebook_append_page_menu(GTK_NOTEBOOK(app->notebook), page,
 			hbox, this->tabmenu_label);
 	else
@@ -412,7 +411,7 @@
 	gint curpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(app->notebook));
 
 	/* Focus the next page, not the previous */
-	if (curpage == page_num && prefs.tab_order_ltr)
+	if (curpage == page_num && file_prefs.tab_order_ltr)
 	{
 		gtk_notebook_set_current_page(GTK_NOTEBOOK(app->notebook), curpage + 1);
 	}

Modified: trunk/src/plugindata.h
===================================================================
--- trunk/src/plugindata.h	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/plugindata.h	2008-05-16 12:08:39 UTC (rev 2591)
@@ -35,12 +35,12 @@
 
 /* The API version should be incremented whenever any plugin data types below are
  * modified or appended to. */
-static const gint api_version = 58;
+static const gint api_version = 59;
 
 /* 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
  * are only appended, as this doesn't affect existing fields. */
-static const gint abi_version = 28;
+static const gint abi_version = 29;
 
 /** Check the plugin can be loaded by Geany.
  * This performs runtime checks that try to ensure:
@@ -153,13 +153,19 @@
  *  Variables and functions will be appended when needed by plugin authors. */
 typedef struct GeanyData
 {
-	GeanyApp	*app;					/**< Geany application data fields */
-	GtkWidget	*tools_menu;			/**< Most plugins should add menu items to the Tools menu only */
-	GArray		*doc_array;				/**< Dynamic array of document structs */
-	GPtrArray	*filetypes_array;		/**< Dynamic array of filetype pointers */
-	struct GeanyPrefs	*prefs;			/* Note: this will be split up in future versions */
-	struct EditorPrefs	*editor_prefs;	/**< Editor settings */
-	struct BuildInfo	*build_info;	/**< Current build information */
+	GeanyApp	*app;							/**< Geany application data fields */
+	GtkWidget	*tools_menu;					/**< Most plugins should add menu items to the Tools menu only */
+	GArray		*doc_array;						/**< Dynamic array of document structs */
+	GPtrArray	*filetypes_array;				/**< Dynamic array of filetype pointers */
+	struct GeanyPrefs	*prefs;					/**< General settings */
+	struct GeanyInterfacePrefs *interface_prefs; /**< Interface settings */
+	struct GeanyToolbarPrefs *toolbar_prefs;	/**< Toolbar settings */
+	struct GeanyEditorPrefs	*editor_prefs;		/**< Editor settings */
+	struct GeanyFilePrefs	*file_prefs;		/**< File-related settings */
+	struct GeanySearchPrefs	*search_prefs;		/**< Search-related settings */
+	struct GeanyToolPrefs	*tool_prefs;		/**< Tool settings */
+	struct GeanyTemplatePrefs *template_prefs;	/**< Template settings */
+	struct BuildInfo	*build_info;			/**< Current build information */
 
 	struct DocumentFuncs		*documents;		/**< See document.h */
 	struct ScintillaFuncs		*sci;			/**< See sciwrappers.h */

Modified: trunk/src/plugins.c
===================================================================
--- trunk/src/plugins.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/plugins.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -252,6 +252,12 @@
 	NULL,
 	NULL,
 	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
 
 	&doc_funcs,
 	&sci_funcs,
@@ -280,7 +286,13 @@
 	geany_data.doc_array = doc_array;
 	geany_data.filetypes_array = filetypes_array;
 	geany_data.prefs = &prefs;
+	geany_data.interface_prefs = &interface_prefs;
+	geany_data.toolbar_prefs = &toolbar_prefs;
 	geany_data.editor_prefs = &editor_prefs;
+	geany_data.file_prefs = &file_prefs;
+	geany_data.search_prefs = &search_prefs;
+	geany_data.tool_prefs = &tool_prefs;
+	geany_data.template_prefs = &template_prefs;
 	geany_data.build_info = &build_info;
 }
 

Modified: trunk/src/prefs.c
===================================================================
--- trunk/src/prefs.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/prefs.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -49,6 +49,8 @@
 #include "treeviews.h"
 #include "printing.h"
 #include "geanywraplabel.h"
+#include "templates.h"
+#include "search.h"
 
 #ifdef HAVE_VTE
 # include "vte.h"
@@ -60,8 +62,8 @@
 
 
 GeanyPrefs prefs;
+GeanyToolPrefs tool_prefs;
 
-GeanyFilePrefs file_prefs;
 
 static gchar *dialog_key_name;
 static GtkTreeIter g_iter;
@@ -186,7 +188,7 @@
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.beep_on_errors);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_switch_pages");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.switch_msgwin_pages);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.switch_to_status);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_suppress_status_msgs");
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.suppress_status_messages);
@@ -195,13 +197,13 @@
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.auto_focus);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_ask_suppress_search_dialogs");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.suppress_search_dialogs);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), search_prefs.suppress_dialogs);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_search_use_current_word");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.search_use_current_word);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), search_prefs.use_current_word);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "entry_contextaction");
-	gtk_entry_set_text(GTK_ENTRY(widget), prefs.context_action_cmd);
+	gtk_entry_set_text(GTK_ENTRY(widget), tool_prefs.context_action_cmd);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "startup_path_entry");
 	gtk_entry_set_text(GTK_ENTRY(widget), prefs.default_open_path);
@@ -211,23 +213,23 @@
 
 	/* Interface settings */
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_list_symbol");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.sidebar_symbol_visible);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), interface_prefs.sidebar_symbol_visible);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_list_openfiles");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.sidebar_openfiles_visible);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), interface_prefs.sidebar_openfiles_visible);
 	on_openfiles_visible_toggled(GTK_TOGGLE_BUTTON(widget), NULL);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_list_openfiles_fullpath");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.sidebar_openfiles_fullpath);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), interface_prefs.sidebar_openfiles_fullpath);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "tagbar_font");
-	gtk_font_button_set_font_name(GTK_FONT_BUTTON(widget), prefs.tagbar_font);
+	gtk_font_button_set_font_name(GTK_FONT_BUTTON(widget), interface_prefs.tagbar_font);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "msgwin_font");
-	gtk_font_button_set_font_name(GTK_FONT_BUTTON(widget), prefs.msgwin_font);
+	gtk_font_button_set_font_name(GTK_FONT_BUTTON(widget), interface_prefs.msgwin_font);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "editor_font");
-	gtk_font_button_set_font_name(GTK_FONT_BUTTON(widget), prefs.editor_font);
+	gtk_font_button_set_font_name(GTK_FONT_BUTTON(widget), interface_prefs.editor_font);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "spin_long_line");
 	gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), editor_prefs.long_line_column);
@@ -247,63 +249,63 @@
 	g_free(color);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_show_notebook_tabs");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.show_notebook_tabs);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), interface_prefs.show_notebook_tabs);
 	/* disable following setting if notebook tabs are hidden */
 	on_show_notebook_tabs_toggled(GTK_TOGGLE_BUTTON(
 					lookup_widget(ui_widgets.prefs_dialog, "check_show_notebook_tabs")), NULL);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_show_tab_cross");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.show_tab_cross);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), file_prefs.show_tab_cross);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "combo_tab_editor");
-	gtk_combo_box_set_active(GTK_COMBO_BOX(widget), prefs.tab_pos_editor);
+	gtk_combo_box_set_active(GTK_COMBO_BOX(widget), interface_prefs.tab_pos_editor);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "combo_tab_msgwin");
-	gtk_combo_box_set_active(GTK_COMBO_BOX(widget), prefs.tab_pos_msgwin);
+	gtk_combo_box_set_active(GTK_COMBO_BOX(widget), interface_prefs.tab_pos_msgwin);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "combo_tab_sidebar");
-	gtk_combo_box_set_active(GTK_COMBO_BOX(widget), prefs.tab_pos_sidebar);
+	gtk_combo_box_set_active(GTK_COMBO_BOX(widget), interface_prefs.tab_pos_sidebar);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_statusbar_visible");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.statusbar_visible);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), interface_prefs.statusbar_visible);
 
 
 	/* Toolbar settings */
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_show");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_visible);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.visible);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_search");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_show_search);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.show_search);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_goto");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_show_goto);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.show_goto);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_compile");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_show_compile);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.show_compile);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_zoom");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_show_zoom);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.show_zoom);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_indent");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_show_indent);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.show_indent);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_undo");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_show_undo);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.show_undo);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_navigation");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_show_navigation);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.show_navigation);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_colour");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_show_colour);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.show_colour);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_fileops");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_show_fileops);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.show_fileops);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_quit");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.toolbar_show_quit);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), toolbar_prefs.show_quit);
 
 
-	switch (prefs.toolbar_icon_style)
+	switch (toolbar_prefs.icon_style)
 	{
 		case 0: widget = lookup_widget(ui_widgets.prefs_dialog, "radio_toolbar_image"); break;
 		case 1: widget = lookup_widget(ui_widgets.prefs_dialog, "radio_toolbar_text"); break;
@@ -312,7 +314,7 @@
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
 
 
-	switch (prefs.toolbar_icon_size)
+	switch (toolbar_prefs.icon_size)
 	{
 		case GTK_ICON_SIZE_LARGE_TOOLBAR:
 				widget = lookup_widget(ui_widgets.prefs_dialog, "radio_toolbar_large"); break;
@@ -325,14 +327,14 @@
 
 
 	/* Files settings */
-	if (prefs.tab_order_ltr)
+	if (file_prefs.tab_order_ltr)
 		widget = lookup_widget(ui_widgets.prefs_dialog, "radio_tab_right");
 	else
 		widget = lookup_widget(ui_widgets.prefs_dialog, "radio_tab_left");
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "spin_mru");
-	gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), prefs.mru_length);
+	gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), file_prefs.mru_length);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "spin_disk_check");
 	gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), file_prefs.disk_check_timeout);
@@ -340,41 +342,41 @@
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "combo_new_encoding");
 	/* luckily the index of the combo box items match the index of the encodings array */
-	gtk_combo_box_set_active(GTK_COMBO_BOX(widget), prefs.default_new_encoding);
+	gtk_combo_box_set_active(GTK_COMBO_BOX(widget), file_prefs.default_new_encoding);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_open_encoding");
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
-			(prefs.default_open_encoding >= 0) ? TRUE : FALSE);
+			(file_prefs.default_open_encoding >= 0) ? TRUE : FALSE);
 	on_open_encoding_toggled(GTK_TOGGLE_BUTTON(widget), NULL);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "combo_open_encoding");
-	if (prefs.default_open_encoding >= 0)
+	if (file_prefs.default_open_encoding >= 0)
 	{
-		gtk_combo_box_set_active(GTK_COMBO_BOX(widget), prefs.default_open_encoding);
+		gtk_combo_box_set_active(GTK_COMBO_BOX(widget), file_prefs.default_open_encoding);
 	}
 	else
 		gtk_combo_box_set_active(GTK_COMBO_BOX(widget), GEANY_ENCODING_UTF_8);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "combo_eol");
-	if (prefs.default_eol_character >= 0 && prefs.default_eol_character < 3)
+	if (file_prefs.default_eol_character >= 0 && file_prefs.default_eol_character < 3)
 	{
-		gtk_combo_box_set_active(GTK_COMBO_BOX(widget), prefs.default_eol_character);
+		gtk_combo_box_set_active(GTK_COMBO_BOX(widget), file_prefs.default_eol_character);
 	}
 	else
 		gtk_combo_box_set_active(GTK_COMBO_BOX(widget), GEANY_DEFAULT_EOL_CHARACTER);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_trailing_spaces");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.strip_trailing_spaces);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), file_prefs.strip_trailing_spaces);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_new_line");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.final_new_line);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), file_prefs.final_new_line);
 
 	/* Editor settings */
 	widget = lookup_widget(ui_widgets.prefs_dialog, "spin_tab_width");
 	gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), editor_prefs.tab_width);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_replace_tabs");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.replace_tabs);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), file_prefs.replace_tabs);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_indent");
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), editor_prefs.show_indent_guide);
@@ -443,34 +445,34 @@
 
 
 	/* Tools Settings */
-	if (prefs.tools_make_cmd)
-			gtk_entry_set_text(GTK_ENTRY(lookup_widget(ui_widgets.prefs_dialog, "entry_com_make")), prefs.tools_make_cmd);
+	if (tool_prefs.make_cmd)
+			gtk_entry_set_text(GTK_ENTRY(lookup_widget(ui_widgets.prefs_dialog, "entry_com_make")), tool_prefs.make_cmd);
 
-    if (prefs.tools_term_cmd)
-            gtk_entry_set_text(GTK_ENTRY(lookup_widget(ui_widgets.prefs_dialog, "entry_com_term")), prefs.tools_term_cmd);
+    if (tool_prefs.term_cmd)
+            gtk_entry_set_text(GTK_ENTRY(lookup_widget(ui_widgets.prefs_dialog, "entry_com_term")), tool_prefs.term_cmd);
 
-	if (prefs.tools_browser_cmd)
-		gtk_entry_set_text(GTK_ENTRY(lookup_widget(ui_widgets.prefs_dialog, "entry_browser")), prefs.tools_browser_cmd);
+	if (tool_prefs.browser_cmd)
+		gtk_entry_set_text(GTK_ENTRY(lookup_widget(ui_widgets.prefs_dialog, "entry_browser")), tool_prefs.browser_cmd);
 
-	if (prefs.tools_grep_cmd)
-		gtk_entry_set_text(GTK_ENTRY(lookup_widget(ui_widgets.prefs_dialog, "entry_grep")), prefs.tools_grep_cmd);
+	if (tool_prefs.grep_cmd)
+		gtk_entry_set_text(GTK_ENTRY(lookup_widget(ui_widgets.prefs_dialog, "entry_grep")), tool_prefs.grep_cmd);
 
 
 	/* Template settings */
 	widget = lookup_widget(ui_widgets.prefs_dialog, "entry_template_developer");
-	gtk_entry_set_text(GTK_ENTRY(widget), prefs.template_developer);
+	gtk_entry_set_text(GTK_ENTRY(widget), template_prefs.developer);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "entry_template_company");
-	gtk_entry_set_text(GTK_ENTRY(widget), prefs.template_company);
+	gtk_entry_set_text(GTK_ENTRY(widget), template_prefs.company);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "entry_template_mail");
-	gtk_entry_set_text(GTK_ENTRY(widget), prefs.template_mail);
+	gtk_entry_set_text(GTK_ENTRY(widget), template_prefs.mail);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "entry_template_initial");
-	gtk_entry_set_text(GTK_ENTRY(widget), prefs.template_initial);
+	gtk_entry_set_text(GTK_ENTRY(widget), template_prefs.initials);
 
 	widget = lookup_widget(ui_widgets.prefs_dialog, "entry_template_version");
-	gtk_entry_set_text(GTK_ENTRY(widget), prefs.template_version);
+	gtk_entry_set_text(GTK_ENTRY(widget), template_prefs.version);
 
 
 	/* Keybindings */
@@ -608,23 +610,23 @@
 		prefs.beep_on_errors = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_ask_suppress_search_dialogs");
-		prefs.suppress_search_dialogs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		search_prefs.suppress_dialogs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_switch_pages");
-		prefs.switch_msgwin_pages = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		prefs.switch_to_status = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_suppress_status_msgs");
 		prefs.suppress_status_messages = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_search_use_current_word");
-		prefs.search_use_current_word = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		search_prefs.use_current_word = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_auto_focus");
 		prefs.auto_focus = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_contextaction");
-		g_free(prefs.context_action_cmd);
-		prefs.context_action_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+		g_free(tool_prefs.context_action_cmd);
+		tool_prefs.context_action_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "startup_path_entry");
 		g_free(prefs.default_open_path);
@@ -635,13 +637,13 @@
 
 		/* Interface settings */
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_list_symbol");
-		prefs.sidebar_symbol_visible = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		interface_prefs.sidebar_symbol_visible = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_list_openfiles");
-		prefs.sidebar_openfiles_visible = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		interface_prefs.sidebar_openfiles_visible = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_list_openfiles_fullpath");
-		prefs.sidebar_openfiles_fullpath = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		interface_prefs.sidebar_openfiles_fullpath = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "radio_long_line_line");
 		if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) editor_prefs.long_line_type = 0;
@@ -657,111 +659,111 @@
 		if (editor_prefs.long_line_column == 0) editor_prefs.long_line_type = 2;
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_show_notebook_tabs");
-		prefs.show_notebook_tabs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		interface_prefs.show_notebook_tabs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_show_tab_cross");
-		prefs.show_tab_cross = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		file_prefs.show_tab_cross = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "combo_tab_editor");
-		prefs.tab_pos_editor = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+		interface_prefs.tab_pos_editor = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "combo_tab_msgwin");
-		prefs.tab_pos_msgwin = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+		interface_prefs.tab_pos_msgwin = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "combo_tab_sidebar");
-		prefs.tab_pos_sidebar = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+		interface_prefs.tab_pos_sidebar = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_statusbar_visible");
-		prefs.statusbar_visible = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		interface_prefs.statusbar_visible = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 
 		/* Toolbar settings */
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_show");
-		prefs.toolbar_visible = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.visible = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_search");
-		prefs.toolbar_show_search = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.show_search = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_goto");
-		prefs.toolbar_show_goto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.show_goto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_zoom");
-		prefs.toolbar_show_zoom = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.show_zoom = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_indent");
-		prefs.toolbar_show_indent = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.show_indent = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_undo");
-		prefs.toolbar_show_undo = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.show_undo = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_navigation");
-		prefs.toolbar_show_navigation = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.show_navigation = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_compile");
-		prefs.toolbar_show_compile = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.show_compile = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_colour");
-		prefs.toolbar_show_colour = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.show_colour = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_fileops");
-		prefs.toolbar_show_fileops = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.show_fileops = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_quit");
-		prefs.toolbar_show_quit = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		toolbar_prefs.show_quit = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "radio_toolbar_imagetext");
-		if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) prefs.toolbar_icon_style = 2;
+		if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) toolbar_prefs.icon_style = 2;
 		else
 		{
 			widget = lookup_widget(ui_widgets.prefs_dialog, "radio_toolbar_image");
 			if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
-				prefs.toolbar_icon_style = 0;
+				toolbar_prefs.icon_style = 0;
 			else
 				/* now only the text only radio remains, so set text only */
-				prefs.toolbar_icon_style = 1;
+				toolbar_prefs.icon_style = 1;
 		}
 
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "radio_toolbar_large");
 		if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
-			prefs.toolbar_icon_size = GTK_ICON_SIZE_LARGE_TOOLBAR;
+			toolbar_prefs.icon_size = GTK_ICON_SIZE_LARGE_TOOLBAR;
 		else
-			prefs.toolbar_icon_size = GTK_ICON_SIZE_SMALL_TOOLBAR;
+			toolbar_prefs.icon_size = GTK_ICON_SIZE_SMALL_TOOLBAR;
 
 
 		/* Files settings */
 		widget = lookup_widget(ui_widgets.prefs_dialog, "radio_tab_right");
-		prefs.tab_order_ltr = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		file_prefs.tab_order_ltr = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "spin_mru");
-		prefs.mru_length = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
+		file_prefs.mru_length = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "spin_disk_check");
 		file_prefs.disk_check_timeout = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "combo_new_encoding");
-		prefs.default_new_encoding = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+		file_prefs.default_new_encoding = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_open_encoding");
 		if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
 		{
 			widget = lookup_widget(ui_widgets.prefs_dialog, "combo_open_encoding");
-			prefs.default_open_encoding = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+			file_prefs.default_open_encoding = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
 		}
 		else
-			prefs.default_open_encoding = -1;
+			file_prefs.default_open_encoding = -1;
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "combo_eol");
-		prefs.default_eol_character = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+		file_prefs.default_eol_character = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_trailing_spaces");
-		prefs.strip_trailing_spaces = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		file_prefs.strip_trailing_spaces = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_new_line");
-		prefs.final_new_line = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		file_prefs.final_new_line = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_replace_tabs");
-		prefs.replace_tabs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+		file_prefs.replace_tabs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
 
 		/* Editor settings */
@@ -848,42 +850,42 @@
 
 		/* Tools Settings */
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_com_make");
-		g_free(prefs.tools_make_cmd);
-		prefs.tools_make_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+		g_free(tool_prefs.make_cmd);
+		tool_prefs.make_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_com_term");
-		g_free(prefs.tools_term_cmd);
-		prefs.tools_term_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+		g_free(tool_prefs.term_cmd);
+		tool_prefs.term_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_browser");
-		g_free(prefs.tools_browser_cmd);
-		prefs.tools_browser_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+		g_free(tool_prefs.browser_cmd);
+		tool_prefs.browser_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_grep");
-		g_free(prefs.tools_grep_cmd);
-		prefs.tools_grep_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+		g_free(tool_prefs.grep_cmd);
+		tool_prefs.grep_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
 
 		/* Template settings */
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_template_developer");
-		g_free(prefs.template_developer);
-		prefs.template_developer = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+		g_free(template_prefs.developer);
+		template_prefs.developer = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_template_company");
-		g_free(prefs.template_company);
-		prefs.template_company = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+		g_free(template_prefs.company);
+		template_prefs.company = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_template_mail");
-		g_free(prefs.template_mail);
-		prefs.template_mail = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+		g_free(template_prefs.mail);
+		template_prefs.mail = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_template_initial");
-		g_free(prefs.template_initial);
-		prefs.template_initial = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+		g_free(template_prefs.initials);
+		template_prefs.initials = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_template_version");
-		g_free(prefs.template_version);
-		prefs.template_version = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+		g_free(template_prefs.version);
+		template_prefs.version = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
 
 		/* Keybindings */
@@ -959,17 +961,17 @@
 #endif
 
 		/* apply the changes made */
-		ui_statusbar_showhide(prefs.statusbar_visible);
+		ui_statusbar_showhide(interface_prefs.statusbar_visible);
 		treeviews_openfiles_update_all(); /* to update if full path setting has changed */
 		ui_update_toolbar_items();
-		ui_update_toolbar_icons(prefs.toolbar_icon_size);
-		gtk_toolbar_set_style(GTK_TOOLBAR(app->toolbar), prefs.toolbar_icon_style);
+		ui_update_toolbar_icons(toolbar_prefs.icon_size);
+		gtk_toolbar_set_style(GTK_TOOLBAR(app->toolbar), toolbar_prefs.icon_style);
 		ui_sidebar_show_hide();
-		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(app->notebook), prefs.show_notebook_tabs);
+		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(app->notebook), interface_prefs.show_notebook_tabs);
 
-		gtk_notebook_set_tab_pos(GTK_NOTEBOOK(app->notebook), prefs.tab_pos_editor);
-		gtk_notebook_set_tab_pos(GTK_NOTEBOOK(msgwindow.notebook), prefs.tab_pos_msgwin);
-		gtk_notebook_set_tab_pos(GTK_NOTEBOOK(app->treeview_notebook), prefs.tab_pos_sidebar);
+		gtk_notebook_set_tab_pos(GTK_NOTEBOOK(app->notebook), interface_prefs.tab_pos_editor);
+		gtk_notebook_set_tab_pos(GTK_NOTEBOOK(msgwindow.notebook), interface_prefs.tab_pos_msgwin);
+		gtk_notebook_set_tab_pos(GTK_NOTEBOOK(app->treeview_notebook), interface_prefs.tab_pos_sidebar);
 
 		/* re-colourise all open documents, if tab width or long line settings have changed */
 		for (i = 0; i < doc_array->len; i++)
@@ -1036,29 +1038,29 @@
 	{
 		case 1:
 		{
-			if (strcmp(fontbtn, prefs.tagbar_font) == 0) break;
-			g_free(prefs.tagbar_font);
-			prefs.tagbar_font = g_strdup(fontbtn);
+			if (strcmp(fontbtn, interface_prefs.tagbar_font) == 0) break;
+			g_free(interface_prefs.tagbar_font);
+			interface_prefs.tagbar_font = g_strdup(fontbtn);
 			for (i = 0; i < doc_array->len; i++)
 			{
 				if (doc_list[i].is_valid && GTK_IS_WIDGET(doc_list[i].tag_tree))
 					ui_widget_modify_font_from_string(doc_list[i].tag_tree,
-						prefs.tagbar_font);
+						interface_prefs.tagbar_font);
 			}
 			if (GTK_IS_WIDGET(tv.default_tag_tree))
-				ui_widget_modify_font_from_string(tv.default_tag_tree, prefs.tagbar_font);
+				ui_widget_modify_font_from_string(tv.default_tag_tree, interface_prefs.tagbar_font);
 			ui_widget_modify_font_from_string(lookup_widget(app->window, "entry1"),
-				prefs.tagbar_font);
+				interface_prefs.tagbar_font);
 			break;
 		}
 		case 2:
 		{
-			if (strcmp(fontbtn, prefs.msgwin_font) == 0) break;
-			g_free(prefs.msgwin_font);
-			prefs.msgwin_font = g_strdup(fontbtn);
-			ui_widget_modify_font_from_string(msgwindow.tree_compiler, prefs.msgwin_font);
-			ui_widget_modify_font_from_string(msgwindow.tree_msg, prefs.msgwin_font);
-			ui_widget_modify_font_from_string(msgwindow.tree_status, prefs.msgwin_font);
+			if (strcmp(fontbtn, interface_prefs.msgwin_font) == 0) break;
+			g_free(interface_prefs.msgwin_font);
+			interface_prefs.msgwin_font = g_strdup(fontbtn);
+			ui_widget_modify_font_from_string(msgwindow.tree_compiler, interface_prefs.msgwin_font);
+			ui_widget_modify_font_from_string(msgwindow.tree_msg, interface_prefs.msgwin_font);
+			ui_widget_modify_font_from_string(msgwindow.tree_status, interface_prefs.msgwin_font);
 			break;
 		}
 		case 3:

Modified: trunk/src/prefs.h
===================================================================
--- trunk/src/prefs.h	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/prefs.h	2008-05-16 12:08:39 UTC (rev 2591)
@@ -24,90 +24,36 @@
 #ifndef GEANY_PREFS_H
 #define GEANY_PREFS_H 1
 
-/* Preferences dialog settings.
- * (See also EditorPrefs in editor.h and PrintingPrefs in printing.h).
- * Remember to increment abi_version in plugindata.h when changing items. */
+/* General Preferences dialog settings.
+ * Remember to increment abi_version in plugindata.h if you have to change an item. */
 typedef struct GeanyPrefs
 {
-	/* general */
 	gboolean		load_session;
 	gboolean		load_plugins;
 	gboolean		save_winpos;
 	gboolean		confirm_exit;
 	gboolean		beep_on_errors;
-	gboolean		suppress_search_dialogs;
-	gboolean		search_use_current_word;
 	gboolean		suppress_status_messages;
-	gboolean		switch_msgwin_pages;
+	gboolean		switch_to_status;
 	gboolean		auto_focus;
 	gchar			*default_open_path;
-
-	/* interface */
-	gboolean		sidebar_symbol_visible;
-	gboolean		sidebar_openfiles_visible;
-	gboolean		sidebar_openfiles_fullpath;
-	gchar			*editor_font;
-	gchar			*tagbar_font;
-	gchar			*msgwin_font;
-	gboolean		show_notebook_tabs;
-	gint			tab_pos_editor;
-	gint			tab_pos_msgwin;
-	gint			tab_pos_sidebar;
-	gboolean		statusbar_visible;
-	gboolean		show_symbol_list_expanders;
-
-	/* toolbar */
-	gboolean		toolbar_visible;
-	gboolean		toolbar_show_search;
-	gboolean		toolbar_show_goto;
-	gboolean		toolbar_show_undo;
-	gboolean		toolbar_show_navigation;
-	gboolean		toolbar_show_compile;
-	gboolean		toolbar_show_zoom;
-	gboolean		toolbar_show_indent;
-	gboolean		toolbar_show_colour;
-	gboolean		toolbar_show_fileops;
-	gboolean		toolbar_show_quit;
-	GtkIconSize		toolbar_icon_size;
-	gint			toolbar_icon_style;
-
-	/* files */
-	gint			default_new_encoding;
-	gint			default_open_encoding;
-	gboolean		final_new_line;
-	gboolean		strip_trailing_spaces;
-	gboolean		replace_tabs;
-	gboolean		tab_order_ltr;
-	gboolean		show_tab_cross;
-	guint			mru_length;
-	gint			default_eol_character;
-
-	/* tools */
-	gchar			*tools_browser_cmd;
-	gchar			*tools_make_cmd;
-	gchar			*tools_term_cmd;
-	gchar			*tools_grep_cmd;
-	gchar			*context_action_cmd;
-
-	/* templates */
-	gchar			*template_developer;
-	gchar			*template_company;
-	gchar			*template_mail;
-	gchar			*template_initial;
-	gchar			*template_version;
 }
 GeanyPrefs;
 
 extern GeanyPrefs prefs;
 
 
-typedef struct GeanyFilePrefs
+typedef struct GeanyToolPrefs
 {
-	gint	disk_check_timeout;
+	gchar			*browser_cmd;
+	gchar			*make_cmd;
+	gchar			*term_cmd;
+	gchar			*grep_cmd;
+	gchar			*context_action_cmd;
 }
-GeanyFilePrefs;
+GeanyToolPrefs;
 
-extern GeanyFilePrefs file_prefs;
+extern GeanyToolPrefs tool_prefs;
 
 
 void prefs_init_dialog(void);

Modified: trunk/src/printing.c
===================================================================
--- trunk/src/printing.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/printing.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -33,7 +33,6 @@
 
 #include "geany.h"
 #include "printing.h"
-#include "prefs.h"
 #include "document.h"
 #include "sciwrappers.h"
 #include "editor.h"
@@ -415,7 +414,7 @@
 	if (dinfo == NULL)
 		return;
 
-	desc = pango_font_description_from_string(prefs.editor_font);
+	desc = pango_font_description_from_string(interface_prefs.editor_font);
 
 	/* init dinfo fields */
 	dinfo->lines = sci_get_line_count(doc_list[dinfo->idx].sci);

Modified: trunk/src/search.c
===================================================================
--- trunk/src/search.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/search.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -64,8 +64,9 @@
 
 GeanySearchData search_data;
 
-SearchPrefs search_prefs = {NULL};
+GeanySearchPrefs search_prefs;
 
+
 static struct
 {
 	GtkWidget	*find_dialog;
@@ -290,7 +291,7 @@
 
 	g_return_if_fail(DOC_IDX_VALID(idx));
 
-	sel = editor_get_default_selection(idx, prefs.search_use_current_word, NULL);
+	sel = editor_get_default_selection(idx, search_prefs.use_current_word, NULL);
 
 	if (widgets.find_dialog == NULL)
 	{
@@ -411,7 +412,7 @@
 
 	if (idx == -1 || ! doc_list[idx].is_valid) return;
 
-	sel = editor_get_default_selection(idx, prefs.search_use_current_word, NULL);
+	sel = editor_get_default_selection(idx, search_prefs.use_current_word, NULL);
 
 	if (widgets.replace_dialog == NULL)
 	{
@@ -710,13 +711,13 @@
 				G_CALLBACK(gtk_widget_hide_on_delete), NULL);
 
 		gtk_widget_show_all(widgets.find_in_files_dialog);
-		sel = editor_get_default_selection(idx, prefs.search_use_current_word, NULL);
+		sel = editor_get_default_selection(idx, search_prefs.use_current_word, NULL);
 	}
 
 	entry = GTK_BIN(combo)->child;
 	/* only set selection if the dialog is not already visible, or has just been created */
 	if (! sel && ! GTK_WIDGET_VISIBLE(widgets.find_in_files_dialog))
-		sel = editor_get_default_selection(idx, prefs.search_use_current_word, NULL);
+		sel = editor_get_default_selection(idx, search_prefs.use_current_word, NULL);
 	if (sel)
 		gtk_entry_set_text(GTK_ENTRY(entry), sel);
 	g_free(sel);
@@ -882,7 +883,7 @@
 				document_find_text(idx, search_data.text, search_data.flags,
 					(response == GEANY_RESPONSE_FIND_PREVIOUS), TRUE, GTK_WIDGET(widgets.find_dialog));
 				check_close = FALSE;
-				if (prefs.suppress_search_dialogs)
+				if (search_prefs.suppress_dialogs)
 					check_close = TRUE;
 				break;
 
@@ -1165,11 +1166,11 @@
 
 	if (! search_text || ! *search_text || ! dir) return TRUE;
 
-	command_grep = g_find_program_in_path(prefs.tools_grep_cmd);
+	command_grep = g_find_program_in_path(tool_prefs.grep_cmd);
 	if (command_grep == NULL)
 	{
 		ui_set_statusbar(TRUE, _("Cannot execute grep tool '%s';"
-			" check the path setting in Preferences."), prefs.tools_grep_cmd);
+			" check the path setting in Preferences."), tool_prefs.grep_cmd);
 		return FALSE;
 	}
 
@@ -1186,7 +1187,7 @@
 	}
 	g_strfreev(opts_argv);
 
-	i++;	/* correct for prefs.tools_grep_cmd */
+	i++;	/* correct for tool_prefs.grep_cmd */
 	argv_prefix[i++] = g_strdup("--");
 	argv_prefix[i++] = g_strdup(search_text);
 
@@ -1234,7 +1235,7 @@
 		g_child_watch_add(child_pid, search_close_pid, NULL);
 
 		str = g_strdup_printf(_("%s %s -- %s (in directory: %s)"),
-			prefs.tools_grep_cmd, opts, search_text, dir);
+			tool_prefs.grep_cmd, opts, search_text, dir);
 		utf8_str = utils_get_utf8_from_locale(str);
 		msgwin_msg_add(COLOR_BLUE, -1, -1, utf8_str);
 		utils_free_pointers(str, utf8_str, NULL);

Modified: trunk/src/search.h
===================================================================
--- trunk/src/search.h	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/search.h	2008-05-16 12:08:39 UTC (rev 2591)
@@ -26,7 +26,7 @@
 #define GEANY_SEARCH_H 1
 
 /* the flags given in the search dialog for "find next", also used by the search bar */
-typedef struct
+typedef struct GeanySearchData
 {
 	gchar		*text;
 	gint		flags;
@@ -34,17 +34,21 @@
 	/* set to TRUE when text was set by a search bar callback to keep track of
 	 * search bar background colour */
 	gboolean	search_bar;
-} GeanySearchData;
+}
+GeanySearchData;
 
 extern GeanySearchData search_data;
 
 
-typedef struct
+typedef struct GeanySearchPrefs
 {
 	gchar		*fif_extra_options;
-} SearchPrefs;
+	gboolean	suppress_dialogs;
+	gboolean	use_current_word;
+}
+GeanySearchPrefs;
 
-extern SearchPrefs search_prefs;
+extern GeanySearchPrefs search_prefs;
 
 
 void search_init(void);

Modified: trunk/src/templates.c
===================================================================
--- trunk/src/templates.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/templates.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -32,7 +32,6 @@
 #include "geany.h"
 
 #include "templates.h"
-#include "prefs.h"
 #include "support.h"
 #include "utils.h"
 #include "document.h"
@@ -44,6 +43,8 @@
 #define TEMPLATE_DATETIME_FORMAT "%d.%m.%Y %H:%M:%S %Z"
 
 
+GeanyTemplatePrefs template_prefs;
+
 static GtkWidget *new_with_template_menu = NULL;	/* File menu submenu */
 
 
@@ -763,11 +764,11 @@
 {
 	text = utils_str_replace(text, "{year}", year);
 	text = utils_str_replace(text, "{date}", date);
-	text = utils_str_replace(text, "{version}", prefs.template_version);
-	text = utils_str_replace(text, "{initial}", prefs.template_initial);
-	text = utils_str_replace(text, "{developer}", prefs.template_developer);
-	text = utils_str_replace(text, "{mail}", prefs.template_mail);
-	text = utils_str_replace(text, "{company}", prefs.template_company);
+	text = utils_str_replace(text, "{version}", template_prefs.version);
+	text = utils_str_replace(text, "{initial}", template_prefs.initials);
+	text = utils_str_replace(text, "{developer}", template_prefs.developer);
+	text = utils_str_replace(text, "{mail}", template_prefs.mail);
+	text = utils_str_replace(text, "{company}", template_prefs.company);
 	text = utils_str_replace(text, "{untitled}", GEANY_STRING_UNTITLED);
 	text = utils_str_replace(text, "{geanyversion}", "Geany " VERSION);
 

Modified: trunk/src/templates.h
===================================================================
--- trunk/src/templates.h	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/templates.h	2008-05-16 12:08:39 UTC (rev 2591)
@@ -34,6 +34,20 @@
 	GEANY_MAX_TEMPLATES
 };
 
+
+typedef struct GeanyTemplatePrefs
+{
+	gchar			*developer;
+	gchar			*company;
+	gchar			*mail;
+	gchar			*initials;
+	gchar			*version;
+}
+GeanyTemplatePrefs;
+
+extern GeanyTemplatePrefs template_prefs;
+
+
 struct filetype;
 
 void templates_init(void);

Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/treeviews.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -28,7 +28,6 @@
 #include <string.h>
 
 #include "geany.h"
-#include "prefs.h"
 #include "support.h"
 #include "callbacks.h"
 #include "treeviews.h"
@@ -113,7 +112,7 @@
 	gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
 	gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
 
-	pfd = pango_font_description_from_string(prefs.tagbar_font);
+	pfd = pango_font_description_from_string(interface_prefs.tagbar_font);
 	gtk_widget_modify_font(tree, pfd);
 	pango_font_description_free(pfd);
 
@@ -126,8 +125,8 @@
 	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree), FALSE);
 
 #if GTK_CHECK_VERSION(2, 12, 0)
-	gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(tree), prefs.show_symbol_list_expanders);
-	if (! prefs.show_symbol_list_expanders)
+	gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(tree), interface_prefs.show_symbol_list_expanders);
+	if (! interface_prefs.show_symbol_list_expanders)
 		gtk_tree_view_set_level_indentation(GTK_TREE_VIEW(tree), 10);
 #endif
 
@@ -274,7 +273,7 @@
 	sortable = GTK_TREE_SORTABLE(GTK_TREE_MODEL(store_openfiles));
 	gtk_tree_sortable_set_sort_column_id(sortable, 0, GTK_SORT_ASCENDING);
 
-	pfd = pango_font_description_from_string(prefs.tagbar_font);
+	pfd = pango_font_description_from_string(interface_prefs.tagbar_font);
 	gtk_widget_modify_font(tv.tree_openfiles, pfd);
 	pango_font_description_free(pfd);
 
@@ -311,7 +310,7 @@
 	gchar *basename;
 	GdkColor *color = document_get_status_color(idx);
 
-	if (prefs.sidebar_openfiles_fullpath)
+	if (interface_prefs.sidebar_openfiles_fullpath)
 		basename = DOC_FILENAME(idx);
 	else
 		basename = g_path_get_basename(DOC_FILENAME(idx));
@@ -321,7 +320,7 @@
 #else
 		0, basename, 1, idx, 2, color, -1);
 #endif
-	if (! prefs.sidebar_openfiles_fullpath)
+	if (! interface_prefs.sidebar_openfiles_fullpath)
 		g_free(basename);
 }
 
@@ -409,21 +408,21 @@
 
 static void on_openfiles_fullpath_activate(GtkCheckMenuItem *item, gpointer user_data)
 {
-	prefs.sidebar_openfiles_fullpath = gtk_check_menu_item_get_active(item);
+	interface_prefs.sidebar_openfiles_fullpath = gtk_check_menu_item_get_active(item);
 	treeviews_openfiles_update_all();
 }
 
 
 static void on_list_document_activate(GtkCheckMenuItem *item, gpointer user_data)
 {
-	prefs.sidebar_openfiles_visible = gtk_check_menu_item_get_active(item);
+	interface_prefs.sidebar_openfiles_visible = gtk_check_menu_item_get_active(item);
 	ui_sidebar_show_hide();
 }
 
 
 static void on_list_symbol_activate(GtkCheckMenuItem *item, gpointer user_data)
 {
-	prefs.sidebar_symbol_visible = gtk_check_menu_item_get_active(item);
+	interface_prefs.sidebar_symbol_visible = gtk_check_menu_item_get_active(item);
 	ui_sidebar_show_hide();
 }
 
@@ -619,7 +618,7 @@
 		}
 		case SYMBOL_ACTION_HIDE:
 		{
-			prefs.sidebar_symbol_visible = FALSE;
+			interface_prefs.sidebar_symbol_visible = FALSE;
 			ui_sidebar_show_hide();
 			break;
 		}
@@ -708,20 +707,20 @@
 		if (GPOINTER_TO_INT(user_data) == TREEVIEW_OPENFILES)
 		{
 			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mi.documents_show_documents),
-				prefs.sidebar_openfiles_visible);
+				interface_prefs.sidebar_openfiles_visible);
 			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mi.documents_show_symbols),
-				prefs.sidebar_symbol_visible);
+				interface_prefs.sidebar_symbol_visible);
 			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mi.documents_fullpath),
-				prefs.sidebar_openfiles_fullpath);
+				interface_prefs.sidebar_openfiles_fullpath);
 			gtk_menu_popup(GTK_MENU(tv.popup_openfiles), NULL, NULL, NULL, NULL,
 																event->button, event->time);
 		}
 		else if (GPOINTER_TO_INT(user_data) == TREEVIEW_SYMBOL)
 		{
 			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mi.symbols_show_documents),
-				prefs.sidebar_openfiles_visible);
+				interface_prefs.sidebar_openfiles_visible);
 			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mi.symbols_show_symbols),
-				prefs.sidebar_symbol_visible);
+				interface_prefs.sidebar_symbol_visible);
 			gtk_menu_popup(GTK_MENU(tv.popup_taglist), NULL, NULL, NULL, NULL,
 																event->button, event->time);
 			return TRUE;	/* prevent selection changed signal for symbol tags */

Modified: trunk/src/ui_utils.c
===================================================================
--- trunk/src/ui_utils.c	2008-05-15 16:19:00 UTC (rev 2590)
+++ trunk/src/ui_utils.c	2008-05-16 12:08:39 UTC (rev 2591)
@@ -47,6 +47,8 @@
 #include "plugins.h"
 
 
+GeanyInterfacePrefs	interface_prefs;
+GeanyToolbarPrefs	toolbar_prefs;
 UIPrefs			ui_prefs;
 UIWidgets		ui_widgets;
 
@@ -73,7 +75,7 @@
 	GTimeVal timeval;
 	const gint GEANY_STATUS_TIMEOUT = 1;
 
-	if (! prefs.statusbar_visible)
+	if (! interface_prefs.statusbar_visible)
 		return; /* just do nothing if statusbar is not visible */
 
 	g_get_current_time(&timeval);
@@ -115,7 +117,7 @@
 /* updates the status bar document statistics */
 void ui_update_statusbar(gint idx, gint pos)
 {
-	if (! prefs.statusbar_visible)
+	if (! interface_prefs.statusbar_visible)
 		return; /* just do nothing if statusbar is not visible */
 
 	if (idx == -1) idx = document_get_cur_idx();
@@ -244,13 +246,13 @@
 
 	g_return_if_fail(font_name != NULL);
 	/* do nothing if font has not changed */
-	if (prefs.editor_font != NULL)
-		if (strcmp(font_name, prefs.editor_font) == 0) return;
+	if (interface_prefs.editor_font != NULL)
+		if (strcmp(font_name, interface_prefs.editor_font) == 0) return;
 
-	g_free(prefs.editor_font);
-	prefs.editor_font = g_strdup(font_name);
+	g_free(interface_prefs.editor_font);
+	interface_prefs.editor_font = g_strdup(font_name);
 
-	font_desc = pango_font_description_from_string(prefs.editor_font);
+	font_desc = pango_font_description_from_string(interface_prefs.editor_font);
 
 	fname = g_strdup_printf("!%s", pango_font_description_get_family(font_desc));
 	size = pango_font_description_get_size(font_desc) / PANGO_SCALE;
@@ -265,7 +267,7 @@
 	}
 	pango_font_description_free(font_desc);
 
-	ui_set_statusbar(TRUE, _("Font updated (%s)."), prefs.editor_font);
+	ui_set_statusbar(TRUE, _("Font updated (%s)."), interface_prefs.editor_font);
 	g_free(fname);
 }
 
@@ -638,7 +640,7 @@
 
 	/* check that there are no other notebook pages before hiding the sidebar completely
 	 * other pages could be e.g. the file browser plugin */
-	if (! prefs.sidebar_openfiles_visible && ! prefs.sidebar_symbol_visible &&
+	if (! interface_prefs.sidebar_openfiles_visible && ! interface_prefs.sidebar_symbol_visible &&
 		gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->treeview_notebook)) <= 2)
 	{
 		ui_prefs.sidebar_visible = FALSE;
@@ -655,9 +657,9 @@
 	ui_widget_show_hide(app->treeview_notebook, ui_prefs.sidebar_visible);
 
 	ui_widget_show_hide(gtk_notebook_get_nth_page(
-					GTK_NOTEBOOK(app->treeview_notebook), 0), prefs.sidebar_symbol_visible);
+					GTK_NOTEBOOK(app->treeview_notebook), 0), interface_prefs.sidebar_symbol_visible);
 	ui_widget_show_hide(gtk_notebook_get_nth_page(
-					GTK_NOTEBOOK(app->treeview_notebook), 1), prefs.sidebar_openfiles_visible);
+					GTK_NOTEBOOK(app->treeview_notebook), 1), interface_prefs.sidebar_openfiles_visible);
 }
 
 
@@ -739,60 +741,60 @@
 {
 	/* show toolbar */
 	GtkWidget *widget = lookup_widget(app->window, "menu_show_toolbar1");
-	if (prefs.toolbar_visible && ! gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))
+	if (toolbar_prefs.visible && ! gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))
 	{	/* will be changed by the toggled callback */
-		prefs.toolbar_visible = ! prefs.toolbar_visible;
+		toolbar_prefs.visible = ! toolbar_prefs.visible;

@@ Diff output truncated at 100000 characters. @@

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