xC/xP: turn the action asterisk into a rendition

This commit is contained in:
Přemysl Eric Janouch 2022-09-05 22:53:34 +02:00
parent 25ad5ae0ec
commit d7b0b447b7
Signed by: p
GPG Key ID: A0420B94F92B9493
4 changed files with 20 additions and 13 deletions

View File

@ -69,6 +69,7 @@ struct EventMessage {
ERROR, ERROR,
JOIN, JOIN,
PART, PART,
ACTION,
} rendition; } rendition;
// Unix timestamp in seconds. // Unix timestamp in seconds.
u64 when; u64 when;

18
xC.c
View File

@ -1536,6 +1536,7 @@ enum buffer_line_rendition
BUFFER_LINE_ERROR, ///< Error message BUFFER_LINE_ERROR, ///< Error message
BUFFER_LINE_JOIN, ///< Join arrow BUFFER_LINE_JOIN, ///< Join arrow
BUFFER_LINE_PART, ///< Part arrow BUFFER_LINE_PART, ///< Part arrow
BUFFER_LINE_ACTION, ///< Highlighted asterisk
}; };
struct buffer_line struct buffer_line
@ -4475,9 +4476,10 @@ buffer_line_flush (struct buffer_line *line, struct formatter *f, FILE *output,
case BUFFER_LINE_BARE: break; case BUFFER_LINE_BARE: break;
case BUFFER_LINE_INDENT: formatter_add (f, " "); break; case BUFFER_LINE_INDENT: formatter_add (f, " "); break;
case BUFFER_LINE_STATUS: formatter_add (f, " - "); break; case BUFFER_LINE_STATUS: formatter_add (f, " - "); break;
case BUFFER_LINE_ERROR: formatter_add (f, "#a=!=#r ", ATTR_ERROR); break; case BUFFER_LINE_ERROR: formatter_add (f, "#a=!=#r ", ATTR_ERROR); break;
case BUFFER_LINE_JOIN: formatter_add (f, "#a-->#r ", ATTR_JOIN); break; case BUFFER_LINE_JOIN: formatter_add (f, "#a-->#r ", ATTR_JOIN); break;
case BUFFER_LINE_PART: formatter_add (f, "#a<--#r ", ATTR_PART); break; case BUFFER_LINE_PART: formatter_add (f, "#a<--#r ", ATTR_PART); break;
case BUFFER_LINE_ACTION: formatter_add (f, " #a*#r ", ATTR_ACTION); break;
} }
for (struct formatter_item *iter = line->items; iter->type; iter++) for (struct formatter_item *iter = line->items; iter->type; iter++)
@ -4694,16 +4696,16 @@ log_full (struct app_context *ctx, struct server *s, struct buffer *buffer,
#define log_outcoming_privmsg(s, buffer, prefixes, who, text) \ #define log_outcoming_privmsg(s, buffer, prefixes, who, text) \
log_server ((s), (buffer), 0, 0, "<#s#n> #m", (prefixes), (who), (text)) log_server ((s), (buffer), 0, 0, "<#s#n> #m", (prefixes), (who), (text))
#define log_outcoming_action(s, buffer, who, text) \ #define log_outcoming_action(s, buffer, who, text) \
log_server ((s), (buffer), 0, 0, " #a*#r #n #m", \ log_server ((s), (buffer), 0, BUFFER_LINE_ACTION, "#n #m", (who), (text))
ATTR_ACTION, (who), (text))
#define log_outcoming_orphan_notice(s, target, text) \ #define log_outcoming_orphan_notice(s, target, text) \
log_server_status ((s), (s)->buffer, "Notice -> #n: #m", (target), (text)) log_server_status ((s), (s)->buffer, "Notice -> #n: #m", (target), (text))
#define log_outcoming_orphan_privmsg(s, target, text) \ #define log_outcoming_orphan_privmsg(s, target, text) \
log_server_status ((s), (s)->buffer, "MSG(#n): #m", (target), (text)) log_server ((s), (s)->buffer, 0, BUFFER_LINE_STATUS, \
"MSG(#n): #m", (target), (text))
#define log_outcoming_orphan_action(s, target, text) \ #define log_outcoming_orphan_action(s, target, text) \
log_server_status ((s), (s)->buffer, "MSG(#n): #a*#r #m", (target), \ log_server ((s), (s)->buffer, 0, BUFFER_LINE_ACTION, \
ATTR_ACTION, (text)) "MSG(#n): #m", (target), (text))
#define log_ctcp_query(s, target, tag) \ #define log_ctcp_query(s, target, tag) \
log_server_status ((s), (s)->buffer, "CTCP query to #S: #S", target, tag) log_server_status ((s), (s)->buffer, "CTCP query to #S: #S", target, tag)

View File

@ -79,6 +79,9 @@ body {
.mark.part { .mark.part {
color: red; color: red;
} }
.mark.action {
color: darkred;
}
.content { .content {
padding: .1rem .3rem; padding: .1rem .3rem;
white-space: pre-wrap; white-space: pre-wrap;

View File

@ -120,11 +120,12 @@ let Content = {
let line = vnode.children[0] let line = vnode.children[0]
let content = [] let content = []
switch (line.rendition) { switch (line.rendition) {
case 'Indent': content.push(m('span.mark', {}, '')); break case 'Indent': content.push(m('span.mark', {}, '')); break
case 'Status': content.push(m('span.mark', {}, '')); break case 'Status': content.push(m('span.mark', {}, '')); break
case 'Error': content.push(m('span.mark.error', {}, '⚠')); break case 'Error': content.push(m('span.mark.error', {}, '⚠')); break
case 'Join': content.push(m('span.mark.join', {}, '→')); break case 'Join': content.push(m('span.mark.join', {}, '→')); break
case 'Part': content.push(m('span.mark.part', {}, '←')); break case 'Part': content.push(m('span.mark.part', {}, '←')); break
case 'Action': content.push(m('span.mark.action', {}, '✶')); break
} }
let classes = new Set() let classes = new Set()