SF.net SVN: geany:[5278] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Mon Oct 4 14:29:44 UTC 2010
Revision: 5278
http://geany.svn.sourceforge.net/geany/?rev=5278&view=rev
Author: ntrel
Date: 2010-10-04 14:29:44 +0000 (Mon, 04 Oct 2010)
Log Message:
-----------
Read snippet keybindings from system keyfile also.
Add keybinding example to default snippet.conf.
Modified Paths:
--------------
trunk/ChangeLog
trunk/data/snippets.conf
trunk/src/editor.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2010-10-04 14:20:40 UTC (rev 5277)
+++ trunk/ChangeLog 2010-10-04 14:29:44 UTC (rev 5278)
@@ -12,6 +12,9 @@
Add snippet keybindings docs.
* src/highlighting.c, src/utils.h:
Move foreach_strv to utils.h.
+ * src/editor.c, data/snippets.conf:
+ Read snippet keybindings from system keyfile also.
+ Add keybinding example to default snippet.conf.
2010-09-30 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/data/snippets.conf
===================================================================
--- trunk/data/snippets.conf 2010-10-04 14:20:40 UTC (rev 5277)
+++ trunk/data/snippets.conf 2010-10-04 14:29:44 UTC (rev 5278)
@@ -39,6 +39,11 @@
block_cursor=\n{\n\t%cursor%\n}\n%cursor%
#wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
+# Optional keybindings to insert snippets
+# Note: these can be overridden by Geany's configurable keybindings
+[Keybindings]
+#for=<Ctrl>7
+
[C++]
for=for (int i = 0; i < %cursor%; i++)%brace_open%\n%brace_close%
Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c 2010-10-04 14:20:40 UTC (rev 5277)
+++ trunk/src/editor.c 2010-10-04 14:29:44 UTC (rev 5278)
@@ -229,19 +229,19 @@
}
-static void load_kb(GKeyFile *userconfig)
+static const gchar kb_group[] = "Keybindings";
+
+static void add_kb(GKeyFile *keyfile, gchar **keys)
{
- gchar group[] = "Keybindings";
- gsize len, j;
- gchar **keys = g_key_file_get_keys(userconfig, group, &len, NULL);
+ gsize i;
if (!keys)
return;
- for (j = 0; j < len; j++)
+ for (i = 0; i < g_strv_length(keys); i++)
{
guint key;
GdkModifierType mods;
- gchar *accel_string = g_key_file_get_value(userconfig, group, keys[j], NULL);
+ gchar *accel_string = g_key_file_get_value(keyfile, kb_group, keys[i], NULL);
gtk_accelerator_parse(accel_string, &key, &mods);
g_free(accel_string);
@@ -253,9 +253,26 @@
}
gtk_accel_group_connect(snippet_accel_group, key, mods, 0,
g_cclosure_new_swap((GCallback)on_snippet_keybinding_activate,
- g_strdup(keys[j]), (GClosureNotify)g_free));
+ g_strdup(keys[i]), (GClosureNotify)g_free));
}
+}
+
+
+static void load_kb(GKeyFile *sysconfig, GKeyFile *userconfig)
+{
+ gchar **keys = g_key_file_get_keys(userconfig, kb_group, NULL, NULL);
+ gchar **ptr;
+
+ /* remove overridden keys in sys file */
+ foreach_strv(ptr, keys)
+ g_key_file_remove_key(sysconfig, kb_group, *ptr, NULL);
+
+ add_kb(userconfig, keys);
g_strfreev(keys);
+
+ keys = g_key_file_get_keys(sysconfig, kb_group, NULL, NULL);
+ add_kb(sysconfig, keys);
+ g_strfreev(keys);
}
@@ -284,7 +301,7 @@
/* setup snippet keybindings */
snippet_accel_group = gtk_accel_group_new();
gtk_window_add_accel_group(GTK_WINDOW(main_widgets.window), snippet_accel_group);
- load_kb(userconfig);
+ load_kb(sysconfig, userconfig);
g_free(sysconfigfile);
g_free(userconfigfile);
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