Revision: 4445 http://geany.svn.sourceforge.net/geany/?rev=4445&view=rev Author: ntrel Date: 2009-11-24 16:22:14 +0000 (Tue, 24 Nov 2009)
Log Message: ----------- Fix setting filetype properties when both the system and the user file have properties set.
Modified Paths: -------------- trunk/ChangeLog trunk/src/highlighting.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2009-11-24 15:47:44 UTC (rev 4444) +++ trunk/ChangeLog 2009-11-24 16:22:14 UTC (rev 4445) @@ -3,6 +3,9 @@ * src/highlighting.c: Make stylesets take a ft_id argument so they can be reused fully with custom filetypes, so custom styles and keywords can be set. + * src/highlighting.c: + Fix setting filetype properties when both the system and the user file + have properties set.
2009-11-23 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/src/highlighting.c =================================================================== --- trunk/src/highlighting.c 2009-11-24 15:47:44 UTC (rev 4444) +++ trunk/src/highlighting.c 2009-11-24 16:22:14 UTC (rev 4445) @@ -3114,17 +3114,36 @@ }
+#define foreach_strv(strptr, strv) \ + for (strptr = strv; *strptr; strptr++) + 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 **keysh = g_key_file_get_keys(configh, group, NULL, NULL);
+ /* move/merge keysh into keys */ if (!keys) - keys = g_key_file_get_keys(configh, group, NULL, NULL); + keys = keysh; + else if (keysh) + { + gchar **strv = g_new0(gchar*, g_strv_length(keys) + g_strv_length(keysh) + 1); + gchar **read, **write = strv;
+ /* 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; + } + if (keys) { - gchar **values = g_new0(gchar*, g_strv_length(keys)); + gchar **values = g_new0(gchar*, g_strv_length(keys) + 1);
style_sets[ft->id].property_keys = keys; style_sets[ft->id].property_values = values;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.