degesch: add support for crossed-out text
Assuming that sgr0 includes rmxx behaviour, which should be true.
This commit is contained in:
parent
f9ef123171
commit
529a46ad41
31
degesch.c
31
degesch.c
|
@ -2761,11 +2761,12 @@ init_colors (struct app_context *ctx)
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
TEXT_BOLD = 1 << 0,
|
TEXT_BOLD = 1 << 0,
|
||||||
TEXT_ITALIC = 1 << 1,
|
TEXT_ITALIC = 1 << 1,
|
||||||
TEXT_UNDERLINE = 1 << 2,
|
TEXT_UNDERLINE = 1 << 2,
|
||||||
TEXT_INVERSE = 1 << 3,
|
TEXT_INVERSE = 1 << 3,
|
||||||
TEXT_BLINK = 1 << 4
|
TEXT_BLINK = 1 << 4,
|
||||||
|
TEXT_CROSSED_OUT = 1 << 5
|
||||||
};
|
};
|
||||||
|
|
||||||
struct attr_printer
|
struct attr_printer
|
||||||
|
@ -2939,9 +2940,14 @@ attr_printer_apply (struct attr_printer *self,
|
||||||
0, // blank
|
0, // blank
|
||||||
0, // protect
|
0, // protect
|
||||||
0)); // acs
|
0)); // acs
|
||||||
if (enter_italics_mode && (text_attrs & TEXT_ITALIC))
|
if ((text_attrs & TEXT_ITALIC) && enter_italics_mode)
|
||||||
attr_printer_tputs (self, enter_italics_mode);
|
attr_printer_tputs (self, enter_italics_mode);
|
||||||
|
|
||||||
|
char *smxx = NULL;
|
||||||
|
if ((text_attrs & TEXT_CROSSED_OUT)
|
||||||
|
&& (smxx = tigetstr ("smxx")) && smxx != (char *) -1)
|
||||||
|
attr_printer_tputs (self, smxx);
|
||||||
|
|
||||||
if (fg >= 0)
|
if (fg >= 0)
|
||||||
attr_printer_tputs (self, g_terminal.color_set_fg[fg]);
|
attr_printer_tputs (self, g_terminal.color_set_fg[fg]);
|
||||||
if (bg >= 0)
|
if (bg >= 0)
|
||||||
|
@ -3199,10 +3205,12 @@ formatter_parse_mirc (struct formatter *self, const char *s)
|
||||||
|
|
||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
case '\x02': FORMATTER_ADD_SIMPLE (self, BOLD); break;
|
case '\x02': FORMATTER_ADD_SIMPLE (self, BOLD); break;
|
||||||
case '\x1d': FORMATTER_ADD_SIMPLE (self, ITALIC); break;
|
case '\x11': /* monospace, N/A */ break;
|
||||||
case '\x1f': FORMATTER_ADD_SIMPLE (self, UNDERLINE); break;
|
case '\x1d': FORMATTER_ADD_SIMPLE (self, ITALIC); break;
|
||||||
case '\x16': FORMATTER_ADD_SIMPLE (self, INVERSE); break;
|
case '\x1e': FORMATTER_ADD_SIMPLE (self, CROSSED_OUT); break;
|
||||||
|
case '\x1f': FORMATTER_ADD_SIMPLE (self, UNDERLINE); break;
|
||||||
|
case '\x16': FORMATTER_ADD_SIMPLE (self, INVERSE); break;
|
||||||
|
|
||||||
case '\x03':
|
case '\x03':
|
||||||
s = formatter_parse_mirc_color (self, s);
|
s = formatter_parse_mirc_color (self, s);
|
||||||
|
@ -13523,6 +13531,9 @@ process_mirc_escape (const struct pollfd *fd, struct app_context *ctx)
|
||||||
case 'i' ^ 96:
|
case 'i' ^ 96:
|
||||||
case 'i':
|
case 'i':
|
||||||
case ']': CALL_ (ctx->input, insert, "\x1d"); break;
|
case ']': CALL_ (ctx->input, insert, "\x1d"); break;
|
||||||
|
case 'x' ^ 96:
|
||||||
|
case 'x':
|
||||||
|
case '^': CALL_ (ctx->input, insert, "\x1e"); break;
|
||||||
case 'u' ^ 96:
|
case 'u' ^ 96:
|
||||||
case 'u':
|
case 'u':
|
||||||
case '_': CALL_ (ctx->input, insert, "\x1f"); break;
|
case '_': CALL_ (ctx->input, insert, "\x1f"); break;
|
||||||
|
|
Loading…
Reference in New Issue