X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=inject.c;fp=inject.c;h=031b809d35d1e553d6ed89b8c6ce3a7c6b1af009;hb=1748b4c1fc413781b4e6cf1a66ed0c1c6980be5d;hp=f9f40e886aee87749ea0a203e7cadb28dfeacfd8;hpb=7f23e2cf7b485ba8c4a66ccc2ee7fc4ee8172109;p=apps%2Fmadtty.git diff --git a/inject.c b/inject.c index f9f40e8..031b809 100644 --- a/inject.c +++ b/inject.c @@ -23,6 +23,7 @@ Copyright (c) 2004 Bruno T. C. de Oliveira #include "roteprivate.h" #include "inject_csi.h" #include +#include static void cursor_line_down(RoteTerm *rt) { int i; @@ -80,6 +81,13 @@ static inline void put_normal_char(RoteTerm *rt, char c) { cursor_line_down(rt); } + if (rt->insert) { + int i; + + for(i = rt->cols - 1; i >= rt->ccol+1; i--) + rt->cells[rt->crow][i] = rt->cells[rt->crow][i-1]; + } + rt->cells[rt->crow][rt->ccol].ch = c; rt->cells[rt->crow][rt->ccol].attr = rt->curattr; rt->ccol++; @@ -128,7 +136,8 @@ static void handle_control_char(RoteTerm *rt, char c) { rt->curpos_dirty = true; break; case '\t': /* tab */ - while (rt->ccol % 8) put_normal_char(rt, ' '); + rt->ccol += 8 - (rt->ccol % 8); + clamp_cursor_to_bounds(rt); break; case '\x1B': /* begin escape sequence (aborting previous one if any) */ new_escape_sequence(rt);