diff options
-rw-r--r-- | editors/vi.c | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/editors/vi.c b/editors/vi.c index f7d3ef678..a01fa7c46 100644 --- a/editors/vi.c +++ b/editors/vi.c @@ -348,6 +348,7 @@ static void place_cursor(int, int, int); static void screen_erase(void); static void clear_to_eol(void); static void clear_to_eos(void); +static void go_bottom_and_clear_to_eol(void); static void standout_start(void); // send "start reverse video" sequence static void standout_end(void); // send "end reverse video" sequence static void flash(int); // flash the terminal screen @@ -645,8 +646,7 @@ static void edit_file(char *fn) } //------------------------------------------------------------------- - place_cursor(rows - 1, 0, FALSE); // go to bottom of screen - clear_to_eol(); // erase to end of line + go_bottom_and_clear_to_eol(); cookmode(); #undef cur_line } @@ -842,8 +842,7 @@ static void colon(char *buf) else if (strncmp(cmd, "!", 1) == 0) { // run a cmd int retcode; // :!ls run the <cmd> - place_cursor(rows - 1, 0, FALSE); // go to Status line - clear_to_eol(); // clear the line + go_bottom_and_clear_to_eol(); cookmode(); retcode = system(orig_buf + 1); // run the cmd if (retcode) @@ -920,8 +919,7 @@ static void colon(char *buf) } } else if (strncasecmp(cmd, "features", i) == 0) { // what features are available // print out values of all features - place_cursor(rows - 1, 0, FALSE); // go to Status line, bottom of screen - clear_to_eol(); // clear the line + go_bottom_and_clear_to_eol(); cookmode(); show_help(); rawmode(); @@ -931,8 +929,7 @@ static void colon(char *buf) q = begin_line(dot); // assume .,. for the range r = end_line(dot); } - place_cursor(rows - 1, 0, FALSE); // go to Status line, bottom of screen - clear_to_eol(); // clear the line + go_bottom_and_clear_to_eol(); puts("\r"); for (; q <= r; q++) { int c_is_no_print; @@ -1032,8 +1029,7 @@ static void colon(char *buf) // only blank is regarded as args delmiter. What about tab '\t' ? if (!args[0] || strcasecmp(args, "all") == 0) { // print out values of all options - place_cursor(rows - 1, 0, FALSE); // go to Status line, bottom of screen - clear_to_eol(); // clear the line + go_bottom_and_clear_to_eol(); printf("----------------------------------------\r\n"); #if ENABLE_FEATURE_VI_SETOPTS if (!autoindent) @@ -2169,8 +2165,7 @@ static void cont_sig(int sig UNUSED_PARAM) //----- Come here when we get a Suspend signal ------------------- static void suspend_sig(int sig UNUSED_PARAM) { - place_cursor(rows - 1, 0, FALSE); // go to bottom of screen - clear_to_eol(); // erase to end of line + go_bottom_and_clear_to_eol(); cookmode(); // terminal to "cooked" signal(SIGCONT, cont_sig); @@ -2253,8 +2248,7 @@ static char readit(void) // read (maybe cursor) key from stdin n = safe_read(0, readbuffer, 1); if (n <= 0) { error: - place_cursor(rows - 1, 0, FALSE); // go to bottom of screen - clear_to_eol(); // erase to end of line + go_bottom_and_clear_to_eol(); cookmode(); // terminal to "cooked" bb_error_msg_and_die("can't read user input"); } @@ -2367,8 +2361,7 @@ static char *get_input_line(const char *prompt) strcpy(buf, prompt); last_status_cksum = 0; // force status update - place_cursor(rows - 1, 0, FALSE); // go to Status line, bottom of screen - clear_to_eol(); // clear the line + go_bottom_and_clear_to_eol(); write1(prompt); // write out the :, /, or ? prompt i = strlen(buf); @@ -2572,6 +2565,12 @@ static void clear_to_eol(void) write1(Ceol); // Erase from cursor to end of line } +static void go_bottom_and_clear_to_eol(void) +{ + place_cursor(rows - 1, 0, FALSE); // go to bottom of screen + clear_to_eol(); // erase to end of line +} + //----- Erase from cursor to end of screen ----------------------- static void clear_to_eos(void) { @@ -2643,9 +2642,8 @@ static void show_status_line(void) } if (have_status_msg || ((cnt > 0 && last_status_cksum != cksum))) { last_status_cksum = cksum; // remember if we have seen this line - place_cursor(rows - 1, 0, FALSE); // put cursor on status line + go_bottom_and_clear_to_eol(); write1(status_buffer); - clear_to_eol(); if (have_status_msg) { if (((int)strlen(status_buffer) - (have_status_msg - 1)) > (columns - 1) ) { |