X-Git-Url: http://git.droids-corp.org/?p=libcmdline.git;a=blobdiff_plain;f=src%2Flib%2Fcmdline_rdline.c;h=38b0773393ea4329e84ac56f87f639f8fff2c20c;hp=48cf03e094b8a2219edcdbcbdecd1498166c20c2;hb=5c57162aad1d3505e45e800a229aa03dd1496050;hpb=9e20c1f99fb24b22eaed433a2227c3eeaa34b245 diff --git a/src/lib/cmdline_rdline.c b/src/lib/cmdline_rdline.c index 48cf03e..38b0773 100644 --- a/src/lib/cmdline_rdline.c +++ b/src/lib/cmdline_rdline.c @@ -164,20 +164,21 @@ rdline_get_buffer(struct rdline *rdl) } static void -display_right_buffer(struct rdline *rdl) +display_right_buffer(struct rdline *rdl, int force) { unsigned int i; char tmp; - if (CIRBUF_IS_EMPTY(&rdl->right)) + if (!force && CIRBUF_IS_EMPTY(&rdl->right)) return; rdline_puts(rdl, vt100_clear_right); CIRBUF_FOREACH(&rdl->right, i, tmp) { rdl->write_char(rdl, tmp); } - rdline_miniprintf(rdl, vt100_multi_left, - CIRBUF_GET_LEN(&rdl->right)); + if (!CIRBUF_IS_EMPTY(&rdl->right)) + rdline_miniprintf(rdl, vt100_multi_left, + CIRBUF_GET_LEN(&rdl->right)); } void @@ -192,7 +193,7 @@ rdline_redisplay(struct rdline *rdl) CIRBUF_FOREACH(&rdl->left, i, tmp) { rdl->write_char(rdl, tmp); } - display_right_buffer(rdl); + display_right_buffer(rdl, 1); } int @@ -273,7 +274,7 @@ rdline_char_in(struct rdline *rdl, char c) case CMDLINE_KEY_BKSPACE: if(!cirbuf_del_tail_safe(&rdl->left)) { rdline_puts(rdl, vt100_bs); - display_right_buffer(rdl); + display_right_buffer(rdl, 1); } break; @@ -286,7 +287,7 @@ rdline_char_in(struct rdline *rdl, char c) rdline_puts(rdl, vt100_bs); cirbuf_del_tail(&rdl->left); } - display_right_buffer(rdl); + display_right_buffer(rdl, 1); break; case CMDLINE_KEY_SUPPR: @@ -297,7 +298,7 @@ rdline_char_in(struct rdline *rdl, char c) return RDLINE_RES_EOF; } if (!cirbuf_del_head_safe(&rdl->right)) { - display_right_buffer(rdl); + display_right_buffer(rdl, 1); } break; @@ -342,7 +343,7 @@ rdline_char_in(struct rdline *rdl, char c) rdl->write_char(rdl, rdl->kill_buf[i]); i++; } - display_right_buffer(rdl); + display_right_buffer(rdl, 0); break; #endif /* !NO_RDLINE_KILL_BUF */ @@ -390,7 +391,7 @@ rdline_char_in(struct rdline *rdl, char c) rdl->write_char(rdl, tmp_buf[i]); i++; } - display_right_buffer(rdl); + display_right_buffer(rdl, 1); return RDLINE_RES_COMPLETE; /* ?? */ } @@ -485,7 +486,7 @@ rdline_char_in(struct rdline *rdl, char c) return RDLINE_RES_SUCCESS; rdl->write_char(rdl, c); - display_right_buffer(rdl); + display_right_buffer(rdl, 0); return RDLINE_RES_SUCCESS; }