summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TODO3
-rw-r--r--tty.c35
2 files changed, 33 insertions, 5 deletions
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 <nicm@users.sourceforge.net>
@@ -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)