Conclusão do Bash: mostra separadamente os resultados de diferentes fontes

1

Eu segui este tutorial para escrever minha função de conclusão do bash . Funcionou muito bem, mas eu queria saber se é possível mostrar conclusões de diferentes fontes separadamente.

Por exemplo, suponha que eu tenha um script que tenha um diretório como argumento e eu queira completar automaticamente os possíveis diretórios (listados por get_dirs ):

function _testing_command()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    local prev=${COMP_WORDS[COMP_CWORD-1]}

    case "$prev" in
        testing )
            COMPREPLY=( $(compgen -W "$(get_dirs)" -- $cur) )
            ;;
    esac
}
complete -F _testing_command testing

Isso funciona bem e autocompleta os diretórios corretamente:

$ testing <TAB><TAB>
dir1 dir3 dir5
$ testing

No entanto, e se eu agora tiver um segundo conjunto de diretórios (listados por get_dirs_2 ) que desejo incluir na saída de preenchimento automático. Eu posso fazer o seguinte:

function _testing_command()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    local prev=${COMP_WORDS[COMP_CWORD-1]}

    case "$prev" in
        testing )
            COMPREPLY=( $(compgen -W "$(get_dirs) $(get_dirs_2)" -- $cur) )
            ;;
    esac
}
complete -F _testing_command testing

Qual será o resultado:

$ testing <TAB><TAB>
dir1 dir2 dir3 dir4 dir5 dir6
$ testing

Tecnicamente, tudo bem, porque o preenchimento automático funcionará nos diretórios das duas origens. Mas eu quero que a saída de alguma forma signifique qual diretório vem de qual local, por exemplo:

$ testing <TAB><TAB>
from loc1:
dir1 dir3 dir5
from loc2:
dir2 dir4 dir6
$ testing

Tenho algum controle sobre o formato de saída? Ou simplesmente não é possível conseguir algo assim com as funções completas / compgen?

    
por PieterV 08.10.2015 / 12:27

0 respostas