Add support for the Ubuntu 'command-no-found' handler, which suggests a package to install in order to get a command.

darcs-hash:20080114223124-75c98-ab1658d54086394cf13f3a6210543c0b790362c4.gz
This commit is contained in:
liljencrantz 2008-01-15 08:31:24 +10:00
parent a2660cfb76
commit 537ab32dd9
4 changed files with 19 additions and 2 deletions

11
event.c
View File

@ -704,9 +704,11 @@ void event_free( event_t *e )
} }
void event_fire_generic(const wchar_t *name) void event_fire_generic_internal(const wchar_t *name, ...)
{ {
event_t ev; event_t ev;
va_list va;
wchar_t *arg;
CHECK( name, ); CHECK( name, );
@ -715,6 +717,13 @@ void event_fire_generic(const wchar_t *name)
ev.function_name=0; ev.function_name=0;
al_init( &ev.arguments ); al_init( &ev.arguments );
va_start( va, name );
while( (arg=va_arg(va, wchar_t *) )!= 0 )
{
al_push( &ev.arguments, arg );
}
va_end( va );
event_fire( &ev ); event_fire( &ev );
} }

View File

@ -164,7 +164,8 @@ const wchar_t *event_get_desc( event_t *e );
/** /**
Fire a generic event with the specified name Fire a generic event with the specified name
*/ */
void event_fire_generic(const wchar_t *name); #define event_fire_generic( ... ) event_fire_generic_internal( __VA_ARGS__, (void *)0 )
void event_fire_generic_internal(const wchar_t *name,...);
#endif #endif

View File

@ -2086,6 +2086,7 @@ static int parse_job( process_t *p,
current_tokenizer_pos=tmp; current_tokenizer_pos=tmp;
job_set_flag( j, JOB_SKIP, 1 ); job_set_flag( j, JOB_SKIP, 1 );
event_fire_generic(L"fish_command_not_found", (wchar_t *)al_get( args, 0 ) );
proc_set_last_status( err==ENOENT?STATUS_UNKNOWN_COMMAND:STATUS_NOT_EXECUTABLE ); proc_set_last_status( err==ENOENT?STATUS_UNKNOWN_COMMAND:STATUS_NOT_EXECUTABLE );
} }
} }

View File

@ -209,5 +209,11 @@ function __fish_config_interactive -d "Initializations that should be performed
commandline -f repaint commandline -f repaint
end end
if test -f /usr/lib/command-not-found $argv
function fish_command_not_found_handler --on-event fish_command_not_found
/usr/lib/command-not-found $argv
end
end
end end