Only in emacs22-22.2+2/src: alloc.c~ diff -ur --exclude TAGS emacs22-22.2+2/src/dispextern.h emacs22-22.2+2-tty-italic/src/dispextern.h --- emacs22-22.2+2/src/dispextern.h 2008-01-10 12:16:14.000000000 +0000 +++ emacs22-22.2+2-tty-italic/src/dispextern.h 2009-05-24 18:01:24.000000000 +0100 @@ -1547,6 +1547,7 @@ color of the TTY. */ unsigned tty_bold_p : 1; unsigned tty_dim_p : 1; + unsigned tty_italic_p : 1; unsigned tty_underline_p : 1; unsigned tty_alt_charset_p : 1; unsigned tty_reverse_p : 1; @@ -2644,6 +2645,7 @@ #define TTY_CAP_DIM 0x08 #define TTY_CAP_BLINK 0x10 #define TTY_CAP_ALT_CHARSET 0x20 +#define TTY_CAP_ITALIC 0x40 /*********************************************************************** diff -ur --exclude TAGS emacs22-22.2+2/src/term.c emacs22-22.2+2-tty-italic/src/term.c --- emacs22-22.2+2/src/term.c 2008-01-10 12:16:15.000000000 +0000 +++ emacs22-22.2+2-tty-italic/src/term.c 2009-05-24 19:00:06.000000000 +0100 @@ -320,6 +320,10 @@ char *TS_enter_dim_mode; +/* "ZH" -- turn on italic mode. */ + +char *TS_enter_italic_mode; + /* "mb" -- enter blinking mode. */ char *TS_enter_blink_mode; @@ -2034,6 +2038,9 @@ if (MAY_USE_WITH_COLORS_P (NC_DIM)) OUTPUT1_IF (TS_enter_dim_mode); + if (face->tty_italic_p) // italic always ok with colours, man 5 terminfo + OUTPUT1_IF (TS_enter_italic_mode); + /* Alternate charset and blinking not yet used. */ if (face->tty_alt_charset_p && MAY_USE_WITH_COLORS_P (NC_ALT_CHARSET)) @@ -2087,6 +2094,7 @@ may not turn off alt-char-mode. */ if (face->tty_bold_p || face->tty_dim_p + || face->tty_italic_p || face->tty_reverse_p || face->tty_alt_charset_p || face->tty_blinking_p @@ -2141,6 +2149,9 @@ TTY_CAPABLE_P_TRY (TTY_CAP_DIM, TS_enter_dim_mode, NC_DIM); TTY_CAPABLE_P_TRY (TTY_CAP_BLINK, TS_enter_blink_mode, NC_BLINK); TTY_CAPABLE_P_TRY (TTY_CAP_ALT_CHARSET, TS_enter_alt_charset_mode, NC_ALT_CHARSET); + // italic does not collide with colours (man 5 terminfo) + if ( (caps & TTY_CAP_ITALIC) && !TS_enter_italic_mode ) + return 0; /* We can do it! */ return 1; @@ -2468,6 +2479,7 @@ TS_exit_underline_mode = tgetstr ("ue", address); TS_enter_bold_mode = tgetstr ("md", address); TS_enter_dim_mode = tgetstr ("mh", address); + TS_enter_italic_mode = tgetstr ("ZH", address); TS_enter_blink_mode = tgetstr ("mb", address); TS_enter_reverse_mode = tgetstr ("mr", address); TS_enter_alt_charset_mode = tgetstr ("as", address); diff -ur --exclude TAGS emacs22-22.2+2/src/xfaces.c emacs22-22.2+2-tty-italic/src/xfaces.c --- emacs22-22.2+2/src/xfaces.c 2008-01-10 12:16:16.000000000 +0000 +++ emacs22-22.2+2-tty-italic/src/xfaces.c 2009-05-24 19:04:54.000000000 +0100 @@ -6020,8 +6020,7 @@ || !UNSPECIFIEDP (attrs[LFACE_SWIDTH_INDEX]) || !UNSPECIFIEDP (attrs[LFACE_OVERLINE_INDEX]) || !UNSPECIFIEDP (attrs[LFACE_STRIKE_THROUGH_INDEX]) - || !UNSPECIFIEDP (attrs[LFACE_BOX_INDEX]) - || !UNSPECIFIEDP (attrs[LFACE_SLANT_INDEX])) + || !UNSPECIFIEDP (attrs[LFACE_BOX_INDEX])) return 0; @@ -6072,6 +6071,16 @@ } + /* italic */ + val = attrs[LFACE_SLANT_INDEX]; + if( !UNSPECIFIEDP (val) ) + { + if (face_attr_equal_p (val, def_attrs[LFACE_SLANT_INDEX])) + return 0; /* same as default */ + else + test_caps |= TTY_CAP_ITALIC; + } + /* Color testing. */ /* Default the color indices in FG_TTY_COLOR and BG_TTY_COLOR, since @@ -7508,7 +7517,7 @@ if (weight > XLFD_WEIGHT_MEDIUM) face->tty_bold_p = 1; if (weight < XLFD_WEIGHT_MEDIUM || slant != XLFD_SLANT_ROMAN) - face->tty_dim_p = 1; + face->tty_italic_p = 1; if (!NILP (attrs[LFACE_UNDERLINE_INDEX])) face->tty_underline_p = 1; if (!NILP (attrs[LFACE_INVERSE_INDEX]))