mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-03-27 14:45:13 +08:00
Second round of bug fixes and minor code improvements after the completions struct update. Fix space insertion issues on command specific completions.
darcs-hash:20070225103715-ac50b-5aaaa1c1c6ed1084ba68841fb70cc23c84f19806.gz
This commit is contained in:
parent
a3c5718eb9
commit
7c96cb2ff8
24
complete.c
24
complete.c
@ -186,6 +186,18 @@ void completion_allocate( array_list_t *context,
|
|||||||
res->completion = halloc_wcsdup( context, comp );
|
res->completion = halloc_wcsdup( context, comp );
|
||||||
if( desc )
|
if( desc )
|
||||||
res->description = halloc_wcsdup( context, desc );
|
res->description = halloc_wcsdup( context, desc );
|
||||||
|
|
||||||
|
if( flags & COMPLETE_AUTO_SPACE )
|
||||||
|
{
|
||||||
|
int len = wcslen(comp);
|
||||||
|
|
||||||
|
flags = flags & (~COMPLETE_AUTO_SPACE);
|
||||||
|
|
||||||
|
if( ( len > 0 ) && ( wcschr( L"/=@:", comp[ len - 1 ] ) != 0 ) )
|
||||||
|
flags |= COMPLETE_NO_SPACE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
res->flags = flags;
|
res->flags = flags;
|
||||||
al_push( context, res );
|
al_push( context, res );
|
||||||
}
|
}
|
||||||
@ -883,7 +895,8 @@ static void complete_strings( array_list_t *comp_out,
|
|||||||
const wchar_t *wc_escaped,
|
const wchar_t *wc_escaped,
|
||||||
const wchar_t *desc,
|
const wchar_t *desc,
|
||||||
const wchar_t *(*desc_func)(const wchar_t *),
|
const wchar_t *(*desc_func)(const wchar_t *),
|
||||||
array_list_t *possible_comp )
|
array_list_t *possible_comp,
|
||||||
|
int flags )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
wchar_t *wc, *tmp;
|
wchar_t *wc, *tmp;
|
||||||
@ -901,7 +914,7 @@ static void complete_strings( array_list_t *comp_out,
|
|||||||
wchar_t *next_str = (wchar_t *)al_get( possible_comp, i );
|
wchar_t *next_str = (wchar_t *)al_get( possible_comp, i );
|
||||||
if( next_str )
|
if( next_str )
|
||||||
{
|
{
|
||||||
wildcard_complete( next_str, wc, desc, desc_func, comp_out, 0 );
|
wildcard_complete( next_str, wc, desc, desc_func, comp_out, flags );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1152,7 +1165,7 @@ static void complete_cmd( const wchar_t *cmd,
|
|||||||
if( use_function )
|
if( use_function )
|
||||||
{
|
{
|
||||||
function_get_names( &possible_comp, cmd[0] == L'_' );
|
function_get_names( &possible_comp, cmd[0] == L'_' );
|
||||||
complete_strings( comp, cmd, 0, &complete_function_desc, &possible_comp );
|
complete_strings( comp, cmd, 0, &complete_function_desc, &possible_comp, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
al_truncate( &possible_comp, 0 );
|
al_truncate( &possible_comp, 0 );
|
||||||
@ -1160,7 +1173,7 @@ static void complete_cmd( const wchar_t *cmd,
|
|||||||
if( use_builtin )
|
if( use_builtin )
|
||||||
{
|
{
|
||||||
builtin_get_names( &possible_comp );
|
builtin_get_names( &possible_comp );
|
||||||
complete_strings( comp, cmd, 0, &builtin_get_desc, &possible_comp );
|
complete_strings( comp, cmd, 0, &builtin_get_desc, &possible_comp, 0 );
|
||||||
}
|
}
|
||||||
al_destroy( &possible_comp );
|
al_destroy( &possible_comp );
|
||||||
|
|
||||||
@ -1219,7 +1232,6 @@ static void complete_from_args( const wchar_t *str,
|
|||||||
{
|
{
|
||||||
|
|
||||||
array_list_t possible_comp;
|
array_list_t possible_comp;
|
||||||
/* int i; */
|
|
||||||
|
|
||||||
al_init( &possible_comp );
|
al_init( &possible_comp );
|
||||||
|
|
||||||
@ -1227,7 +1239,7 @@ static void complete_from_args( const wchar_t *str,
|
|||||||
eval_args( args, &possible_comp );
|
eval_args( args, &possible_comp );
|
||||||
proc_pop_interactive();
|
proc_pop_interactive();
|
||||||
|
|
||||||
complete_strings( comp_out, str, desc, 0, &possible_comp );
|
complete_strings( comp_out, str, desc, 0, &possible_comp, COMPLETE_AUTO_SPACE );
|
||||||
|
|
||||||
al_foreach( &possible_comp, &free );
|
al_foreach( &possible_comp, &free );
|
||||||
al_destroy( &possible_comp );
|
al_destroy( &possible_comp );
|
||||||
|
@ -84,6 +84,12 @@
|
|||||||
*/
|
*/
|
||||||
#define COMPLETE_WHOLE_ARGUMENT 4
|
#define COMPLETE_WHOLE_ARGUMENT 4
|
||||||
|
|
||||||
|
/**
|
||||||
|
This completion may or may not want a space at the end - guess by
|
||||||
|
checking the last character of the completion.
|
||||||
|
*/
|
||||||
|
#define COMPLETE_AUTO_SPACE 8
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user