Wed Dec 11 21:46:19 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
authorJochen Eisinger <coffee@silcnet.org>
Wed, 11 Dec 2002 20:49:21 +0000 (20:49 +0000)
committerJochen Eisinger <coffee@silcnet.org>
Wed, 11 Dec 2002 20:49:21 +0000 (20:49 +0000)
* Fix theme abstracts parsing.  Affected files irssi/default.theme,
  irssi/src/fe-common/core/themes.c

CHANGES
apps/irssi/default.theme
apps/irssi/src/fe-common/core/themes.c

diff --git a/CHANGES b/CHANGES
index 77566b3cb7b7665d39fc80c97aa4c8ccd8fd7328..2b4682324279d08583f931dfcd8feac94172ebb0 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+Wed Dec 11 21:46:19 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
+
+       * Fix theme abstracts parsing.  Affected files irssi/default.theme,
+         irssi/src/fe-common/core/themes.c
+
 Wed Dec 11 20:20:07 EET 2002 Pekka Riikonen <priikone@silcnet.org>
 
        * Fixed close command to use the port correctly when closing
index 311eedebf7ef9af20015dc15a389af4026bf0dc6..1e2dca6f6ec73d1e7dc3571c984991d88b80db64 100644 (file)
@@ -329,7 +329,8 @@ abstracts = {
   privmsgnick_failed = "{privmsgnick {flag_failed}$0}";
   
   ownmsgnick_signed = "{msgnick {flag_signed} $1-}%g";
-  ownprivmsgnick_signed = "->*%c{flag_signed}%n* %g$1-";
+  ownprivmsg_signed = "->*%c{flag_signed}$1-%n* %g";
+  ownprivmsgnick_signed = "->*%c{flag_signed}$0%n* %g$1-";
 };
 
 #
index 068800600f4fbe6180d39bebc9366756a08a121b..437b118faeccf36a8a08eb1b6823c39164ecec22 100644 (file)
@@ -314,7 +314,11 @@ char *theme_format_expand_get(THEME_REC *theme, const char **format)
                        braces++;
                else if (**format == '}')
                        braces--;
-               else {
+               else if ((braces > 1) && (**format == ' ')) {
+                       g_string_append(str, "\\x20");
+                       (*format)++;
+                       continue;
+               } else {
                        theme_format_append_next(theme, str, format,
                                                 'n', 'n',
                                                 &dummy, &dummy, 0);
@@ -341,6 +345,7 @@ static char *theme_format_expand_abstract(THEME_REC *theme,
                                          char default_fg, char default_bg,
                                          int flags)
 {
+       GString *str;
        const char *p, *format;
        char *abstract, *data, *ret;
        int len;
@@ -400,7 +405,21 @@ static char *theme_format_expand_abstract(THEME_REC *theme,
                                   PARSE_FLAG_ONLY_ARGS);
        g_free(abstract);
         g_free(data);
-       abstract = ret;
+       str = g_string_new(NULL);
+       p = ret;
+       while (*p != '\0') {
+               if (*p == '\\') {
+                       int chr;
+                       p++;
+                       chr = expand_escape(&p);
+                       g_string_append_c(str, chr != -1 ? chr : *p);
+               } else
+                       g_string_append_c(str, *p);
+               p++;
+       }
+       g_free(ret);
+       abstract = str->str;
+       g_string_free(str, FALSE);
 
        /* abstract may itself contain abstracts or replaces */
        p = abstract;