about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/config/theme.c2
-rw-r--r--src/config/theme.h1
-rw-r--r--src/ui/console.c1
-rw-r--r--src/ui/mucwin.c33
-rw-r--r--theme_template1
-rw-r--r--themes/aqua1
-rw-r--r--themes/batman1
-rw-r--r--themes/bios1
-rw-r--r--themes/boothj53
-rw-r--r--themes/boothj5_slack3
-rw-r--r--themes/forest1
-rw-r--r--themes/hacker1
-rw-r--r--themes/headache1
-rw-r--r--themes/joker1
-rw-r--r--themes/mono1
-rw-r--r--themes/orange1
-rw-r--r--themes/original1
-rw-r--r--themes/original_bright1
-rw-r--r--themes/shade1
-rw-r--r--themes/spawn1
-rw-r--r--themes/whiteness1
21 files changed, 55 insertions, 3 deletions
diff --git a/src/config/theme.c b/src/config/theme.c
index c8e466d5..414bf2b4 100644
--- a/src/config/theme.c
+++ b/src/config/theme.c
@@ -107,6 +107,7 @@ theme_init(const char *const theme_name)
     g_hash_table_insert(defaults, strdup("receipt.sent"),            strdup("red"));
     g_hash_table_insert(defaults, strdup("roominfo"),                strdup("yellow"));
     g_hash_table_insert(defaults, strdup("roommention"),             strdup("yellow"));
+    g_hash_table_insert(defaults, strdup("roommention.term"),        strdup("yellow"));
     g_hash_table_insert(defaults, strdup("roomtrigger"),             strdup("yellow"));
     g_hash_table_insert(defaults, strdup("online"),                  strdup("green"));
     g_hash_table_insert(defaults, strdup("offline"),                 strdup("red"));
@@ -751,6 +752,7 @@ theme_attrs(theme_item_t attrs)
     case THEME_RECEIPT_SENT:            _theme_prep_fgnd("receipt.sent",            lookup_str, &bold); break;
     case THEME_ROOMINFO:                _theme_prep_fgnd("roominfo",                lookup_str, &bold); break;
     case THEME_ROOMMENTION:             _theme_prep_fgnd("roommention",             lookup_str, &bold); break;
+    case THEME_ROOMMENTION_TERM:        _theme_prep_fgnd("roommention.term",        lookup_str, &bold); break;
     case THEME_ROOMTRIGGER:             _theme_prep_fgnd("roomtrigger",             lookup_str, &bold); break;
     case THEME_ONLINE:                  _theme_prep_fgnd("online",                  lookup_str, &bold); break;
     case THEME_OFFLINE:                 _theme_prep_fgnd("offline",                 lookup_str, &bold); break;
