degesch: show channel prefixes in PRIVMSG lines
This commit is contained in:
parent
62845876d5
commit
0ddc0458ef
42
degesch.c
42
degesch.c
|
@ -918,6 +918,7 @@ struct buffer_line_args
|
||||||
char *object; ///< Object of action
|
char *object; ///< Object of action
|
||||||
char *text; ///< Text of message
|
char *text; ///< Text of message
|
||||||
char *reason; ///< Reason for PART, KICK, QUIT
|
char *reason; ///< Reason for PART, KICK, QUIT
|
||||||
|
char *prefixes; ///< Channel user prefixes
|
||||||
};
|
};
|
||||||
|
|
||||||
struct buffer_line
|
struct buffer_line
|
||||||
|
@ -947,6 +948,7 @@ buffer_line_destroy (struct buffer_line *self)
|
||||||
free (self->args.object);
|
free (self->args.object);
|
||||||
free (self->args.text);
|
free (self->args.text);
|
||||||
free (self->args.reason);
|
free (self->args.reason);
|
||||||
|
free (self->args.prefixes);
|
||||||
free (self);
|
free (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2385,9 +2387,11 @@ buffer_line_display (struct app_context *ctx,
|
||||||
{
|
{
|
||||||
case BUFFER_LINE_PRIVMSG:
|
case BUFFER_LINE_PRIVMSG:
|
||||||
if (line->flags & BUFFER_LINE_HIGHLIGHT)
|
if (line->flags & BUFFER_LINE_HIGHLIGHT)
|
||||||
formatter_add (&f, "#a<#s>#r #m", ATTR_HIGHLIGHT, nick, a->text);
|
formatter_add (&f, "#a<#s#s>#r #m",
|
||||||
|
a->prefixes ? a->prefixes : "", ATTR_HIGHLIGHT, nick, a->text);
|
||||||
else
|
else
|
||||||
formatter_add (&f, "<#c#s#r> #m", nick_color, nick, a->text);
|
formatter_add (&f, "<#s#c#s#r> #m",
|
||||||
|
a->prefixes ? a->prefixes : "", nick_color, nick, a->text);
|
||||||
break;
|
break;
|
||||||
case BUFFER_LINE_ACTION:
|
case BUFFER_LINE_ACTION:
|
||||||
if (line->flags & BUFFER_LINE_HIGHLIGHT)
|
if (line->flags & BUFFER_LINE_HIGHLIGHT)
|
||||||
|
@ -4457,6 +4461,22 @@ irc_handle_privmsg_text (struct server *s,
|
||||||
const char *target = msg->params.vector[0];
|
const char *target = msg->params.vector[0];
|
||||||
struct buffer *buffer = irc_get_buffer_for_message (s, msg, target);
|
struct buffer *buffer = irc_get_buffer_for_message (s, msg, target);
|
||||||
|
|
||||||
|
const char *prefixes = "";
|
||||||
|
if (irc_is_channel (s, target))
|
||||||
|
{
|
||||||
|
char *nickname = irc_cut_nickname (msg->prefix);
|
||||||
|
|
||||||
|
struct user *user;
|
||||||
|
struct channel *channel;
|
||||||
|
struct channel_user *channel_user;
|
||||||
|
if ((user = str_map_find (&s->irc_users, nickname))
|
||||||
|
&& (channel = str_map_find (&s->irc_channels, target))
|
||||||
|
&& (channel_user = irc_channel_get_user (channel, user)))
|
||||||
|
prefixes = channel_user->prefixes.str;
|
||||||
|
|
||||||
|
free (nickname);
|
||||||
|
}
|
||||||
|
|
||||||
if (buffer)
|
if (buffer)
|
||||||
{
|
{
|
||||||
// TODO: some more obvious indication of highlights
|
// TODO: some more obvious indication of highlights
|
||||||
|
@ -4468,7 +4488,8 @@ irc_handle_privmsg_text (struct server *s,
|
||||||
: BUFFER_LINE_PRIVMSG;
|
: BUFFER_LINE_PRIVMSG;
|
||||||
buffer_send (s->ctx, buffer, type, flags,
|
buffer_send (s->ctx, buffer, type, flags,
|
||||||
.who = irc_to_utf8 (s->ctx, msg->prefix),
|
.who = irc_to_utf8 (s->ctx, msg->prefix),
|
||||||
.text = irc_to_utf8 (s->ctx, text->str));
|
.text = irc_to_utf8 (s->ctx, text->str),
|
||||||
|
.prefixes = xstrdup (prefixes));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5374,10 +5395,23 @@ static void
|
||||||
log_outcoming_privmsg (struct server *s,
|
log_outcoming_privmsg (struct server *s,
|
||||||
struct send_autosplit_args *a, struct buffer *buffer, const char *line)
|
struct send_autosplit_args *a, struct buffer *buffer, const char *line)
|
||||||
{
|
{
|
||||||
|
const char *prefixes = "";
|
||||||
|
if (irc_is_channel (s, a->target))
|
||||||
|
{
|
||||||
|
struct user *user;
|
||||||
|
struct channel *channel;
|
||||||
|
struct channel_user *channel_user;
|
||||||
|
if ((user = s->irc_user)
|
||||||
|
&& (channel = str_map_find (&s->irc_channels, a->target))
|
||||||
|
&& (channel_user = irc_channel_get_user (channel, user)))
|
||||||
|
prefixes = channel_user->prefixes.str;
|
||||||
|
}
|
||||||
|
|
||||||
if (buffer && soft_assert (s->irc_user))
|
if (buffer && soft_assert (s->irc_user))
|
||||||
buffer_send (s->ctx, buffer, BUFFER_LINE_PRIVMSG, 0,
|
buffer_send (s->ctx, buffer, BUFFER_LINE_PRIVMSG, 0,
|
||||||
.who = irc_to_utf8 (s->ctx, s->irc_user->nickname),
|
.who = irc_to_utf8 (s->ctx, s->irc_user->nickname),
|
||||||
.text = irc_to_utf8 (s->ctx, line));
|
.text = irc_to_utf8 (s->ctx, line),
|
||||||
|
.prefixes = xstrdup (prefixes));
|
||||||
else
|
else
|
||||||
// TODO: fix logging and encoding
|
// TODO: fix logging and encoding
|
||||||
buffer_send (s->ctx, s->buffer, BUFFER_LINE_STATUS, 0,
|
buffer_send (s->ctx, s->buffer, BUFFER_LINE_STATUS, 0,
|
||||||
|
|
Loading…
Reference in New Issue