Highlight invalid directories red for the cd builtin

darcs-hash:20060615010038-ac50b-30ada1c67dcb393390f67cf709e433dafc8801b7.gz
This commit is contained in:
axel 2006-06-15 11:00:38 +10:00
parent a983798295
commit 358f412abb

View File

@ -519,6 +519,7 @@ void highlight_shell( wchar_t * buff,
int len; int len;
void *context; void *context;
wchar_t *cmd=0;
if( !buff || !color ) if( !buff || !color )
{ {
@ -545,6 +546,7 @@ void highlight_shell( wchar_t * buff,
int last_type = tok_last_type( &tok ); int last_type = tok_last_type( &tok );
int prev_argc=0; int prev_argc=0;
switch( last_type ) switch( last_type )
{ {
case TOK_STRING: case TOK_STRING:
@ -570,7 +572,15 @@ void highlight_shell( wchar_t * buff,
&color[tok_get_pos( &tok )], &color[tok_get_pos( &tok )],
pos-tok_get_pos( &tok ), pos-tok_get_pos( &tok ),
error ); error );
if( cmd && (wcscmp( cmd, L"cd" ) == 0) )
{
if( !parser_cdpath_get( context, param ) )
{
color[ tok_get_pos( &tok ) ] = HIGHLIGHT_ERROR;
}
}
} }
else else
{ {
@ -579,9 +589,9 @@ void highlight_shell( wchar_t * buff,
/* /*
Command. First check that the command actually exists. Command. First check that the command actually exists.
*/ */
wchar_t *cmd = expand_one( context, cmd = expand_one( context,
wcsdup(tok_last( &tok )), wcsdup(tok_last( &tok )),
EXPAND_SKIP_SUBSHELL | EXPAND_SKIP_VARIABLES); EXPAND_SKIP_SUBSHELL | EXPAND_SKIP_VARIABLES);
if( cmd == 0 ) if( cmd == 0 )
{ {
@ -853,7 +863,7 @@ void highlight_shell( wchar_t * buff,
wchar_t *tok_begin, *tok_end; wchar_t *tok_begin, *tok_end;
wchar_t *token; wchar_t *token;
parse_util_token_extent( buff, pos, &tok_begin, &tok_end, 0, 0 ); parse_util_token_extent( buff, pos, &tok_begin, &tok_end, 0, 0 );
if( tok_begin ) if( tok_begin )
{ {