diff --git a/src/config/theme.h b/src/config/theme.h
index 4ec74510..a90fa360 100644
--- a/src/config/theme.h
+++ b/src/config/theme.h
@@ -70,6 +70,7 @@ typedef enum {
     THEME_THEM,
     THEME_ROOMINFO,
     THEME_ROOMMENTION,
+    THEME_ROOMMENTION_TERM,
     THEME_ROOMTRIGGER,
     THEME_ONLINE,
     THEME_OFFLINE,
diff --git a/src/ui/console.c b/src/ui/console.c
index 8d8542a4..00957aae 100644
--- a/src/ui/console.c
+++ b/src/ui/console.c
@@ -2215,6 +2215,7 @@ cons_theme_properties(void)
 
     _cons_theme_prop(THEME_ROOMINFO, "roominfo");
     _cons_theme_prop(THEME_ROOMMENTION, "roommention");
+    _cons_theme_prop(THEME_ROOMMENTION_TERM, "roommention.term");
     _cons_theme_prop(THEME_ROOMTRIGGER, "roomtrigger");
 
     _cons_theme_prop(THEME_ROSTER_HEADER, "roster.header");
diff --git a/src/ui/mucwin.c b/src/ui/mucwin.c
index a24daa59..3d7263f3 100644
--- a/src/ui/mucwin.c
+++ b/src/ui/mucwin.c
@@ -355,6 +355,36 @@ mucwin_history(ProfMucWin *mucwin, const char *const nick, GDateTime *timestamp,
     g_string_free(line, TRUE);
 }
 
+static void
+_mucwin_print_mention(ProfWin *window, const char *const message, const char *const my_nick)
+{
+    char *mynick_lower = g_utf8_strdown(my_nick, -1);
+    char *message_lower = g_utf8_strdown(message, -1);
+    char message_section[strlen(message) + 1];
+
+    int i = 0;
+    while(!g_str_has_prefix(&message_lower[i], mynick_lower) && i < strlen(message)) {
+        message_section[i] = message[i];
+        i++;
+    }
+    message_section[i] = '\0';
+
+    char *mention_section = strndup(&message[i], strlen(my_nick));
+    int used = strlen(message_section) + strlen(mention_section);
+
+    win_print(window, '-', 0, NULL, NO_DATE | NO_ME | NO_EOL, THEME_ROOMMENTION, "", message_section);
+    if (strlen(message) > used) {
+        win_print(window, '-', 0, NULL, NO_DATE | NO_ME | NO_EOL, THEME_ROOMMENTION_TERM, "", mention_section);
+        _mucwin_print_mention(window, &message[used], my_nick);
+    } else {
+        win_print(window, '-', 0, NULL, NO_DATE | NO_ME, THEME_ROOMMENTION_TERM, "", mention_section);
+    }
+
+    free(mention_section);
+    g_free(mynick_lower);
+    g_free(message_lower);
+}
+
 void
 mucwin_message(ProfMucWin *mucwin, const char *const nick, const char *const message, gboolean mention,
     gboolean trigger_found)
@@ -366,7 +396,8 @@ mucwin_message(ProfMucWin *mucwin, const char *const nick, const char *const mes
 
     if (g_strcmp0(nick, my_nick) != 0) {
         if (mention) {
-            win_print(window, '-', 0, NULL, NO_ME, THEME_ROOMMENTION, nick, message);
+            win_print(window, '-', 0, NULL, NO_ME | NO_EOL, THEME_ROOMMENTION, nick, "");
+            _mucwin_print_mention(window, message, my_nick);
         } else if (trigger_found) {
             win_print(window, '-', 0, NULL, NO_ME, THEME_ROOMTRIGGER, nick, message);
         } else {
diff --git a/theme_template b/theme_template
index 926008b6..ba8a45c3 100644
--- a/theme_template
+++ b/theme_template
@@ -45,6 +45,7 @@ gone=
 error=
 roominfo=
 roommention=
+roommention.term=
 roomtrigger=
 me=
 them=
diff --git a/themes/aqua b/themes/aqua
index 6ea11e2c..1a2d7c3d 100644
--- a/themes/aqua
+++ b/themes/aqua
@@ -45,6 +45,7 @@ gone=blue
 error=bold_white
 roominfo=white
 roommention=bold_blue
+roommention.term=bold_blue
 roomtrigger=bold_blue
 me=cyan
 them=white
diff --git a/themes/batman b/themes/batman
index b90fdc23..d61a2eb3 100644
--- a/themes/batman
+++ b/themes/batman
@@ -47,6 +47,7 @@ main.text.them=white
 subscribed=magenta
 unsubscribed=black_bold
 roommention=cyan
+roommention.term=cyan
 roomtrigger=cyan
 roster.header=yellow
 roster.chat=green
diff --git a/themes/bios b/themes/bios
index 262ea9e6..c378ddd8 100644
--- a/themes/bios
+++ b/themes/bios
@@ -45,6 +45,7 @@ gone=bold_red
 error=bold_red
 roominfo=bold_yellow
 roommention=bold_green
+roommention.term=bold_green
 roomtrigger=bold_green
 me=bold_cyan
 them=bold_magenta
diff --git a/themes/boothj5 b/themes/boothj5
index 179e154b..1fee7a27 100644
--- a/themes/boothj5
+++ b/themes/boothj5
@@ -44,7 +44,8 @@ typing=yellow
 gone=red
 error=red
 roominfo=yellow
-roommention=bold_cyan
+roommention=bold_white
+roommention.term=bold_cyan
 roomtrigger=bold_blue
 me=blue
 them=bold_green
diff --git a/themes/boothj5_slack b/themes/boothj5_slack
index 8fa88497..46ff71df 100644
--- a/themes/boothj5_slack
+++ b/themes/boothj5_slack
@@ -44,7 +44,8 @@ typing=yellow
 gone=red
 error=red
 roominfo=yellow
-roommention=bold_cyan
+roommention=bold_white
+roommention.term=bold_cyan
 roomtrigger=bold_blue
 me=blue
 them=bold_green
diff --git a/themes/forest b/themes/forest
index 32344439..37701e2d 100644
--- a/themes/forest
+++ b/themes/forest
@@ -45,6 +45,7 @@ gone=bold_black
 error=bold_black
 roominfo=yellow
 roommention=bold_cyan
+roommention.term=bold_cyan
 roomtrigger=bold_cyan
 me=blue
 them=bold_blue
diff --git a/themes/hacker b/themes/hacker
index 70f65b7a..00a4ec00 100644
--- a/themes/hacker
+++ b/themes/hacker
@@ -45,6 +45,7 @@ gone=green
 error=bold_green
 roominfo=green
 roommention=bold_green
+roommention.term=bold_green
 roomtrigger=bold_green
 me=green
 them=bold_green
diff --git a/themes/headache b/themes/headache
index 3c47e4c2..83cc69d9 100644
--- a/themes/headache
+++ b/themes/headache
@@ -45,6 +45,7 @@ gone=yellow
 error=red
 roominfo=white
 roommention=bold_green
+roommention.term=bold_green
 roomtrigger=bold_green
 me=white
 them=white
diff --git a/themes/joker b/themes/joker
index 49a387ec..30cf5656 100644
--- a/themes/joker
+++ b/themes/joker
@@ -45,6 +45,7 @@ gone=red
 error=red
 roominfo=green
 roommention=green
+roommention.term=green
 roomtrigger=green
 me=magenta
 them=green
diff --git a/themes/mono b/themes/mono
index c6743ab6..48e6a5d5 100644
--- a/themes/mono
+++ b/themes/mono
@@ -45,6 +45,7 @@ gone=white
 error=white
 roominfo=white
 roommention=white
+roommention.term=white
 roomtrigger=white
 me=white
 them=white
diff --git a/themes/orange b/themes/orange
index de988435..51f79d09 100644
--- a/themes/orange
+++ b/themes/orange
@@ -45,6 +45,7 @@ gone=green
 error=red
 roominfo=blue
 roommention=blue
+roommention.term=blue
 roomtrigger=blue
 me=black
 them=black
diff --git a/themes/original b/themes/original
index 85df4c48..84f11c00 100644
--- a/themes/original
+++ b/themes/original
@@ -45,6 +45,7 @@ gone=yellow
 error=red
 roominfo=yellow
 roommention=yellow
+roommention.term=yellow
 roomtrigger=yellow
 me=yellow
 them=green
diff --git a/themes/original_bright b/themes/original_bright
index 49c9d336..e3bb6a52 100644
--- a/themes/original_bright
+++ b/themes/original_bright
@@ -45,6 +45,7 @@ gone=bold_yellow
 error=bold_red
 roominfo=bold_yellow
 roommention=bold_yellow
+roommention.term=bold_yellow
 roomtrigger=bold_yellow
 me=bold_yellow
 them=bold_green
diff --git a/themes/shade b/themes/shade
index 6a2f5729..b6ea758e 100644
--- a/themes/shade
+++ b/themes/shade
@@ -45,6 +45,7 @@ gone=red
 error=red
 roominfo=green
 roommention=green
+roommention.term=green
 roomtrigger=green
 me=bold_black
 them=magenta
diff --git a/themes/spawn b/themes/spawn
index 7b267948..2537bfe3 100644
--- a/themes/spawn
+++ b/themes/spawn
@@ -45,6 +45,7 @@ gone=red
 error=red
 roominfo=green
 roommention=red
+roommention.term=red
 roomtrigger=red
 me=green
 them=yellow
diff --git a/themes/whiteness b/themes/whiteness
index 9799877e..c3cf3777 100644
--- a/themes/whiteness
+++ b/themes/whiteness
@@ -45,6 +45,7 @@ gone=red
 error=red
 roominfo=yellow
 roommention=yellow
+roommention.term=yellow
 roomtrigger=yellow
 me=black
 them=black