vi: trivial size optimization -65 bytes

This commit is contained in:
Denis Vlasenko 2008-10-14 10:34:41 +00:00
parent 25497c1d92
commit 267e16c74a

View File

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