/ / Hinzufügen der automatischen Vervollständigung von Dateien in Rake mit zsh - zsh, autocomplete, oh-my-zsh

Hinzufügen der automatischen Vervollständigung von Dateien in Rake mit zsh - zsh, autocomplete, oh-my-zsh

Zsh

ich habe oh-my-zsh installiert mit dem rails Plugin, wenn ich es benutze zsh Abschluss mit rakewird mit der Aufgabenliste von abgeschlossen rake -T.

Wenn ich einen bestimmten Test durchführe, ist einer der Parameter der Pfad zur Testdatei:

rake test test/models/dummy_model.rb

Ich versuche oft, diesen Pfad automatisch zu vervollständigen, und es funktioniert offensichtlich nicht.

rake test test/models/...

Ich möchte in der Lage sein, neben Aufgaben auch Dateipfade auszufüllen. Wie könnte ich das machen?

Antworten:

3 für Antwort № 1

Wenn ich Sie richtig verstehe, geschieht dies nur, wenn Sie das Formular verwenden rake test .... Dann kannst du diesen Patch gegen benutzen $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

Dieser Patch fügt im Prinzip die Bedingung hinzu if [[ $words[$((CURRENT-1))] == "test" ]]; Damit wird überprüft, ob das vorherige Argument "test" entspricht. Und wenn ja, werden Dateien und Verzeichnisse über das zurückgegeben _files Funktion anstelle von Rechenzielen.


Verwandte Fragen
Bemerkungen
Einen Kommentar hinzufügen