Aggiunta del completamento automatico di file nel rake con zsh


3

Ho oh-my-zshinstallato con il railsplugin, quando uso il zshcompletamento con rake, si completa con l'elenco delle attività da rake -T.

Quando eseguo un test specifico, uno dei parametri è il percorso del file di test:

rake test test/models/dummy_model.rb

Cerco spesso di completare automaticamente questo percorso e ovviamente non funziona.

rake test test/models/...

Vorrei poter completare i percorsi dei file oltre alle attività. Come potrei farlo?

Risposte:


3

Se ti capisco bene, questo si verifica solo quando si utilizza il modulo rake test .... Quindi puoi usare questa patch contro$fpath/_rake

diff --git a/Completion/Unix/Command/_rake b/Completion/Unix/Command/_rake
index 7fed949..96ee930 100644
--- a/Completion/Unix/Command/_rake
+++ b/Completion/Unix/Command/_rake
@@ -37,12 +37,16 @@ case "$state" in
   ;;
   target)
     local -a targets
-    targets=( ${${(f)"$(_call_program targets $words[1] -sT $opt_args[(I)(-N|--nosearch)] ${(kv)opt_args[(I)(-f|--rakefile)]} 2>/dev/null)"}/(#b)rake ([^ ]##) ##\# (*)/${${match[1]}//:/\\:}:${match[2]:l}} )
-    if (( ! ${targets[(I)rake aborted!]} )) then
-      _describe -t targets 'rake target' targets && ret=0
-    else
-      _message -e targets 'rake target'
-    fi
+    if [[ $words[$((CURRENT-1))] == "test" ]]; then
+       _files && ret=0
+       else
+           targets=( ${${(f)"$(_call_program targets $words[1] -sT $opt_args[(I)(-N|--nosearch)] ${(kv)opt_args[(I)(-f|--rakefile)]} 2>/dev/null)"}/(#b)rake ([^ ]##) ##\# (*)/${${match[1]}//:/\\:}:${match[2]:l}} )
+           if (( ! ${targets[(I)rake aborted!]} )) then
+             _describe -t targets 'rake target' targets && ret=0
+           else
+             _message -e targets 'rake target'
+           fi
+       fi
   ;;
 esac

Quella patch in linea di principio aggiunge la condizione if [[ $words[$((CURRENT-1))] == "test" ]];che controlla se l'argomento precedente è uguale a "test". E in tal caso, i file e le directory vengono restituiti tramite la _filesfunzione anziché le destinazioni rake.


Eccezionale ! Grazie mille, ha funzionato perfettamente. Per la cronaca, su OS X Yosemite, il percorso del file è /usr/share/zsh/5.0.5/functions/_rake( /usr/share/zsh/5.0.2/functions/_rakesu OS X Mavericks)
ybart

Questo dovrebbe essere nel file di completamento ufficiale. Perché non invii una patch ??
Pablo Olmos de Aguilera C.

Le patch non sono attualmente accettate tramite gli strumenti di ticketing di SourceForge. La shell è gestita da vari abbonati (completamente autoproclamati) alla mailing list, zsh-workers@zsh.org, quindi posta su eventuali problemi (segnalazioni di bug, suggerimenti, reclami ...) relativi allo sviluppo della shell essere inviato lì. Se vuoi che qualcuno ti spedisca direttamente, dillo. La maggior parte delle patch su zsh appaiono prima lì.
Pablo Olmos de Aguilera C.

@pablox Non esitate a inviare questa patch a zsh-worker. Non l'ho fatto da solo perché non lo so rakee quindi non posso giudicare se affronta solo un caso speciale o ha senso in generale.
mpy

Continuerò ad usare ancora un paio di giorni, ma fino ad ora sembra ok :). Come hai imparato a fare i completamenti di zsh?
Pablo Olmos de Aguilera C.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.