Ich versuche ein Autocomplete-Skript zur Verwendung mit Fisch zu erstellen. Ich portiere über ein Bash-Vervollständigungsscript für das gleiche Programm.
Das Programm hat drei Top-Level-Befehle, sagen wir foo
, bar
und baz
und jeder hat einige Unterbefehle, sagen Sie einfach a
b
und c
für jeden.
Was ich sehe, ist, dass die Befehle der obersten Ebene automatisch abgeschlossen werden. Wenn ich also f
eintippe, bekomme ich foo
zur automatischen Vervollständigung, aber wenn ich dann erneut auf Tab klicke, um zu sehen, welche Unterbefehle es gibt, Ich sehe foo
, bar
, baz
, a
, b
, c
und es sollte nur a
, b
, c
Ich verwende als Referenz das Git-Vervollständigungsscript , wie es scheint richtig arbeiten. Ich verwende auch das Git-Fließskript als Referenz.
Ich denke Dies wird im Git-Vervollständigungsskript folgendermaßen gehandhabt:
%Vor% Was sinnvoll ist, können Sie die Vervollständigung nur verwenden, wenn nur ein Argument für den Befehl vorhanden ist, das Skript selbst; Wenn Sie das als Bedingung ( -n
) verwenden, um den Aufruf auf der obersten Ebene auszuführen, denke ich, dass das Richtige passieren würde.
Allerdings ist das, was ich sehe, nicht der Fall. Ich kopierte diese Funktion in mein Skript, änderte "git" entsprechend und hatte kein Glück.
Das abgespeckte Skript ist wie folgt:
%Vor%Irgendwelche Vorschläge, wie Sie diese Arbeit machen können, werden sehr geschätzt.
Ich nehme an, Sie wissen, dass return 0
wahr bedeutet und dass return 1
falsch bedeutet?
Von Ihrer Ausgabe sieht es so aus, als ob Ihre needs_command
-Funktion nicht richtig funktioniert und somit auch bei Unterbefehlen ein Balken angezeigt wird.
Ich habe gerade den folgenden Code ausprobiert und es funktioniert wie erwartet:
%Vor%Ausgabe vom Abschluss:
%Vor%Ist das was du willst?
Tags und Links fish