SF.net SVN: geany: [2738] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Mon Jun 30 16:14:59 UTC 2008


Revision: 2738
          http://geany.svn.sourceforge.net/geany/?rev=2738&view=rev
Author:   eht16
Date:     2008-06-30 09:14:55 -0700 (Mon, 30 Jun 2008)

Log Message:
-----------
Move code to read snippets configuration to editor.c.
Split editor_snippets_free() from editor_finalize().

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/editor.c
    trunk/src/editor.h
    trunk/src/keyfile.c
    trunk/src/keyfile.h
    trunk/src/main.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-06-30 15:59:00 UTC (rev 2737)
+++ trunk/ChangeLog	2008-06-30 16:14:55 UTC (rev 2738)
@@ -8,6 +8,9 @@
    In templates_free_templates() destroy also file template menu items.
    Add reload argument to filetypes_load_config() to allow re-reading
    of the settings.
+ * src/editor.c, src/editor.h, src/keyfile.c, src/keyfile.h, src/main.c:
+   Move code to read snippets configuration to editor.c.
+   Split editor_snippets_free() from editor_finalize().
 
 
 2008-06-30  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c	2008-06-30 15:59:00 UTC (rev 2737)
+++ trunk/src/editor.c	2008-06-30 16:14:55 UTC (rev 2738)
@@ -80,6 +80,95 @@
 static void editor_auto_table(GeanyDocument *doc, gint pos);
 
 
