Migrate search_buff to wcstring

This commit is contained in:
ridiculousfish 2012-02-03 20:01:01 -08:00
parent fb63c3908c
commit f20f49d872

View file

@ -195,9 +195,9 @@ class reader_data_t
screen_t screen; screen_t screen;
/** /**
Buffer containing the current search item String containing the current search item
*/ */
string_buffer_t search_buff; wcstring search_buff;
/** /**
Saved position used by token history search Saved position used by token history search
@ -714,7 +714,7 @@ static void exec_prompt()
reader_write_title(); reader_write_title();
data->prompt_buff.resize(0); data->prompt_buff.clear();
for( i = 0; i < prompt_list.size(); i++ ) for( i = 0; i < prompt_list.size(); i++ )
{ {
@ -1806,16 +1806,16 @@ static void reset_token_history()
parse_util_token_extent( data->buff, data->buff_pos, &begin, &end, 0, 0 ); parse_util_token_extent( data->buff, data->buff_pos, &begin, &end, 0, 0 );
sb_clear( &data->search_buff ); data->search_buff.clear();
if( begin ) if( begin )
{ {
sb_append_substring( &data->search_buff, begin, end-begin); data->search_buff.append(begin, end - begin);
} }
data->token_history_pos = -1; data->token_history_pos = -1;
data->search_pos=0; data->search_pos=0;
data->search_prev.resize(0); data->search_prev.clear();
data->search_prev.push_back(reinterpret_cast<const wchar_t *>(data->search_buff.buff)); data->search_prev.push_back(data->search_buff);
} }
@ -1877,14 +1877,14 @@ static void handle_token_history( int forward, int reset )
/* /*
Search for previous item that contains this substring Search for previous item that contains this substring
*/ */
item = history_prev_match( (wchar_t *)data->search_buff.buff); item = history_prev_match(data->search_buff.c_str());
/* /*
If there is no match, the original string is returned If there is no match, the original string is returned
If so, we clear the match string to avoid infinite loop If so, we clear the match string to avoid infinite loop
*/ */
if( wcscmp( item, (wchar_t *)data->search_buff.buff ) == 0 ) if( wcscmp( item, data->search_buff.c_str() ) == 0 )
{ {
item=L""; item=L"";
} }
@ -1902,10 +1902,10 @@ static void handle_token_history( int forward, int reset )
return, otherwise add it. return, otherwise add it.
*/ */
const wchar_t *last = data->search_prev.back().c_str(); const wcstring &last = data->search_prev.back();
if( wcscmp( last, (wchar_t *)data->search_buff.buff ) ) if (data->search_buff != last)
{ {
str = wcsdup( (wchar_t *)data->search_buff.buff ); str = wcsdup( data->search_buff.c_str() );
} }
else else
{ {
@ -1925,7 +1925,7 @@ static void handle_token_history( int forward, int reset )
{ {
case TOK_STRING: case TOK_STRING:
{ {
if( wcsstr( tok_last( &tok ), (wchar_t *)data->search_buff.buff ) ) if( wcsstr( tok_last( &tok ), data->search_buff.c_str() ) )
{ {
//debug( 3, L"Found token at pos %d\n", tok_get_pos( &tok ) ); //debug( 3, L"Found token at pos %d\n", tok_get_pos( &tok ) );
if( tok_get_pos( &tok ) >= current_pos ) if( tok_get_pos( &tok ) >= current_pos )
@ -2143,7 +2143,7 @@ void reader_set_buffer( const wchar_t *b, int p )
} }
data->search_mode = NO_SEARCH; data->search_mode = NO_SEARCH;
sb_clear( &data->search_buff ); data->search_buff.clear();
history_reset(); history_reset();
reader_super_highlight_me_plenty( data->buff_pos, reader_super_highlight_me_plenty( data->buff_pos,
@ -2272,7 +2272,6 @@ void reader_push( const wchar_t *name )
check_size(); check_size();
data->buff[0]=0; data->buff[0]=0;
sb_init( &data->search_buff );
if( data->next == 0 ) if( data->next == 0 )
{ {
@ -2304,7 +2303,6 @@ void reader_pop()
free( n->buff ); free( n->buff );
free( n->color ); free( n->color );
free( n->indent ); free( n->indent );
sb_destroy( &n->search_buff );
sb_destroy( &n->kill_item ); sb_destroy( &n->kill_item );
/* /*
@ -2458,13 +2456,13 @@ static void reader_super_highlight_me_plenty( int match_highlight_pos, array_lis
data->highlight_function( ctx->buff, ctx->color, match_highlight_pos, error, highlight_complete2, ctx ); data->highlight_function( ctx->buff, ctx->color, match_highlight_pos, error, highlight_complete2, ctx );
#endif #endif
if( wcslen((wchar_t *)data->search_buff.buff) ) if( ! data->search_buff.empty())
{ {
wchar_t * match = wcsstr( data->buff, (wchar_t *)data->search_buff.buff ); wchar_t * match = wcsstr( data->buff, data->search_buff.c_str() );
if( match ) if( match )
{ {
int start = match-data->buff; int start = match-data->buff;
int count = wcslen( (wchar_t *)data->search_buff.buff ); int count = data->search_buff.size();
int i; int i;
for( i=0; i<count; i++ ) for( i=0; i<count; i++ )
@ -2669,7 +2667,7 @@ wchar_t *reader_readline()
struct termios old_modes; struct termios old_modes;
check_size(); check_size();
sb_clear( &data->search_buff ); data->search_buff.clear();
data->buff[data->buff_len]='\0'; data->buff[data->buff_len]='\0';
data->search_mode = NO_SEARCH; data->search_mode = NO_SEARCH;
@ -2985,14 +2983,13 @@ wchar_t *reader_readline()
if( data->token_history_pos==-1 ) if( data->token_history_pos==-1 )
{ {
history_reset(); history_reset();
reader_set_buffer( (wchar_t *)data->search_buff.buff, reader_set_buffer( data->search_buff.c_str(), data->search_buff.size() );
wcslen( (wchar_t *)data->search_buff.buff ) );
} }
else else
{ {
reader_replace_current_token( (wchar_t *)data->search_buff.buff ); reader_replace_current_token( data->search_buff.c_str() );
} }
sb_clear( &data->search_buff ); data->search_buff.clear();
reader_super_highlight_me_plenty( data->buff_pos, 0 ); reader_super_highlight_me_plenty( data->buff_pos, 0 );
reader_repaint(); reader_repaint();
@ -3105,7 +3102,7 @@ wchar_t *reader_readline()
data->search_mode = TOKEN_SEARCH; data->search_mode = TOKEN_SEARCH;
} }
sb_append( &data->search_buff, data->buff ); data->search_buff.append(data->buff);
} }
switch( data->search_mode ) switch( data->search_mode )
@ -3118,11 +3115,11 @@ wchar_t *reader_readline()
if( ( c == R_HISTORY_SEARCH_BACKWARD ) || if( ( c == R_HISTORY_SEARCH_BACKWARD ) ||
( c == R_HISTORY_TOKEN_SEARCH_BACKWARD ) ) ( c == R_HISTORY_TOKEN_SEARCH_BACKWARD ) )
{ {
it = history_prev_match((wchar_t *)data->search_buff.buff); it = history_prev_match(data->search_buff.c_str());
} }
else else
{ {
it = history_next_match((wchar_t *)data->search_buff.buff); it = history_next_match(data->search_buff.c_str());
} }
handle_history( it ); handle_history( it );
@ -3287,7 +3284,7 @@ wchar_t *reader_readline()
(c != R_NULL) ) (c != R_NULL) )
{ {
data->search_mode = NO_SEARCH; data->search_mode = NO_SEARCH;
sb_clear( &data->search_buff ); data->search_buff.clear();
history_reset(); history_reset();
data->token_history_pos=-1; data->token_history_pos=-1;
} }