[geany/geany] b347b4: Improve handling of named styles and named colors

Matthew Brush git-noreply at xxxxx
Thu Jul 26 00:02:29 UTC 2012


Branch:      refs/heads/document-messages
Author:      Matthew Brush <matt at geany.org>
Committer:   Matthew Brush <matt at geany.org>
Date:        Mon, 26 Dec 2011 08:37:16
Commit:      b347b4a6111275ea46a4f3911f0e5530c9199c32
             https://github.com/geany/geany/commit/b347b4a6111275ea46a4f3911f0e5530c9199c32

Log Message:
-----------
Improve handling of named styles and named colors


Modified Paths:
--------------
    src/highlighting.c

Modified: src/highlighting.c
39 files changed, 29 insertions(+), 10 deletions(-)
===================================================================
@@ -231,7 +231,11 @@ static void parse_color(GKeyFile *kf, const gchar *str, gint *clr)
 	else if (strlen(str) > 1 && str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
 		start = str + 2;
 	else
-		start = str;
+	{
+		geany_debug("Bad color '%s'", str);
+		g_free(named_color);
+		return;
+	}
 
 	if (strlen(start) == 3)
 	{
@@ -258,7 +262,6 @@ static void parse_keyfile_style(GKeyFile *kf, gchar **list,
 		const GeanyLexerStyle *default_style, GeanyLexerStyle *style)
 {
 	gsize len;
-	gchar *str;
 
 	g_return_if_fail(default_style);
 	g_return_if_fail(style);
@@ -269,15 +272,31 @@ static void parse_keyfile_style(GKeyFile *kf, gchar **list,
 		return;
 
 	len = g_strv_length(list);
-
-	str = list[0];
-
-	/* It might be a named style so try and parse it as such */
-	if (len == 1 && isalpha(str[0]))
+	if (len == 0)
+		return;
+	else if (len == 1)
 	{
-		if (read_named_style(str, style))
-			return;
-		/* It must start with a named color (or error), fall through */
+		gchar **items = g_strsplit(list[0], ",", 0);
+		if (items != NULL)
+		{
+			if (g_strv_length(items) > 0)
+			{
+				if (g_hash_table_lookup(named_style_hash, items[0]) != NULL)
+				{
+					if (!read_named_style(list[0], style))
+						geany_debug("Unable to read named style '%s'", items[0]);
+					g_strfreev(items);
+					return;
+				}
+				else if (strchr(list[0], ',') != NULL)
+				{
+					geany_debug("Unknown named style '%s'", items[0]);
+					g_strfreev(items);
+					return;
+				}
+			}
+			g_strfreev(items);
+		}
 	}
 
 	switch (len)


@@ Diff output truncated at 100000 characters. @@


--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).



More information about the Commits mailing list