[geany/geany] 2fe42b: Support [named_colors] in filetypes.* and color schemes

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


Branch:      refs/heads/document-messages
Author:      Matthew Brush <matt at geany.org>
Committer:   Matthew Brush <matt at geany.org>
Date:        Sun, 25 Dec 2011 22:34:04
Commit:      2fe42bfc0cffecf1310cabe1ee5ded7f6be29420
             https://github.com/geany/geany/commit/2fe42bfc0cffecf1310cabe1ee5ded7f6be29420

Log Message:
-----------
Support [named_colors] in filetypes.* and color schemes


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

Modified: src/highlighting.c
25 files changed, 18 insertions(+), 7 deletions(-)
===================================================================
@@ -210,10 +210,11 @@ static gboolean read_named_style(const gchar *named_style, GeanyLexerStyle *styl
  * an abbreviated HTML color (ex. #09c) or a hex string color
  * (ex. 0x0099cc). The result of the conversion is stored into the
  * location pointed to by `clr`. */
-static void parse_color(const gchar *str, gint *clr)
+static void parse_color(GKeyFile *kf, const gchar *str, gint *clr)
 {
 	gint c;
 	gchar hex_clr[9] = { 0 };
+	gchar *named_color = NULL;
 	const gchar *start;
 
 	g_return_if_fail(clr != NULL);
@@ -221,9 +222,13 @@ static void parse_color(const gchar *str, gint *clr)
 	if (G_UNLIKELY(! NZV(str)))
 		return;
 
+	named_color = g_key_file_get_string(kf, "named_colors", str, NULL);
+	if  (named_color)
+		str = named_color;
+
 	if (str[0] == '#')
 		start = str + 1;
-	else if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
+	else if (strlen(str) > 1 && str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
 		start = str + 2;
 	else
 		start = str;
@@ -236,6 +241,8 @@ static void parse_color(const gchar *str, gint *clr)
 	else
 		snprintf(hex_clr, 9, "0x%s", start);
 
+	g_free(named_color);
+
 	c = utils_strtod(hex_clr, NULL, FALSE);
 
 	if (c > -1)
@@ -247,7 +254,7 @@ static void parse_color(const gchar *str, gint *clr)
 }
 
 
-static void parse_keyfile_style(gchar **list,
+static void parse_keyfile_style(GKeyFile *kf, gchar **list,
 		const GeanyLexerStyle *default_style, GeanyLexerStyle *style)
 {
 	gsize len;
@@ -280,9 +287,9 @@ static void parse_keyfile_style(gchar **list,
 			case 3:
 				style->bold = utils_atob(list[2]);
 			case 2:
-				parse_color(list[1], &style->background);
+				parse_color(kf, list[1], &style->background);
 			case 1:
-				parse_color(list[0], &style->foreground);
+				parse_color(kf, list[0], &style->foreground);
 		}
 	}
 }
@@ -301,9 +308,13 @@ static void get_keyfile_style(GKeyFile *config, GKeyFile *configh,
 
 	list = g_key_file_get_string_list(configh, "styling", key_name, &len, NULL);
 	if (list == NULL)
+	{
 		list = g_key_file_get_string_list(config, "styling", key_name, &len, NULL);
+		parse_keyfile_style(config, list, &gsd_default, style);
+	}
+	else
+		parse_keyfile_style(configh, list, &gsd_default, style);
 
-	parse_keyfile_style(list, &gsd_default, style);
 	g_strfreev(list);
 }
 
@@ -467,7 +478,7 @@ static void add_named_style(GKeyFile *config, const gchar *key)
 	{
 		GeanyLexerStyle *style = g_new0(GeanyLexerStyle, 1);
 
-		parse_keyfile_style(list, &gsd_default, style);
+		parse_keyfile_style(config, list, &gsd_default, style);
 		g_hash_table_insert(named_style_hash, g_strdup(key), style);
 	}
 	g_strfreev(list);


@@ 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