+
+void editor_snippets_free()
+{
+	g_hash_table_destroy(editor_prefs.snippets);
+}
+
+
+void editor_snippets_init(void)
+{
+	gsize i, j, len = 0, len_keys = 0;
+	gchar *sysconfigfile, *userconfigfile;
+	gchar **groups_user, **groups_sys;
+	gchar **keys_user, **keys_sys;
+	gchar *value;
+	GKeyFile *sysconfig = g_key_file_new();
+	GKeyFile *userconfig = g_key_file_new();
+	GHashTable *tmp;
+
+	sysconfigfile = g_strconcat(app->datadir, G_DIR_SEPARATOR_S, "snippets.conf", NULL);
+	userconfigfile = g_strconcat(app->configdir, G_DIR_SEPARATOR_S, "snippets.conf", NULL);
+
+	/* check for old autocomplete.conf files (backwards compatibility) */
+	if (! g_file_test(userconfigfile, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_SYMLINK))
+		setptr(userconfigfile,
+			g_strconcat(app->configdir, G_DIR_SEPARATOR_S, "autocomplete.conf", NULL));
+
+	/* load the actual config files */
+	g_key_file_load_from_file(sysconfig, sysconfigfile, G_KEY_FILE_NONE, NULL);
+	g_key_file_load_from_file(userconfig, userconfigfile, G_KEY_FILE_NONE, NULL);
+
+	/* keys are strings, values are GHashTables, so use g_free and g_hash_table_destroy */
+	editor_prefs.snippets =
+		g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_hash_table_destroy);
+
+	/* first read all globally defined auto completions */
+	groups_sys = g_key_file_get_groups(sysconfig, &len);
+	for (i = 0; i < len; i++)
+	{
+		keys_sys = g_key_file_get_keys(sysconfig, groups_sys[i], &len_keys, NULL);
+		/* create new hash table for the read section (=> filetype) */
+		tmp = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+		g_hash_table_insert(editor_prefs.snippets, g_strdup(groups_sys[i]), tmp);
+
+		for (j = 0; j < len_keys; j++)
+		{
+			g_hash_table_insert(tmp, g_strdup(keys_sys[j]),
+						utils_get_setting_string(sysconfig, groups_sys[i], keys_sys[j], ""));
+		}
+		g_strfreev(keys_sys);
+	}
+
+	/* now read defined completions in user's configuration directory and add / replace them */
+	groups_user = g_key_file_get_groups(userconfig, &len);
+	for (i = 0; i < len; i++)
+	{
+		keys_user = g_key_file_get_keys(userconfig, groups_user[i], &len_keys, NULL);
+
+		tmp = g_hash_table_lookup(editor_prefs.snippets, groups_user[i]);
+		if (tmp == NULL)
+		{	/* new key found, create hash table */
+			tmp = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+			g_hash_table_insert(editor_prefs.snippets, g_strdup(groups_user[i]), tmp);
+		}
+		for (j = 0; j < len_keys; j++)
+		{
+			value = g_hash_table_lookup(tmp, keys_user[j]);
+			if (value == NULL)
+			{	/* value = NULL means the key doesn't yet exist, so insert */
+				g_hash_table_insert(tmp, g_strdup(keys_user[j]),
+						utils_get_setting_string(userconfig, groups_user[i], keys_user[j], ""));
+			}
+			else
+			{	/* old key and value will be freed by destroy function (g_free) */
+				g_hash_table_replace(tmp, g_strdup(keys_user[j]),
+						utils_get_setting_string(userconfig, groups_user[i], keys_user[j], ""));
+			}
+		}
+		g_strfreev(keys_user);
+	}
+
+	g_free(sysconfigfile);
+	g_free(userconfigfile);
+	g_strfreev(groups_sys);
+	g_strfreev(groups_user);
+	g_key_file_free(sysconfig);
+	g_key_file_free(userconfig);
+}
+
+
 /* calls the edit popup menu in the editor */
 static gboolean
 on_editor_button_press_event           (GtkWidget *widget,
@@ -2860,8 +2949,6 @@
 
 void editor_finalize()
 {
-	g_hash_table_destroy(editor_prefs.snippets);
-
 	scintilla_release_resources();
 }
 

Modified: trunk/src/editor.h
===================================================================
--- trunk/src/editor.h	2008-06-30 15:59:00 UTC (rev 2737)
+++ trunk/src/editor.h	2008-06-30 16:14:55 UTC (rev 2738)
@@ -154,7 +154,10 @@
 
 void editor_finalize(void);
 
+void editor_snippets_init(void);
 
+void editor_snippets_free(void);
+
 /* General editing functions */
 
 void editor_find_current_word(ScintillaObject *sci, gint pos, gchar *word, size_t wordlen,

Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c	2008-06-30 15:59:00 UTC (rev 2737)
+++ trunk/src/keyfile.c	2008-06-30 16:14:55 UTC (rev 2738)
@@ -1093,84 +1093,3 @@
 	g_key_file_free(userconfig);
 }
 
-
-void configuration_read_snippets(void)
-{
-	gsize i, j, len = 0, len_keys = 0;
-	gchar *sysconfigfile, *userconfigfile;
-	gchar **groups_user, **groups_sys;
-	gchar **keys_user, **keys_sys;
-	gchar *value;
-	GKeyFile *sysconfig = g_key_file_new();
-	GKeyFile *userconfig = g_key_file_new();
-	GHashTable *tmp;
-
-	sysconfigfile = g_strconcat(app->datadir, G_DIR_SEPARATOR_S, "snippets.conf", NULL);
-	userconfigfile = g_strconcat(app->configdir, G_DIR_SEPARATOR_S, "snippets.conf", NULL);
-
-	/* check for old autocomplete.conf files (backwards compatibility) */
-	if (! g_file_test(userconfigfile, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_SYMLINK))
-		setptr(userconfigfile,
-			g_strconcat(app->configdir, G_DIR_SEPARATOR_S, "autocomplete.conf", NULL));
-
-	/* load the actual config files */
-	g_key_file_load_from_file(sysconfig, sysconfigfile, G_KEY_FILE_NONE, NULL);
-	g_key_file_load_from_file(userconfig, userconfigfile, G_KEY_FILE_NONE, NULL);
-
-	/* keys are strings, values are GHashTables, so use g_free and g_hash_table_destroy */
-	editor_prefs.snippets =
-		g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_hash_table_destroy);
-
-	/* first read all globally defined auto completions */
-	groups_sys = g_key_file_get_groups(sysconfig, &len);
-	for (i = 0; i < len; i++)
-	{
-		keys_sys = g_key_file_get_keys(sysconfig, groups_sys[i], &len_keys, NULL);
-		/* create new hash table for the read section (=> filetype) */
-		tmp = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
-		g_hash_table_insert(editor_prefs.snippets, g_strdup(groups_sys[i]), tmp);
-
-		for (j = 0; j < len_keys; j++)
-		{
-			g_hash_table_insert(tmp, g_strdup(keys_sys[j]),
-						utils_get_setting_string(sysconfig, groups_sys[i], keys_sys[j], ""));
-		}
-		g_strfreev(keys_sys);
-	}
-
-	/* now read defined completions in user's configuration directory and add / replace them */
-	groups_user = g_key_file_get_groups(userconfig, &len);
-	for (i = 0; i < len; i++)
-	{
-		keys_user = g_key_file_get_keys(userconfig, groups_user[i], &len_keys, NULL);
-
-		tmp = g_hash_table_lookup(editor_prefs.snippets, groups_user[i]);
-		if (tmp == NULL)
-		{	/* new key found, create hash table */
-			tmp = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
-			g_hash_table_insert(editor_prefs.snippets, g_strdup(groups_user[i]), tmp);
-		}
-		for (j = 0; j < len_keys; j++)
-		{
-			value = g_hash_table_lookup(tmp, keys_user[j]);
-			if (value == NULL)
-			{	/* value = NULL means the key doesn't yet exist, so insert */
-				g_hash_table_insert(tmp, g_strdup(keys_user[j]),
-						utils_get_setting_string(userconfig, groups_user[i], keys_user[j], ""));
-			}
-			else
-			{	/* old key and value will be freed by destroy function (g_free) */
-				g_hash_table_replace(tmp, g_strdup(keys_user[j]),
-						utils_get_setting_string(userconfig, groups_user[i], keys_user[j], ""));
-			}
-		}
-		g_strfreev(keys_user);
-	}
-
-	g_free(sysconfigfile);
-	g_free(userconfigfile);
-	g_strfreev(groups_sys);
-	g_strfreev(groups_user);
-	g_key_file_free(sysconfig);
-	g_key_file_free(userconfig);
-}

Modified: trunk/src/keyfile.h
===================================================================
--- trunk/src/keyfile.h	2008-06-30 15:59:00 UTC (rev 2737)
+++ trunk/src/keyfile.h	2008-06-30 16:14:55 UTC (rev 2738)
@@ -42,8 +42,6 @@
 
 void configuration_read_filetype_extensions(void);
 
-void configuration_read_snippets(void);
-
 /* set some settings which are already read from the config file, but need other things, like the
  * realisation of the main window */
 void configuration_apply_settings(void);

Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c	2008-06-30 15:59:00 UTC (rev 2737)
+++ trunk/src/main.c	2008-06-30 16:14:55 UTC (rev 2738)
@@ -834,7 +834,7 @@
 	document_init_doclist();
 	treeviews_init();
 	configuration_read_filetype_extensions();
-	configuration_read_snippets();
+	editor_snippets_init();
 
 	/* set window icon */
 	{
@@ -962,6 +962,7 @@
 	document_finalize();
 	symbols_finalize();
 	editor_finalize();
+	editor_snippets_free();
 	encodings_finalize();
 
 	tm_workspace_free(TM_WORK_OBJECT(app->tm_workspace));


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