From f23e17f2eac3f506afe9a1e44302112cc363b59f Mon Sep 17 00:00:00 2001 From: james <> Date: Sun, 2 Mar 2008 10:37:56 +0000 Subject: *** empty log message *** --- src/ansi.c | 699 +++++++++++++++++++++++++++---------------------------------- 1 file changed, 306 insertions(+), 393 deletions(-) (limited to 'src/ansi.c') diff --git a/src/ansi.c b/src/ansi.c index c259794..6ca75b7 100644 --- a/src/ansi.c +++ b/src/ansi.c @@ -10,6 +10,9 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.39 2008/03/02 10:37:56 james + * *** empty log message *** + * * Revision 1.38 2008/03/02 10:27:24 james * *** empty log message *** * @@ -138,81 +141,52 @@ ansi_move (ANSI * a, CRT_Pos p) // a->pos.x = ANSI_INVAL; - if (a->pos.x != ANSI_INVAL) - { + if (a->pos.x != ANSI_INVAL) { - if ((!dx) && (!dy)) - return; - - if (!dy) - { - if (dx == 1) - { - a->terminal->xmit (a->terminal, "\033[C", 3); - } - else if (dx == -1) - { - a->terminal->xmit (a->terminal, "\033[D", 3); - } - else - { - n = snprintf (buf, sizeof (buf), "\033[%dG", p.x + 1); - a->terminal->xmit (a->terminal, buf, n); - } - } - else if (!dx) - { - if (dy == -1) - { - a->terminal->xmit (a->terminal, "\033[A", 3); - } - else if (dy == 1) - { - a->terminal->xmit (a->terminal, "\033[B", 3); - } - else if (dy < 0) - { - n = snprintf (buf, sizeof (buf), "\033[%dA", -dy); - a->terminal->xmit (a->terminal, buf, n); - } - else - { - n = snprintf (buf, sizeof (buf), "\033[%dB", dy); - a->terminal->xmit (a->terminal, buf, n); - } - } - else if (!p.x) - { - if (dy == 1) - { - a->terminal->xmit (a->terminal, "\033[E", 3); - } - else if (dy == -1) - { - a->terminal->xmit (a->terminal, "\033[F", 3); - } - else if (dy > 0) - { - n = snprintf (buf, sizeof (buf), "\033[%dE", dy); - a->terminal->xmit (a->terminal, buf, n); - } - else - { - n = snprintf (buf, sizeof (buf), "\033[%dF", -dy); - a->terminal->xmit (a->terminal, buf, n); - } - } - else - { - n = snprintf (buf, sizeof (buf), "\033[%d;%dH", p.y + 1, p.x + 1); - a->terminal->xmit (a->terminal, buf, n); - } - } - else - { + if ((!dx) && (!dy)) + return; + + if (!dy) { + if (dx == 1) { + a->terminal->xmit (a->terminal, "\033[C", 3); + } else if (dx == -1) { + a->terminal->xmit (a->terminal, "\033[D", 3); + } else { + n = snprintf (buf, sizeof (buf), "\033[%dG", p.x + 1); + a->terminal->xmit (a->terminal, buf, n); + } + } else if (!dx) { + if (dy == -1) { + a->terminal->xmit (a->terminal, "\033[A", 3); + } else if (dy == 1) { + a->terminal->xmit (a->terminal, "\033[B", 3); + } else if (dy < 0) { + n = snprintf (buf, sizeof (buf), "\033[%dA", -dy); + a->terminal->xmit (a->terminal, buf, n); + } else { + n = snprintf (buf, sizeof (buf), "\033[%dB", dy); + a->terminal->xmit (a->terminal, buf, n); + } + } else if (!p.x) { + if (dy == 1) { + a->terminal->xmit (a->terminal, "\033[E", 3); + } else if (dy == -1) { + a->terminal->xmit (a->terminal, "\033[F", 3); + } else if (dy > 0) { + n = snprintf (buf, sizeof (buf), "\033[%dE", dy); + a->terminal->xmit (a->terminal, buf, n); + } else { + n = snprintf (buf, sizeof (buf), "\033[%dF", -dy); + a->terminal->xmit (a->terminal, buf, n); + } + } else { n = snprintf (buf, sizeof (buf), "\033[%d;%dH", p.y + 1, p.x + 1); a->terminal->xmit (a->terminal, buf, n); } + } else { + n = snprintf (buf, sizeof (buf), "\033[%d;%dH", p.y + 1, p.x + 1); + a->terminal->xmit (a->terminal, buf, n); + } a->pos = p; } @@ -224,14 +198,11 @@ ansi_showhide_cursor (ANSI * a, int hide) if (a->hide_cursor == hide) return; - if (hide) - { - a->terminal->xmit (a->terminal, "\033[?25l", 6); - } - else - { - a->terminal->xmit (a->terminal, "\033[?25h", 6); - } + if (hide) { + a->terminal->xmit (a->terminal, "\033[?25l", 6); + } else { + a->terminal->xmit (a->terminal, "\033[?25h", 6); + } a->hide_cursor = hide; } @@ -253,37 +224,30 @@ ansi_set_color (ANSI * a, int color) int i; int fg, bg; - if ((a->color == ANSI_INVAL) || (color != a->color)) - { - fg = CRT_COLOR_FG (color); - bg = CRT_COLOR_BG (color); - - if (fg & CRT_COLOR_INTENSITY) - { - fg += 90; - } - else - { - fg += 30; - } - - if (bg & CRT_COLOR_INTENSITY) - { - bg += 100; - } - else - { - bg += 40; - } - - i = sprintf (buf, "\033[%d;%dm", fg, bg); + if ((a->color == ANSI_INVAL) || (color != a->color)) { + fg = CRT_COLOR_FG (color); + bg = CRT_COLOR_BG (color); + + if (fg & CRT_COLOR_INTENSITY) { + fg += 90; + } else { + fg += 30; + } + + if (bg & CRT_COLOR_INTENSITY) { + bg += 100; + } else { + bg += 40; + } + + i = sprintf (buf, "\033[%d;%dm", fg, bg); #if 0 - fprintf (stderr, "Color set to %d %d %x\n", fg, bg, color); + fprintf (stderr, "Color set to %d %d %x\n", fg, bg, color); #endif - a->terminal->xmit (a->terminal, buf, i); - a->color = color; - } + a->terminal->xmit (a->terminal, buf, i); + a->color = color; + } } static void @@ -299,47 +263,34 @@ ansi_set_attr (ANSI * a, int attr) a->attr = attr; #if 0 - if (attr == CRT_ATTR_NORMAL) - { - ansi_force_attr_normal (a); - return; - } + if (attr == CRT_ATTR_NORMAL) { + ansi_force_attr_normal (a); + return; + } #endif - if (dif & CRT_ATTR_UNDERLINE) - { - if (attr & CRT_ATTR_UNDERLINE) - { - a->terminal->xmit (a->terminal, "\033[4m", 4); - } - else - { - a->terminal->xmit (a->terminal, "\033[24m", 5); - } + if (dif & CRT_ATTR_UNDERLINE) { + if (attr & CRT_ATTR_UNDERLINE) { + a->terminal->xmit (a->terminal, "\033[4m", 4); + } else { + a->terminal->xmit (a->terminal, "\033[24m", 5); } - if (dif & CRT_ATTR_REVERSE) - { - if (attr & CRT_ATTR_REVERSE) - { - a->terminal->xmit (a->terminal, "\033[7m", 4); - } - else - { - a->terminal->xmit (a->terminal, "\033[27m", 5); - } + } + if (dif & CRT_ATTR_REVERSE) { + if (attr & CRT_ATTR_REVERSE) { + a->terminal->xmit (a->terminal, "\033[7m", 4); + } else { + a->terminal->xmit (a->terminal, "\033[27m", 5); } - if (dif & CRT_ATTR_BOLD) - { - if (attr & CRT_ATTR_BOLD) - { - a->terminal->xmit (a->terminal, "\033[1m", 4); - } - else - { - a->terminal->xmit (a->terminal, "\033[21m", 5); - a->terminal->xmit (a->terminal, "\033[22m", 5); - } + } + if (dif & CRT_ATTR_BOLD) { + if (attr & CRT_ATTR_BOLD) { + a->terminal->xmit (a->terminal, "\033[1m", 4); + } else { + a->terminal->xmit (a->terminal, "\033[21m", 5); + a->terminal->xmit (a->terminal, "\033[22m", 5); } + } } @@ -349,37 +300,33 @@ ascii_emit (TTY * t, uint32_t ch) int i; /*Some quick obvious subsititons for quotation marks*/ - switch (ch) - { - case 0x2018: - ch = '`'; - break; - case 0x2019: - ch = '\''; - break; - case 0x201c: - case 0x201d: - ch = '"'; - break; - } + switch (ch) { + case 0x2018: + ch = '`'; + break; + case 0x2019: + ch = '\''; + break; + case 0x201c: + case 0x201d: + ch = '"'; + break; + } /*Short cut the easy stuff*/ - if (ch < 0x7f) - { - uint8_t c = ch; - t->xmit (t, &c, 1); - return; - } + if (ch < 0x7f) { + uint8_t c = ch; + t->xmit (t, &c, 1); + return; + } - for (i = 0; i < VT102_CHARSET_SIZE; ++i) - { - if (vt102_charset_gl[i] == ch) - { - uint8_t c[3] = { 016, i, 017 }; - t->xmit (t, &c, 3); - return; - } + for (i = 0; i < VT102_CHARSET_SIZE; ++i) { + if (vt102_charset_gl[i] == ch) { + uint8_t c[3] = { 016, i, 017 }; + t->xmit (t, &c, 3); + return; } + } t->xmit (t, "?", 1); @@ -473,12 +420,11 @@ ansi_spot_scroll_up (ANSI * a, CRT * c) n = c->sh.e.y - c->sh.s.y; p = CRT_ADDR_POS (&c->sh.s); - while (n--) - { - if (memcmp (&c->screen[p], &a->crt.screen[p + CRT_COLS], l)) - return; - p += CRT_COLS; - } + while (n--) { + if (memcmp (&c->screen[p], &a->crt.screen[p + CRT_COLS], l)) + return; + p += CRT_COLS; + } if (ansi_scroll_up (a, c->sh.s, c->sh.e)) return; @@ -486,11 +432,10 @@ ansi_spot_scroll_up (ANSI * a, CRT * c) n = c->sh.e.y - c->sh.s.y; p = CRT_ADDR_POS (&c->sh.s); - while (n--) - { - memcpy (&a->crt.screen[p], &a->crt.screen[p + CRT_COLS], l); - p += CRT_COLS; - } + while (n--) { + memcpy (&a->crt.screen[p], &a->crt.screen[p + CRT_COLS], l); + p += CRT_COLS; + } c->sh.dir = 0; //FIXME: horrid hack @@ -500,13 +445,12 @@ static void ansi_spot_scroll (ANSI * a, CRT * c) { - switch (c->sh.dir) - { - case -1: + switch (c->sh.dir) { + case -1: /*we only care about up for the moment */ - ansi_spot_scroll_up (a, c); - break; - } + ansi_spot_scroll_up (a, c); + break; + } return; } @@ -520,23 +464,21 @@ ansi_draw_line (ANSI * a, CRT_CA * cap, int y) CRT_Pos p = { 0, y }; CRT_CA *acap = &a->crt.screen[CRT_ADDR_POS (&p)]; - for (p.x = 0; p.x < a->crt.size.x; ++p.x) - { - if (p.x >= a->size.x) - continue; - - if (crt_ca_cmp (*acap, *cap)) - { - ansi_showhide_cursor (a, 1); - *acap = *cap; + for (p.x = 0; p.x < a->crt.size.x; ++p.x) { + if (p.x >= a->size.x) + continue; - ansi_move (a, p); - ansi_render (a, *acap); - } + if (crt_ca_cmp (*acap, *cap)) { + ansi_showhide_cursor (a, 1); + *acap = *cap; - acap++; - cap++; + ansi_move (a, p); + ansi_render (a, *acap); } + + acap++; + cap++; + } } static void @@ -544,42 +486,38 @@ ansi_resize_check (ANSI * a, CRT_Pos * size) { if ((size && crt_pos_cmp (a->crt.size, *size)) - || crt_pos_cmp (a->terminal->size, a->size)) - { + || crt_pos_cmp (a->terminal->size, a->size)) { - terminal_getsize (a->terminal); + terminal_getsize (a->terminal); - a->size = a->terminal->size; + a->size = a->terminal->size; - a->pos.x = ANSI_INVAL; - a->hide_cursor = ANSI_INVAL; + a->pos.x = ANSI_INVAL; + a->hide_cursor = ANSI_INVAL; - crt_reset (&a->crt); + crt_reset (&a->crt); - if (size) - a->crt.size = *size; + if (size) + a->crt.size = *size; // FIXME: -- echos back crap? // a->terminal->xmit (a->terminal, "\033[c", 3); // maybe - issue 132 column command if we're 132? - ansi_cls (a); - a->terminal->xmit (a->terminal, "\033=", 2); - a->terminal->xmit (a->terminal, "\033[?6l", 5); - a->terminal->xmit (a->terminal, "\033[r", 3); - if (a->utf8) - { - a->terminal->xmit (a->terminal, "\033%G", 3); - } - else - { - a->terminal->xmit (a->terminal, "\033(B", 3); - a->terminal->xmit (a->terminal, "\033)0", 3); - a->terminal->xmit (a->terminal, "\017", 1); - } - + ansi_cls (a); + a->terminal->xmit (a->terminal, "\033=", 2); + a->terminal->xmit (a->terminal, "\033[?6l", 5); + a->terminal->xmit (a->terminal, "\033[r", 3); + if (a->utf8) { + a->terminal->xmit (a->terminal, "\033%G", 3); + } else { + a->terminal->xmit (a->terminal, "\033(B", 3); + a->terminal->xmit (a->terminal, "\033)0", 3); + a->terminal->xmit (a->terminal, "\017", 1); } + + } } /*if they haven't then ansi_draw will patch it up*/ @@ -609,55 +547,52 @@ ansi_history (ANSI * a, History * h) a->terminal->xmit (a->terminal, buf, i); - while (a->history_ptr != h->wptr) - { + while (a->history_ptr != h->wptr) { - History_ent *e = &h->lines[a->history_ptr]; + History_ent *e = &h->lines[a->history_ptr]; - HISTORY_INC (h, a->history_ptr); + HISTORY_INC (h, a->history_ptr); - if (!e->valid) - continue; + if (!e->valid) + continue; - /*If so write the line ot the top of the screen */ - ansi_draw_line (a, e->line, 0); + /*If so write the line ot the top of the screen */ + ansi_draw_line (a, e->line, 0); - /*Roll guess_scroll lines up putting the top line into the xterm's history */ + /*Roll guess_scroll lines up putting the top line into the xterm's history */ - /*Make extra lines a predictable colour */ - ansi_set_color (a, CRT_COLOR_NORMAL); + /*Make extra lines a predictable colour */ + ansi_set_color (a, CRT_COLOR_NORMAL); - ansi_showhide_cursor (a, 1); - i = sprintf (buf, "\033[%d;%dH", guess_scroll, 1); - a->terminal->xmit (a->terminal, buf, i); - a->terminal->xmit (a->terminal, "\033D", 2); - a->pos.x = ANSI_INVAL; - - /*now do the same in our image of the screen */ - - { - CRT_Pos s = { 0 } - , e = - { - 0}; - - /*scroll lines up */ - for (s.y++; s.y < guess_scroll; s.y++, e.y++) - { - memcpy (&a->crt.screen[CRT_ADDR_POS (&e)], - &a->crt.screen[CRT_ADDR_POS (&s)], - sizeof (CRT_CA) * a->crt.size.x); - } - - /* erase new line */ - s.y = e.y; - e.x = CRT_COLS - 1; - crt_erase (&a->crt, s, e, 1, CRT_COLOR_NORMAL); + ansi_showhide_cursor (a, 1); + i = sprintf (buf, "\033[%d;%dH", guess_scroll, 1); + a->terminal->xmit (a->terminal, buf, i); + a->terminal->xmit (a->terminal, "\033D", 2); + a->pos.x = ANSI_INVAL; + + /*now do the same in our image of the screen */ + + { + CRT_Pos s = { 0 } + , e = { + 0}; + + /*scroll lines up */ + for (s.y++; s.y < guess_scroll; s.y++, e.y++) { + memcpy (&a->crt.screen[CRT_ADDR_POS (&e)], + &a->crt.screen[CRT_ADDR_POS (&s)], + sizeof (CRT_CA) * a->crt.size.x); } + /* erase new line */ + s.y = e.y; + e.x = CRT_COLS - 1; + crt_erase (&a->crt, s, e, 1, CRT_COLOR_NORMAL); } + + } /*reset margins*/ a->terminal->xmit (a->terminal, "\033[r", 3); a->pos.x = ANSI_INVAL; @@ -677,42 +612,39 @@ ansi_draw (ANSI * a, CRT * c) ansi_resize_check (a, &c->size); - for (p.y = 0; p.y < a->crt.size.y; ++p.y) - { - if (p.y >= a->size.y) - continue; + for (p.y = 0; p.y < a->crt.size.y; ++p.y) { + if (p.y >= a->size.y) + continue; - ansi_draw_line (a, &c->screen[CRT_ADDR (p.y, 0)], p.y); + ansi_draw_line (a, &c->screen[CRT_ADDR (p.y, 0)], p.y); - } + } - if ((c->size.x > a->size.x) || (c->size.y > a->size.y)) - { - char msg[1024]; // = "Window is too small"; - int i; - p.x = 0; - p.y = 0; + if ((c->size.x > a->size.x) || (c->size.y > a->size.y)) { + char msg[1024]; // = "Window is too small"; + int i; + p.x = 0; + p.y = 0; - i = - sprintf (msg, "Window too small (%dx%d need %dx%d)", a->size.x, - a->size.y, c->size.x, c->size.y); + i = + sprintf (msg, "Window too small (%dx%d need %dx%d)", a->size.x, + a->size.y, c->size.x, c->size.y); - ansi_showhide_cursor (a, 1); - ansi_set_attr (a, CRT_ATTR_REVERSE); - ansi_set_color (a, CRT_MAKE_COLOR (CRT_COLOR_WHITE, CRT_COLOR_RED)); - ansi_move (a, p); + ansi_showhide_cursor (a, 1); + ansi_set_attr (a, CRT_ATTR_REVERSE); + ansi_set_color (a, CRT_MAKE_COLOR (CRT_COLOR_WHITE, CRT_COLOR_RED)); + ansi_move (a, p); - a->terminal->xmit (a->terminal, msg, i); - a->pos.x = ANSI_INVAL; - } + a->terminal->xmit (a->terminal, msg, i); + a->pos.x = ANSI_INVAL; + } - if ((c->pos.x >= a->size.x) || (c->pos.y >= a->size.y)) - { - ansi_showhide_cursor (a, 1); - return; - } + if ((c->pos.x >= a->size.x) || (c->pos.y >= a->size.y)) { + ansi_showhide_cursor (a, 1); + return; + } a->crt.pos = c->pos; ansi_move (a, a->crt.pos); @@ -738,7 +670,8 @@ ansi_terminal_reset (ANSI * a) } -int ansi_key(ANSI *a,Context *c,int key) +int +ansi_key (ANSI * a, Context * c, int key) { if (!c->d) @@ -748,12 +681,12 @@ int ansi_key(ANSI *a,Context *c,int key) if (c->d->active) { - if (key == CMD_KEY) { - return cmd_deactivate (c->d, c); - }else { - return cmd_key (c->d, c,a, key); - } - } else if (key == CMD_KEY) + if (key == CMD_KEY) { + cmd_deactivate (c->d, c); + } else { + return cmd_key (c->d, c, a, key); + } + } else if (key == CMD_KEY) { return cmd_activate (c->d, c); } @@ -768,10 +701,9 @@ ansi_flush_escape (ANSI * a, Context * c) ANSI_Parser *p = &a->parser; int i; - for (i = 0; i < p->escape_ptr; ++i) - { - ansi_key (a, c, p->escape_buf[i]); - } + for (i = 0; i < p->escape_ptr; ++i) { + ansi_key (a, c, p->escape_buf[i]); + } p->escape_ptr = 0; p->in_escape = 0; @@ -781,25 +713,19 @@ static void ansi_parse_deckey (ANSI * a, Context * c) { ANSI_Parser *p = &a->parser; - if ((p->escape_buf[1] != '[') && (p->escape_buf[1] != 'O')) - { - ansi_flush_escape (a, c); - return; - } + if ((p->escape_buf[1] != '[') && (p->escape_buf[1] != 'O')) { + ansi_flush_escape (a, c); + return; + } - if ((p->escape_buf[2] >= 'A') || (p->escape_buf[2] <= 'Z')) - { - ansi_key (a, c, KEY_UP + (p->escape_buf[2] - 'A')); - } - else if ((p->escape_buf[2] >= 'a') || (p->escape_buf[2] <= 'z')) - { - ansi_key (a, c, KEY_154 + (p->escape_buf[2] - 'a')); - } - else - { - ansi_flush_escape (a, c); - return; - } + if ((p->escape_buf[2] >= 'A') || (p->escape_buf[2] <= 'Z')) { + ansi_key (a, c, KEY_UP + (p->escape_buf[2] - 'A')); + } else if ((p->escape_buf[2] >= 'a') || (p->escape_buf[2] <= 'z')) { + ansi_key (a, c, KEY_154 + (p->escape_buf[2] - 'a')); + } else { + ansi_flush_escape (a, c); + return; + } p->in_escape = 0; p->escape_ptr = 0; } @@ -809,20 +735,16 @@ ansi_parse_ansikey (ANSI * a, Context * c) { ANSI_Parser *p = &a->parser; - if ((p->escape_buf[1] != '[') || (p->escape_buf[3] != '~')) - { - ansi_flush_escape (a, c); - return; - } - if ((p->escape_buf[2] >= '0') || (p->escape_buf[2] <= '9')) - { - ansi_key (a, c, KEY_180 + (p->escape_buf[2] - '0')); - } - else - { - ansi_flush_escape (a, c); - return; - } + if ((p->escape_buf[1] != '[') || (p->escape_buf[3] != '~')) { + ansi_flush_escape (a, c); + return; + } + if ((p->escape_buf[2] >= '0') || (p->escape_buf[2] <= '9')) { + ansi_key (a, c, KEY_180 + (p->escape_buf[2] - '0')); + } else { + ansi_flush_escape (a, c); + return; + } p->in_escape = 0; p->escape_ptr = 0; @@ -834,48 +756,44 @@ static void ansi_parse_escape (ANSI * a, Context * c) { ANSI_Parser *p = &a->parser; - switch (p->escape_ptr) - { - case 0: - case 1: - return; - case 2: - switch (p->escape_buf[1]) - { - case '[': - case 'O': - break; - default: - ansi_flush_escape (a, c); - } + switch (p->escape_ptr) { + case 0: + case 1: + return; + case 2: + switch (p->escape_buf[1]) { + case '[': + case 'O': + break; + default: + ansi_flush_escape (a, c); + } + break; + case 3: + switch (p->escape_buf[1]) { + case 'O': + ansi_parse_deckey (a, c); break; - case 3: - switch (p->escape_buf[1]) - { - case 'O': - ansi_parse_deckey (a, c); - break; - case '[': - if ((p->escape_buf[2] >= 'A') && (p->escape_buf[2] <= 'Z')) - ansi_parse_deckey (a, c); - break; - default: - ansi_flush_escape (a, c); - } + case '[': + if ((p->escape_buf[2] >= 'A') && (p->escape_buf[2] <= 'Z')) + ansi_parse_deckey (a, c); break; - case 4: - switch (p->escape_buf[1]) - { - case '[': - ansi_parse_ansikey (a, c); - break; - default: - ansi_flush_escape (a, c); - } + default: + ansi_flush_escape (a, c); + } + break; + case 4: + switch (p->escape_buf[1]) { + case '[': + ansi_parse_ansikey (a, c); break; - case 5: + default: ansi_flush_escape (a, c); } + break; + case 5: + ansi_flush_escape (a, c); + } } @@ -912,25 +830,21 @@ ansi_parse_char (ANSI * a, Context * c, int ch) /*See if it's time to flush the escape*/ ansi_check_escape (a, c); - if (ch == 033) - { - if (p->in_escape) - ansi_flush_escape (a, c); + if (ch == 033) { + if (p->in_escape) + ansi_flush_escape (a, c); - p->in_escape++; - p->escape_ptr = 0; - gettimeofday (&p->last_escape, NULL); - } + p->in_escape++; + p->escape_ptr = 0; + gettimeofday (&p->last_escape, NULL); + } - if (p->in_escape) - { - p->escape_buf[p->escape_ptr++] = ch; - ansi_parse_escape (a, c); - } - else - { - ansi_key (a, c, ch); - } + if (p->in_escape) { + p->escape_buf[p->escape_ptr++] = ch; + ansi_parse_escape (a, c); + } else { + ansi_key (a, c, ch); + } } @@ -963,14 +877,13 @@ ansi_dispatch (ANSI * a, Context * c) #endif #if 0 - if (*buf == 2) - { + if (*buf == 2) { #if 0 - a->history_ptr = c->h->wptr; - HISTORY_INC (c->h, a->history_ptr); + a->history_ptr = c->h->wptr; + HISTORY_INC (c->h, a->history_ptr); #endif - return -1; - } + return -1; + } #endif @@ -985,7 +898,7 @@ ansi_update (ANSI * a, Context * c) { ansi_history (a, c->h); ansi_draw (a, &c->v->crt); - tty_length(a->terminal,c->v->crt.size.y); + tty_length (a->terminal, c->v->crt.size.y); } static void -- cgit v1.2.3