[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemacs-commit] qemacs shell.c buffer.c
From: |
Charlie Gordon |
Subject: |
[Qemacs-commit] qemacs shell.c buffer.c |
Date: |
Sun, 06 Mar 2016 17:42:26 +0000 |
CVSROOT: /sources/qemacs
Module name: qemacs
Changes by: Charlie Gordon <chqrlie> 16/03/06 17:42:26
Modified files:
. : shell.c buffer.c
Log message:
shell: fixed colors for libcaca output
- increase number of ANSI escape arguments to 6
- added debug traces for unhandled escape sequences
- wrap traces before 80 columns in *trace* buffer
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/shell.c?cvsroot=qemacs&r1=1.103&r2=1.104
http://cvs.savannah.gnu.org/viewcvs/qemacs/buffer.c?cvsroot=qemacs&r1=1.99&r2=1.100
Patches:
Index: shell.c
===================================================================
RCS file: /sources/qemacs/qemacs/shell.c,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -b -r1.103 -r1.104
--- shell.c 16 Sep 2015 22:18:25 -0000 1.103
+++ shell.c 6 Mar 2016 17:42:26 -0000 1.104
@@ -41,7 +41,7 @@
static ModeDef shell_mode, pager_mode;
-#define MAX_ESC_PARAMS 3
+#define MAX_ESC_PARAMS 6
enum TTYState {
TTY_STATE_NORM,
@@ -252,6 +252,10 @@
/* VT100 emulation */
+#define TRACE_MSG(m) /* do { if (qe_state.trace_buffer) \
+ eb_trace_bytes(" <-- "m" ", -1, \
+ EB_TRACE_SHELL); } while (0) */
+
static void tty_init(ShellState *s)
{
char *term;
@@ -570,6 +574,7 @@
case 7: /* enter_reverse_mode, enter_standout_mode */
case 27: /* exit_reverse_mode, exit_standout_mode */
/* TODO */
+ TRACE_MSG("unhandled");
break;
case 6: /* SCO light background */
case 8: /* enter_secure_mode */
@@ -578,6 +583,7 @@
case 11: /* SCO acs on (CP437) */
case 12: /* SCO acs on, |0x80 */
case 28: /* exit_secure_mode */
+ TRACE_MSG("unhandled");
break;
case 39: /* orig_pair(1) default-foreground */
TTY_SET_FG_COLOR(s->color, TTY_DEFFG);
@@ -629,6 +635,8 @@
if (c >= 100 && c <= 107) {
/* set bright background color */
TTY_SET_BG_COLOR(s->color, c - 100 + 8);
+ } else {
+ TRACE_MSG("unhandled");
}
break;
}
@@ -902,6 +910,8 @@
}
}
s->cur_offset = offset + len;
+ } else {
+ TRACE_MSG("control");
}
break;
}
@@ -975,6 +985,7 @@
case 'H': // hts (set_tab)
// XXX: do these
default:
+ TRACE_MSG("unhandled");
s->state = TTY_STATE_NORM;
break;
}
@@ -987,6 +998,7 @@
case ESC2('%','G'): /* set utf mode */
case ESC2('%','8'): /* set utf mode */
case ESC2('%','@'): /* reset utf mode */
+ TRACE_MSG("utf mode");
break;
case ESC2('(','A'): /* set charset0 CSET_GBCHR */
case ESC2('(','U'): /* set charset0 CSET_SCOACS */
@@ -1007,6 +1019,7 @@
case ESC2('*','B'):
case ESC2('+','B'):
/* XXX: Todo */
+ TRACE_MSG("unhandled");
break;
case ESC2(']','0'): /* xterm's set-window-title and icon */
case ESC2(']','1'): /* xterm's set-window-title */
@@ -1018,6 +1031,10 @@
case ESC2(']','P'): /* linux set palette */
case ESC2(']','R'): /* linux reset palette */
/* XXX: Todo */
+ TRACE_MSG("linux palette");
+ break;
+ default:
+ TRACE_MSG("unhandled");
break;
}
s->shifted = s->charset[s->cset];
@@ -1058,6 +1075,14 @@
break;
s->state = TTY_STATE_NORM;
switch (ESC2(s->esc1,c)) {
+ /* unhandled:
+ * \^[[4l
+ * \^[[?1h
+ * \^[[?7h
+ * \^[[?25l
+ * \^[[?1000h
+ */
+
case 'h': /* SM: toggle modes to high */
case ESC2('?','h'): /* set terminal mode */
/* 1047: alternate screen
@@ -1074,10 +1099,13 @@
qe_grab_keys(shell_key, s);
/* Should also clear screen */
}
+ } else {
+ TRACE_MSG("set term mode");
}
break;
case 'i': /* MC: Media copy */
case ESC2('?','i'):
+ TRACE_MSG("media copy");
break;
case ESC2('?','l'): /* reset terminal mode */
if (s->esc_params[0] == 1047 ||
@@ -1087,6 +1115,8 @@
qe_ungrab_keys();
s->grab_keys = 0;
}
+ } else {
+ TRACE_MSG("reset term mode");
}
break;
case 'A': /* CUU: move up N lines */
@@ -1120,6 +1150,7 @@
break;
case 'J': /* ED: erase screen or parts of it */
/* 0: to end, 1: from begin, 2: all */
+ TRACE_MSG("erase screen");
//put_status(NULL, "erase screen %d", s->esc_params[0]);
break;
case 'K': /* EL: erase line or parts of it */
@@ -1129,10 +1160,12 @@
break;
case 'L': /* IL: insert lines */
/* TODO! scroll down */
+ TRACE_MSG("insert lines");
//put_status(NULL, "insert lines %d", s->esc_params[0]);
break;
case 'M': /* delete lines */
/* TODO! scroll up */
+ TRACE_MSG("delete lines");
//put_status(NULL, "delete lines %d", s->esc_params[0]);
break;
case '@': /* ICH: insert chars (no cursor update) */
@@ -1157,6 +1190,7 @@
eb_delete(s->b, offset, offset1 - offset);
break;
case 'c': /* DA: terminal type query */
+ TRACE_MSG("term type query");
break;
case 'n': /* DSR: cursor position query */
if (s->esc_params[0] == 6) {
@@ -1172,8 +1206,10 @@
}
break;
case 'g': /* TBC: clear tabs */
+ TRACE_MSG("clear tabs");
break;
case 'r': /* DECSTBM: set scroll margins */
+ TRACE_MSG("set scroll margins");
//put_status(NULL, "set scroll margins %d %d",
// s->esc_params[0], s->esc_params[1]);
break;
@@ -1185,13 +1221,22 @@
}
break;
case 's': /* save cursor */
+ TRACE_MSG("save cursor");
+ break;
case 'u': /* restore cursor */
+ TRACE_MSG("restore cursor");
+ break;
case 't': /* DECSLPP: set page size - ie window height */
/* also used for window changing and reports */
+ TRACE_MSG("set page size");
break;
case 'S': /* SU: SCO scroll up (forward) n lines */
+ TRACE_MSG("scroll up");
+ //put_status(NULL, "scroll up %d", s->esc_params[0]);
+ break;
case 'T': /* SD: SCO scroll down (back) n lines */
- //put_status(NULL, "scroll '%c' %d", c, s->esc_params[0]);
+ TRACE_MSG("scroll down");
+ //put_status(NULL, "scroll down %d", s->esc_params[0]);
break;
case 'X': /* ECH: erase n characters w/o moving cursor */
for (n = s->esc_params[0]; n > 0; n--) {
@@ -1207,6 +1252,7 @@
case ESC2('=','C'): /* set cursor shape */
case ESC2('=','D'): /* set blinking attr on/off */
case ESC2('=','E'): /* set blinking on/off */
+ TRACE_MSG("unhandled");
break;
case ESC2('=','F'): /* select SCO foreground color */
TTY_SET_FG_COLOR(s->color, sco_color[s->esc_params[0] & 15]);
@@ -1215,6 +1261,7 @@
TTY_SET_BG_COLOR(s->color, sco_color[s->esc_params[0] & 15]);
break;
default:
+ TRACE_MSG("unhandled");
break;
}
}
Index: buffer.c
===================================================================
RCS file: /sources/qemacs/qemacs/buffer.c,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -b -r1.99 -r1.100
--- buffer.c 16 Sep 2015 22:18:23 -0000 1.99
+++ buffer.c 6 Mar 2016 17:42:26 -0000 1.100
@@ -913,7 +913,7 @@
p0 = buf;
endp = p0 + size;
-#define MAX_TRACE_WIDTH 1024
+#define MAX_TRACE_WIDTH 76
for (p = p0; p0 < endp; p++) {
while (p >= endp || *p < 32 || *p >= 127 || *p == '\\') {
if (p0 >= endp)
@@ -937,6 +937,10 @@
col += eb_printf(b, "\\%c", c);
} else
if (*p < 32) {
+ //if (*p == '\e' && col > 9) {
+ // eb_write(b, b->total_size, "\n ", 10);
+ // col = 9;
+ //}
col += eb_printf(b, "\\^%c", (*p + '@') & 127);
} else {
col += eb_printf(b, "\\%03o", *p);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs shell.c buffer.c,
Charlie Gordon <=