[ekg2-commit] r3914 - trunk/ekg: trunk/ekg/protocol.c trunk/ekg/stuff.c trunk/ekg/stuff.h trunk/ekg/themes.c trunk/ekg/vars.c
SVN commit
svn w toxygen.net
Śro, 19 Mar 2008, 18:09:03 CET
Author: peres
Date: 2008-03-19 18:09:02 +0100 (Wed, 19 Mar 2008)
New Revision: 3914
Modified:
trunk/ekg/protocol.c
trunk/ekg/stuff.c
trunk/ekg/stuff.h
trunk/ekg/themes.c
trunk/ekg/vars.c
Log:
Simple, protocol-independent /me display support.
TODO: some variable to disable/enable? session-defined behavior?
Modified: trunk/ekg/protocol.c
===================================================================
--- trunk/ekg/protocol.c 2008-03-18 00:30:40 UTC (rev 3913)
+++ trunk/ekg/protocol.c 2008-03-19 17:09:02 UTC (rev 3914)
@@ -484,13 +484,13 @@
*/
char *message_print(const char *session, const char *sender, const char **rcpts, const char *__text, const uint32_t *format, time_t sent, int class, const char *seq, int dobeep, int secure)
{
- char *class_str, timestamp[100], *text = xstrdup(__text), *emotted = NULL;
+ char *class_str, timestamp[100], *text = xstrdup(__text);
char *securestr = NULL;
const char *target = sender, *user;
time_t now;
session_t *s = session_find(session);
struct conference *c = NULL;
- int empty_theme = 0;
+ int empty_theme = 0, is_me = 0;
if (class & EKG_NO_THEMEBIT) {
empty_theme = 1;
@@ -500,11 +500,19 @@
switch (class) {
case EKG_MSGCLASS_SENT:
case EKG_MSGCLASS_SENT_CHAT:
- class_str = "sent";
+ if (/*config_display_me && */ !xstrncmp(text, "/me ", 4)) {
+ class_str = "sent_me";
+ is_me = 1;
+ } else
+ class_str = "sent";
target = (rcpts) ? rcpts[0] : NULL;
break;
case EKG_MSGCLASS_CHAT:
- class_str = "chat";
+ if (/*config_display_me && */ !xstrncmp(text, "/me ", 4)) {
+ class_str = "chat_me";
+ is_me = 1;
+ } else
+ class_str = "chat";
break;
case EKG_MSGCLASS_SYSTEM:
class_str = "system";
@@ -654,13 +662,16 @@
} else if (class == EKG_MSGCLASS_SYSTEM && config_sound_sysmsg_file)
play_sound(config_sound_sysmsg_file);
- if (config_last & 3 && xstrcmp(class_str, "sent"))
+ if (config_last & 3 && (class < EKG_MSGCLASS_SENT))
last_add(0, sender, now, sent, text);
user = (class < EKG_MSGCLASS_SENT) ? format_user(s, sender) : session_format_n(sender);
- if (config_emoticons && text)
- emotted = emoticon_expand(text);
+ if (config_emoticons && text) {
+ char *tmp = emoticon_expand(text);
+ xfree(text);
+ text = tmp;
+ }
if (empty_theme)
class_str = "empty";
@@ -672,18 +683,19 @@
((class == EKG_MSGCLASS_LOG || class == EKG_MSGCLASS_SENT_LOG) ? 2
: (class == EKG_MSGCLASS_CHAT || class == EKG_MSGCLASS_SENT_CHAT)
|| (!(config_make_window & 4) && (class == EKG_MSGCLASS_MESSAGE || class == EKG_MSGCLASS_SENT))),
- class_str,
- user,
- timestamp,
- (emotted) ? emotted : text,
+ class_str,
+ user,
+ timestamp,
+ (is_me ? text+4 : text),
/* XXX, get_uid() get_nickname() */
- (class >= EKG_MSGCLASS_SENT ? session_alias_uid(s) : get_nickname(s, sender)),
+ (class >= EKG_MSGCLASS_SENT ?
+ (is_me && config_me_nick ? config_me_nick : session_alias_uid(s))
+ : get_nickname(s, sender)),
(class >= EKG_MSGCLASS_SENT ? s->uid : get_uid(s, sender)),
(secure ? securestr : ""));
xfree(text);
xfree(securestr);
- xfree(emotted);
return xstrdup(target);
}
Modified: trunk/ekg/stuff.c
===================================================================
--- trunk/ekg/stuff.c 2008-03-18 00:30:40 UTC (rev 3913)
+++ trunk/ekg/stuff.c 2008-03-19 17:09:02 UTC (rev 3914)
@@ -168,6 +168,7 @@
int config_version = 0;
char *config_exit_exec = NULL;
int config_session_locks = 0;
+char *config_me_nick = NULL;
char *last_search_first_name = NULL;
char *last_search_last_name = NULL;
Modified: trunk/ekg/stuff.h
===================================================================
--- trunk/ekg/stuff.h 2008-03-18 00:30:40 UTC (rev 3913)
+++ trunk/ekg/stuff.h 2008-03-19 17:09:02 UTC (rev 3914)
@@ -260,6 +260,7 @@
extern int config_version;
extern char *config_exit_exec;
extern int config_session_locks;
+extern char *config_me_nick;
extern char *home_dir;
extern char *config_dir;
Modified: trunk/ekg/themes.c
===================================================================
--- trunk/ekg/themes.c 2008-03-18 00:30:40 UTC (rev 3913)
+++ trunk/ekg/themes.c 2008-03-19 17:09:02 UTC (rev 3914)
@@ -1449,12 +1449,14 @@
format_add("confrence,speech", _("message from %1: %3."), 1);
format_add("chat", "%c.-- %n%1 %c%2%n%6%n%c--- -- -%n\n%c|%n %|%3%n\n%|%c`----- ---- --- -- -%n\n", 1);
+ format_add("chat_me", "%) %|%C%4%n %3\n", 1);
format_add("chat_timestamp", "(%Y-%m-%d %H:%M) ", 1);
format_add("chat_timestamp_today", "(%H:%M) ", 1);
format_add("chat_timestamp_now", "", 1);
format_add("chat,speech", _("message from %1: %3."), 1);
format_add("sent", "%b.-- %n%1 %c%2%n%6%n%b--- -- -%n\n%b|%n %|%3%n\n%|%b`----- ---- --- -- -%n\n", 1);
+ format_add("sent_me", "%> %|%G%4%n %3\n", 1);
format_add("sent_timestamp", "(%Y-%m-%d %H:%M) ", 1);
format_add("sent_timestamp_today", "(%H:%M) ", 1);
format_add("sent_timestamp_now", "", 1);
Modified: trunk/ekg/vars.c
===================================================================
--- trunk/ekg/vars.c 2008-03-18 00:30:40 UTC (rev 3913)
+++ trunk/ekg/vars.c 2008-03-19 17:09:02 UTC (rev 3914)
@@ -113,6 +113,7 @@
2, 1, "all windows + configured"), NULL);
variable_add(NULL, ("lastlog_matchcase"), VAR_BOOL, 1, &config_lastlog_case, NULL, NULL, NULL);
variable_add(NULL, ("lastlog_noitems"), VAR_BOOL, 1, &config_lastlog_noitems, NULL, NULL, NULL);
+ variable_add(NULL, ("me_nickname"), VAR_STR, 1, &config_me_nick, NULL, NULL, NULL);
variable_add(NULL, ("make_window"), VAR_MAP, 1, &config_make_window, changed_make_window, variable_map(4, 0, 0, "none", 1, 2, "usefree", 2, 1, "always", 4, 0, "chatonly"), NULL);
variable_add(NULL, ("mesg"), VAR_INT, 1, &config_mesg, changed_mesg, variable_map(3, 0, 0, "no", 1, 2, "yes", 2, 1, "default"), NULL);
variable_add(NULL, ("query_commands"), VAR_BOOL, 1, &config_query_commands, NULL, NULL, NULL);
Więcej informacji o liście dyskusyjnej ekg2-commit