JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
cleaning st.info. fixed cvvis.
[st.git] / st.c
diff --git a/st.c b/st.c
index ed5481d..ab43a43 100644 (file)
--- a/st.c
+++ b/st.c
@@ -677,7 +677,8 @@ tsetattr(int *attr, int l) {
                        else if(BETWEEN(attr[i], 100, 107))
                                term.c.attr.fg = attr[i] - 100 + 8;
                        else 
-                               fprintf(stderr, "erresc: gfx attr %d unknown\n", attr[i]); 
+                               fprintf(stderr, "erresc: gfx attr %d unknown\n", attr[i]), csidump();
+                       
                        break;
                }
        }
@@ -854,7 +855,9 @@ csihandle(void) {
                                term.mode |= MODE_WRAP;
                                break;
                        case 12: /* att610 -- Start blinking cursor (IGNORED) */
-                               break;
+                                /* fallthrough for xterm cvvis = CSI [ ? 12 ; 25 h */
+                               if(escseq.narg > 1 && escseq.arg[1] != 25)
+                                       break;
                        case 25:
                                term.c.state &= ~CURSOR_HIDE;
                                break;
@@ -1230,8 +1233,13 @@ xdraws(char *s, Glyph base, int x, int y, int len) {
        XSetForeground(xw.dis, dc.gc, xfg);
        
        if(base.mode & ATTR_GFX)
-               for(i = 0; i < len; i++)
-                       s[i] = gfx[(int)s[i]];
+               for(i = 0; i < len; i++) {
+                       char c = gfx[(unsigned int)s[i] % 256];
+                       if(c)
+                               s[i] = c;
+                       else if(s[i] > 0x5f)
+                               s[i] -= 0x5f;
+               }
 
        XSetFont(xw.dis, dc.gc, base.mode & ATTR_BOLD ? dc.bfont->fid : dc.font->fid);
        XDrawImageString(xw.dis, xw.buf, dc.gc, winx, winy, s, len);