Don't use carriage return on initial painting of the prompt

darcs-hash:20060826022416-ac50b-16746f45142589e7fa83e95b6ee6a2fad98432c4.gz
This commit is contained in:
axel 2006-08-26 12:24:16 +10:00
parent ed8cd08984
commit 3c8d2a1126

View file

@ -939,13 +939,14 @@ void reader_exit( int do_exit, int forced )
} }
void repaint() void repaint( int skip_return )
{ {
int steps; int steps;
calc_output(); calc_output();
set_color( FISH_COLOR_RESET, FISH_COLOR_RESET ); set_color( FISH_COLOR_RESET, FISH_COLOR_RESET );
writech('\r'); if( !skip_return )
writech('\r');
writembs(clr_eol); writembs(clr_eol);
write_prompt(); write_prompt();
write_cmdline(); write_cmdline();
@ -975,7 +976,7 @@ static void check_colors()
{ {
memcpy( data->color, data->new_color, sizeof(int)*data->buff_len ); memcpy( data->color, data->new_color, sizeof(int)*data->buff_len );
repaint(); repaint( 0 );
} }
} }
@ -1047,7 +1048,7 @@ static void reader_check_status()
if( changed ) if( changed )
{ {
repaint(); repaint( 0 );
set_color( FISH_COLOR_RESET, FISH_COLOR_RESET ); set_color( FISH_COLOR_RESET, FISH_COLOR_RESET );
} }
} }
@ -1108,7 +1109,7 @@ static void remove_backward()
data->new_color, data->new_color,
sizeof(int) * data->buff_len ); sizeof(int) * data->buff_len );
repaint(); repaint( 0 );
} }
} }
@ -1198,7 +1199,7 @@ static int insert_char( int c )
/* Nope, colors are off, so we repaint the entire command line */ /* Nope, colors are off, so we repaint the entire command line */
memcpy( data->color, data->new_color, sizeof(int) * data->buff_len ); memcpy( data->color, data->new_color, sizeof(int) * data->buff_len );
repaint(); repaint( 0 );
} }
// wcscpy(data->search_buff,data->buff); // wcscpy(data->search_buff,data->buff);
return 1; return 1;
@ -1245,7 +1246,7 @@ static int insert_str(wchar_t *str)
/* repaint */ /* repaint */
repaint(); repaint( 0 );
} }
return 1; return 1;
@ -1654,7 +1655,7 @@ static int handle_completions( array_list_t *comp )
} }
free( prefix ); free( prefix );
repaint(); repaint( 0 );
} }
@ -1800,7 +1801,7 @@ static void handle_history( const wchar_t *new_str )
data->buff_pos=wcslen(data->buff); data->buff_pos=wcslen(data->buff);
reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 ); reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 );
repaint(); repaint( 0 );
} }
/** /**
@ -1885,7 +1886,7 @@ static void handle_token_history( int forward, int reset )
reader_replace_current_token( str ); reader_replace_current_token( str );
reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 ); reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 );
repaint(); repaint( 0 );
} }
else else
{ {
@ -1958,7 +1959,7 @@ static void handle_token_history( int forward, int reset )
{ {
reader_replace_current_token( str ); reader_replace_current_token( str );
reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 ); reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 );
repaint(); repaint( 0 );
al_push( &data->search_prev, str ); al_push( &data->search_prev, str );
data->search_pos = al_get_count( &data->search_prev )-1; data->search_pos = al_get_count( &data->search_prev )-1;
} }
@ -2051,7 +2052,7 @@ static void move_word( int dir, int erase )
reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 ); reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 );
repaint(); repaint( 0 );
} }
else else
{ {
@ -2076,7 +2077,7 @@ static void move_word( int dir, int erase )
} }
} }
repaint(); repaint( 0 );
// check_colors(); // check_colors();
} }
} }
@ -2430,7 +2431,7 @@ wchar_t *reader_readline()
data->exec_prompt=1; data->exec_prompt=1;
reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 ); reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 );
repaint(); repaint( 1 );
tcgetattr(0,&old_modes); /* get the current terminal modes */ tcgetattr(0,&old_modes); /* get the current terminal modes */
if( tcsetattr(0,TCSANOW,&shell_modes)) /* set the new modes */ if( tcsetattr(0,TCSANOW,&shell_modes)) /* set the new modes */
@ -2515,7 +2516,7 @@ wchar_t *reader_readline()
{ {
data->buff_pos = 0; data->buff_pos = 0;
repaint(); repaint( 0 );
break; break;
} }
@ -2524,14 +2525,14 @@ wchar_t *reader_readline()
{ {
data->buff_pos = data->buff_len; data->buff_pos = data->buff_len;
repaint(); repaint( 0 );
break; break;
} }
case R_NULL: case R_NULL:
{ {
data->exec_prompt=1; data->exec_prompt=1;
repaint(); repaint( 0 );
break; break;
} }
@ -2600,7 +2601,7 @@ wchar_t *reader_readline()
data->buff[data->buff_len]=L'\0'; data->buff[data->buff_len]=L'\0';
repaint(); repaint( 0 );
break; break;
} }
@ -2619,7 +2620,7 @@ wchar_t *reader_readline()
data->buff_pos=0; data->buff_pos=0;
reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 ); reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 );
repaint(); repaint( 0 );
break; break;
} }
@ -2630,7 +2631,7 @@ wchar_t *reader_readline()
data->buff[data->buff_len]=L'\0'; data->buff[data->buff_len]=L'\0';
reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 ); reader_super_highlight_me_plenty( data->buff, data->color, data->buff_pos, 0 );
repaint(); repaint( 0 );
break; break;
} }
@ -2728,7 +2729,7 @@ wchar_t *reader_readline()
writech('\r'); writech('\r');
writembs(clr_eol); writembs(clr_eol);
writech('\n'); writech('\n');
repaint(); repaint( 0 );
} }
break; break;
@ -2812,7 +2813,7 @@ wchar_t *reader_readline()
} }
else else
{ {
repaint(); repaint( 0 );
} }
} }
break; break;
@ -2833,7 +2834,7 @@ wchar_t *reader_readline()
{ {
data->buff_pos++; data->buff_pos++;
repaint(); repaint( 0 );
} }
} }
break; break;
@ -2844,7 +2845,7 @@ wchar_t *reader_readline()
data->buff[0]=0; data->buff[0]=0;
data->buff_len=0; data->buff_len=0;
data->buff_pos=0; data->buff_pos=0;
repaint(); repaint( 0 );
break; break;
} }
@ -2880,7 +2881,7 @@ wchar_t *reader_readline()
{ {
if( clear_screen ) if( clear_screen )
writembs( clear_screen ); writembs( clear_screen );
repaint(); repaint( 0 );
break; break;
} }