SF.net SVN: geany:[5280] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Tue Oct 5 11:07:10 UTC 2010
Revision: 5280
http://geany.svn.sourceforge.net/geany/?rev=5280&view=rev
Author: ntrel
Date: 2010-10-05 11:07:10 +0000 (Tue, 05 Oct 2010)
Log Message:
-----------
Don't cache overridden lexer properties.
Add foreach_strv() to plugin API.
Add utils_strv_join().
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/editor.c
trunk/src/highlighting.c
trunk/src/utils.c
trunk/src/utils.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2010-10-04 14:33:21 UTC (rev 5279)
+++ trunk/ChangeLog 2010-10-05 11:07:10 UTC (rev 5280)
@@ -1,3 +1,11 @@
+2010-10-05 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/utils.c, src/utils.h, src/highlighting.c, src/editor.c:
+ Don't cache overridden lexer properties.
+ Add foreach_strv() to plugin API.
+ Add utils_strv_join().
+
+
2010-10-01 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/tools.c, doc/geany.txt, doc/geany.html:
Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c 2010-10-04 14:33:21 UTC (rev 5279)
+++ trunk/src/editor.c 2010-10-05 11:07:10 UTC (rev 5280)
@@ -262,7 +262,7 @@
gchar **keys = g_key_file_get_keys(userconfig, kb_group, NULL, NULL);
gchar **ptr;
- /* remove overridden keys in sys file */
+ /* remove overridden keys from system keyfile */
foreach_strv(ptr, keys)
g_key_file_remove_key(sysconfig, kb_group, *ptr, NULL);
Modified: trunk/src/highlighting.c
===================================================================
--- trunk/src/highlighting.c 2010-10-04 14:33:21 UTC (rev 5279)
+++ trunk/src/highlighting.c 2010-10-05 11:07:10 UTC (rev 5280)
@@ -3191,26 +3191,17 @@
static void read_properties(GeanyFiletype *ft, GKeyFile *config, GKeyFile *configh)
{
gchar group[] = "lexer_properties";
- gchar **keys = g_key_file_get_keys(config, group, NULL, NULL);
+ gchar **keys;
gchar **keysh = g_key_file_get_keys(configh, group, NULL, NULL);
+ gchar **ptr;
- /* move/merge keysh into keys */
- if (!keys)
- keys = keysh;
- else if (keysh)
- {
- gchar **strv = g_new0(gchar*, g_strv_length(keys) + g_strv_length(keysh) + 1);
- gchar **read, **write = strv;
+ /* remove overridden keys from system keyfile */
+ foreach_strv(ptr, keysh)
+ g_key_file_remove_key(config, group, *ptr, NULL);
- /* may have same key in each, but home will override so it's OK */
- foreach_strv(read, keys)
- *write++ = *read;
- foreach_strv(read, keysh)
- *write++ = *read;
- g_free(keys);
- g_free(keysh);
- keys = strv;
- }
+ /* merge sys and user keys */
+ keys = g_key_file_get_keys(config, group, NULL, NULL);
+ keys = utils_strv_join(keys, keysh);
if (keys)
{
Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c 2010-10-04 14:33:21 UTC (rev 5279)
+++ trunk/src/utils.c 2010-10-05 11:07:10 UTC (rev 5280)
@@ -2036,3 +2036,29 @@
}
+/* Joins @a first and @a second into a new string vector, freeing the originals.
+ * The original contents are reused. */
+gchar **utils_strv_join(gchar **first, gchar **second)
+{
+ gchar **strv;
+ gchar **rptr, **wptr;
+
+ if (!first)
+ return second;
+ if (!second)
+ return first;
+
+ strv = g_new0(gchar*, g_strv_length(first) + g_strv_length(second) + 1);
+ wptr = strv;
+
+ foreach_strv(rptr, first)
+ *wptr++ = *rptr;
+ foreach_strv(rptr, second)
+ *wptr++ = *rptr;
+
+ g_free(first);
+ g_free(second);
+ return strv;
+}
+
+
Modified: trunk/src/utils.h
===================================================================
--- trunk/src/utils.h 2010-10-04 14:33:21 UTC (rev 5279)
+++ trunk/src/utils.h 2010-10-05 11:07:10 UTC (rev 5280)
@@ -115,8 +115,12 @@
#define foreach_str(char_ptr, string) \
for (char_ptr = string; *char_ptr; char_ptr++)
-/* Iterate NULL-terminated string vector */
-#define foreach_strv foreach_str
+/** Iterates a null-terminated string vector.
+ * @param str_ptr @c gchar** pointer to string element.
+ * @param strv Can be @c NULL.
+ * @since Geany 0.20 */
+#define foreach_strv(str_ptr, strv)\
+ if (!(strv)) {} else foreach_str(str_ptr, strv)
/** Iterates from 0 to @a size.
* @param i Integer.
@@ -214,6 +218,8 @@
gchar **utils_strv_new(const gchar *first, ...) G_GNUC_NULL_TERMINATED;
+gchar **utils_strv_join(gchar **first, gchar **second) G_GNUC_WARN_UNUSED_RESULT;
+
gint utils_mkdir(const gchar *path, gboolean create_parent_dirs);
GSList *utils_get_file_list(const gchar *path, guint *length, GError **error);
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