Don't cache overridden lexer properties.
Add foreach_strv() to plugin API. Add utils_strv_join(). git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5280 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
parent
0f63274d8b
commit
14d751dd87
@ -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:
|
||||
|
@ -262,7 +262,7 @@ 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 */
|
||||
/* remove overridden keys from system keyfile */
|
||||
foreach_strv(ptr, keys)
|
||||
g_key_file_remove_key(sysconfig, kb_group, *ptr, NULL);
|
||||
|
||||
|
@ -3191,26 +3191,17 @@ static void get_key_values(GKeyFile *config, const gchar *group, gchar **keys, g
|
||||
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)
|
||||
{
|
||||
|
26
src/utils.c
26
src/utils.c
@ -2036,3 +2036,29 @@ gchar **utils_copy_environment(const gchar **exclude_vars, const gchar *first_va
|
||||
}
|
||||
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
|
||||
|
10
src/utils.h
10
src/utils.h
@ -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 @@ void utils_free_pointers(gsize arg_count, ...) G_GNUC_NULL_TERMINATED;
|
||||
|
||||
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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user