- if ((next_c != 0) && (next_c != g_utf8_get_char ("\n")))
- str = g_string_append_c (str, '\n');
+ if ((next_c != 0) && (next_c != g_utf8_get_char ("\n"))) {
+ gchar *last_separator = MAX (g_utf8_strrchr(str->str, -1, g_utf8_get_char (",")),
+ g_utf8_strrchr(str->str, -1, g_utf8_get_char (";")));
+ if (last_separator) {
+ gchar *last_at = g_utf8_strrchr (str->str, -1, g_utf8_get_char ("@"));
+ if (last_at) {
+ if (last_at > last_separator)
+ str = g_string_append_c (str, '\n');
+ }
+ } else {
+ if (g_utf8_strrchr (str->str, -1, g_utf8_get_char ("@")))
+ str = g_string_append_c (str, '\n');
+ }
+ }