2010-04-11 9 views
7

Ho sudato sulla domanda di cui sopra. La risposta che fornirò mi ci è voluto un po 'per ricostruirmi, ma sembra ancora irrimediabilmente primitivo e hacky rispetto a quello che si potrebbe fare se il completamento fosse ridisegnato per essere meno pignolo. Ho quasi paura di chiedere se ci sia una buona ragione per cui la logica di completamento sembra essere completamente separata dal programma per il quale sta completando.Come raggruppare il completamento di bash con un programma e farlo funzionare nella shell corrente?

risposta

8

Ho scritto una libreria della riga di comando (può essere vista in scala trunk) che consente di capovolgere un interruttore per avere un'opzione "--bash". Se si esegue

./program --bash 

Calcola il file di completamento, lo scrive fuori ad un tempfile, e fa eco

. /path/to/temp/file 

alla console. Il risultato è che è possibile utilizzare backticks in questo modo:

`./program --bash` 

e avrete il completamento di "programma" nella shell corrente dal momento che sarà fonte del tempfile.

Per un esempio concreto: check-out scala trunk ed eseguire test/partest.

+3

È possibile sbarazzarsi di file di temprary utilizzando qui stringhe: source/dev/stdin <<< "$ (./ programma --bash)" –

+0

Sì, lo avevo incontrato, ma nella formulazione ho visto non ha funzionato su OSX. Il tuo lo fa! Grazie mille. – extempore

+0

A partire dal 2017-10-06 il link è morto – Morgen

Problemi correlati