keep some glyph modes for the cursor

st currently does not keep any mode for the cursor that was active
in the underlying glyph (e.g. italic text), the mode is always
ATTR_NULL [1].  At [2] you can find a screenshot that shows the
implications.  Other terminals (at least vte-based, such as
XFCE-terminal) keep some modes for the cursor.  I find the current
behaviour very disruptive, so here is a patch that keeps a few
(arbitrarily chosen) modes for the cursor.

[1] http://git.suckless.org/st/tree/st.c#n3963
[2] http://i.imgur.com/R2yCEaC.png
master
Nils Reuße 2017-03-29 18:34:12 +02:00 committed by Roberto E. Vargas Caballero
parent e7ed326d2e
commit f2bfd513b1
1 changed files with 3 additions and 0 deletions

3
x.c
View File

@ -1266,6 +1266,7 @@ xdrawcursor(void)
Glyph g = {' ', ATTR_NULL, defaultbg, defaultcs}, og; Glyph g = {' ', ATTR_NULL, defaultbg, defaultcs}, og;
int ena_sel = sel.ob.x != -1 && sel.alt == IS_SET(MODE_ALTSCREEN); int ena_sel = sel.ob.x != -1 && sel.alt == IS_SET(MODE_ALTSCREEN);
Color drawcol; Color drawcol;
unsigned attr;
LIMIT(oldx, 0, term.col-1); LIMIT(oldx, 0, term.col-1);
LIMIT(oldy, 0, term.row-1); LIMIT(oldy, 0, term.row-1);
@ -1285,6 +1286,8 @@ xdrawcursor(void)
xdrawglyph(og, oldx, oldy); xdrawglyph(og, oldx, oldy);
g.u = term.line[term.c.y][term.c.x].u; g.u = term.line[term.c.y][term.c.x].u;
attr = ATTR_BOLD | ATTR_ITALIC | ATTR_UNDERLINE | ATTR_STRUCK;
g.mode |= term.line[term.c.y][term.c.x].mode & attr;
/* /*
* Select the right color for the right mode. * Select the right color for the right mode.