[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemacs-commit] qemacs buffer.c qe.c qe.h
From: |
Charlie Gordon |
Subject: |
[Qemacs-commit] qemacs buffer.c qe.c qe.h |
Date: |
Wed, 26 Aug 2015 00:24:15 +0000 |
CVSROOT: /sources/qemacs
Module name: qemacs
Changes by: Charlie Gordon <chqrlie> 15/08/26 00:24:15
Modified files:
. : buffer.c qe.c qe.h
Log message:
buffers: improved tracing function
- add EB_TRACE_COMMAND
- change the format of the *trace* buffer
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/buffer.c?cvsroot=qemacs&r1=1.90&r2=1.91
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.206&r2=1.207
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.203&r2=1.204
Patches:
Index: buffer.c
===================================================================
RCS file: /sources/qemacs/qemacs/buffer.c,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -b -r1.90 -r1.91
--- buffer.c 25 Aug 2015 16:19:42 -0000 1.90
+++ buffer.c 26 Aug 2015 00:24:14 -0000 1.91
@@ -759,56 +759,84 @@
QEmacsState *qs = &qe_state;
EditBuffer *b = qs->trace_buffer;
EditState *e;
- int point;
+ const char *str = NULL;
+ const u8 *p0, *endp, *p;
+ int c, line, col, len, point;
+
+ if (!b)
+ return;
- if (b) {
point = b->total_size;
- if (qs->trace_buffer_state != state) {
- const char *str = NULL;
- switch (qs->trace_buffer_state) {
- case EB_TRACE_TTY:
- str = "|\n";
- break;
- case EB_TRACE_PTY:
- str = "|\n";
- break;
- case EB_TRACE_SHELL:
- str = "|\n";
- break;
- }
- if (str) {
- eb_write(b, b->total_size, str, strlen(str));
+ if (size < 0)
+ size = strlen(buf);
+
+ eb_get_pos(b, &line, &col, point);
+ if (col == 0 || qs->trace_buffer_state != state) {
+ if (col) {
+ eb_insert_uchar(b, b->total_size, '\n');
+ col = 0;
}
qs->trace_buffer_state = state;
- switch (qs->trace_buffer_state) {
+ switch (state) {
case EB_TRACE_TTY:
- str = "--|";
+ str = " tty: ";
break;
case EB_TRACE_PTY:
- str = ">>|";
+ str = " pty: ";
break;
case EB_TRACE_SHELL:
- str = "<<|";
+ str = " shell: ";
+ break;
+ case EB_TRACE_COMMAND:
+ eb_printf(b, "command: %s\n", buf);
+ size = 0;
break;
}
if (str) {
- eb_write(b, b->total_size, str, strlen(str));
+ col += eb_write(b, b->total_size, str, strlen(str));
}
}
-#if 0
- /* CG: could make traces more readable: */
- if (ch < 32 || ch == 127)
- fprintf(stderr, "got %d '^%c'\n", ch, ('@' + ch) & 127);
- else
- fprintf(stderr, "got %d '%c'\n", ch, ch);
-#endif
- eb_write(b, b->total_size, buf, size);
+ p0 = buf;
+ endp = p0 + size;
+#define MAX_TRACE_WIDTH 1024
+ for (p = p0; p0 < endp; p++) {
+ while (p >= endp || *p < 32 || *p >= 127 || *p == '\\') {
+ if (p0 >= endp)
+ break;
+ if (col >= MAX_TRACE_WIDTH) {
+ eb_write(b, b->total_size, "\n ", 10);
+ col = 9;
+ }
+ if (p0 < p) {
+ len = min(p - p0, MAX_TRACE_WIDTH - col);
+ eb_write(b, b->total_size, p0, len);
+ p0 += len;
+ col += len;
+ continue;
+ }
+ if (p < endp) {
+ if ((c = 'n', *p == '\n')
+ || (c = 'r', *p == '\r')
+ || (c = 't', *p == '\t')
+ || (c = '\\', *p == '\\')) {
+ col += eb_printf(b, "\\%c", c);
+ } else
+ if (*p < 32) {
+ col += eb_printf(b, "\\^%c", (*p + '@') & 127);
+ } else {
+ col += eb_printf(b, "\\%03o", *p);
+ }
+ p0 = p + 1;
+ }
+ break;
+ }
+ }
/* If point is visible in window, should keep it so */
+ /* XXX: proper tracking should do this automatically */
e = eb_find_window(b, NULL);
if (e && e->offset == point)
e->offset = b->total_size;
- }
}
/************************************************************/
Index: qe.c
===================================================================
RCS file: /sources/qemacs/qemacs/qe.c,v
retrieving revision 1.206
retrieving revision 1.207
diff -u -b -r1.206 -r1.207
--- qe.c 25 Aug 2015 16:19:43 -0000 1.206
+++ qe.c 26 Aug 2015 00:24:14 -0000 1.207
@@ -4127,6 +4127,9 @@
ExecCmdState *es;
const char *argdesc;
+ if (qe_state.trace_buffer && qe_state.trace_buffer != s->b)
+ eb_trace_bytes(d->name, -1, EB_TRACE_COMMAND);
+
argdesc = d->name + strlen(d->name) + 1;
if (*argdesc == '*') {
argdesc++;
Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.203
retrieving revision 1.204
diff -u -b -r1.203 -r1.204
--- qe.h 25 Aug 2015 16:19:43 -0000 1.203
+++ qe.h 26 Aug 2015 00:24:15 -0000 1.204
@@ -1398,6 +1398,7 @@
#define EB_TRACE_TTY 1
#define EB_TRACE_SHELL 2
#define EB_TRACE_PTY 4
+#define EB_TRACE_COMMAND 8
/* global layout info : DO NOT modify these directly. do_refresh
does it */