diff --git a/TODO b/TODO index cb2478f6..47c7f90c 100644 --- a/TODO +++ b/TODO @@ -61,6 +61,8 @@ - chmod +x socket when any client is attached - split clients into three RB trees by fd: attached/unattached/dead? or tailqs? what would be fastest per-char? +- everything should write via a screen and modes should be done by switching + screen out -- For 0.2 -------------------------------------------------------------------- - window splitting? @@ -69,6 +71,7 @@ split. string length should be part of the command size - echo \\033[35\;46m\\033[2J last line quirk (with C-b r) - quick intro section (tmux new/attach/detach) etc +- is ACS the right way round?? -------- kmous -- \E[M diff --git a/tty.c b/tty.c index e0f0249e..3944ff0a 100644 --- a/tty.c +++ b/tty.c @@ -1,4 +1,4 @@ -/* $Id: tty.c,v 1.7 2007-11-27 23:28:51 nicm Exp $ */ +/* $Id: tty.c,v 1.8 2007-12-03 10:47:27 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -268,19 +268,44 @@ tty_vwrite(struct tty *tty, int cmd, va_list ap) break; case TTY_INSERTLINE: ua = va_arg(ap, u_int); - tty_puts(tty, tparm(parm_insert_line, ua)); + if (parm_insert_line != NULL) + tty_puts(tty, tparm(parm_insert_line, ua)); + else { + while (ua-- > 0) + tty_puts(tty, insert_line); + } break; case TTY_DELETELINE: ua = va_arg(ap, u_int); - tty_puts(tty, tparm(parm_delete_line, ua)); + if (parm_delete_line != NULL) + tty_puts(tty, tparm(parm_delete_line, ua)); + else { + while (ua-- > 0) + tty_puts(tty, delete_line); + } break; case TTY_INSERTCHARACTER: ua = va_arg(ap, u_int); - tty_puts(tty, tparm(parm_ich, ua)); + if (parm_ich != NULL) + tty_puts(tty, tparm(parm_ich, ua)); + else if (insert_character != NULL) { + while (ua-- > 0) + tty_puts(tty, insert_character); + } else if (enter_insert_mode != NULL) { + tty_puts(tty, enter_insert_mode); + while (ua-- > 0) + tty_putc(tty, ' '); + tty_puts(tty, exit_insert_mode); + } break; case TTY_DELETECHARACTER: ua = va_arg(ap, u_int); - tty_puts(tty, tparm(parm_dch, ua)); + if (parm_dch != NULL) + tty_puts(tty, tparm(parm_dch, ua)); + else { + while (ua-- > 0) + tty_puts(tty, delete_character); + } break; case TTY_CURSORON: if (cursor_normal != NULL)