View previous topic :: View next topic |
Author |
Message |
Mr. Anderson l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
![](images/avatars/2070781095424ebf0894d33.png)
Joined: 22 Apr 2004 Posts: 762
|
Posted: Sun Nov 18, 2007 12:08 pm Post subject: [GNU]Auto-Vervollständigung nicht zufriedenstellend |
|
|
Die bash bietet Auto-Vervollständigung für Dateinamen und es gibt Tools, mit denen man die Funktion für einzelne Programme um Parameter erweitern kann. Das einzurichten ist aber relativ zeitaufwändig und darf jeder aufs Neue selbst machen. Das finde ich ziemlich unsauber, unkomfortabel und lästig. Wie wäre es, wenn jedes Tool seine Fähigkeiten nach außen mitteilt? Ob zur Übersetzungszeit oder zur Laufzeit ist beides denkbar. Die Parameter müssen ohnehin geparst werden. Warum also nicht eine Auto-Vervollständigung mit Tab für allerlei mögliche Parameter? Zum Beispiel emerge:
<Tab>
<Tab>
Gibt es bereits solche Überlegungen? Wie setzt man das am besten um? |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
musv Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/17022956523ec2f01a46f03.jpg)
Joined: 01 Dec 2002 Posts: 3369 Location: de
|
Posted: Sun Nov 18, 2007 12:40 pm Post subject: |
|
|
Ich glaub, das ist nicht so einfach machbar, da Tab ja einfach nur alle verfügbaren Dateien (Path-Variable) ausliest.
Eine Idee, um das umzusetzen, was du willst, wäre:
Du müßtest die Bash-Completition so ändern, daß bei Eingabe eines "-" mit anschließendem <Tab> automatisch "$befehl --help" aufgerufen wird, der dann die Optionen parst. Je nach Kurzhilfe der einzelnen Befehle wäre das dann mehr oder weniger umständlich möglich. Problematisch wird es, wenn diverse grafische Anwendungen keine Parameter akzeptieren und gleich starten wollen. In dem Fall würde <Tab> dann einfach das Programm starten. Der nächste zu betrachtende Sonderfall wäre die Anzahl der "-" vor der eigentlichen Option. Als nächtes müßtest du noch irgendwas festlegen, wie Dir die Bash-Completition mitteilen soll, ob eine Option noch zusätzliche (und wenn wieviel) Parameter braucht.
Aber ansich find ich die Grundüberlegung gar nicht mal so übel. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mv Watchman
![Watchman Watchman](/images/ranks/rank-G-2-watchman.gif)
![](images/avatars/169262237648b51b40d0ec0.png)
Joined: 20 Apr 2005 Posts: 6780
|
Posted: Sun Nov 18, 2007 1:11 pm Post subject: Re: [GNU]Auto-Vervollständigung nicht zufriedenstellend |
|
|
Mr. Anderson wrote: | Gibt es bereits solche Überlegungen? Wie setzt man das am besten um? |
In der zsh. (Kein Witz - ich war selbst jahrelanger bash-Nutzer und kann mir nach nur ca. 2 Monaten zsh nun nicht mehr vorstellen, warum irgendjemand freiwillig auf die zahlreichen interaktiven Funktionen der zsh verzichten möchte - ohne irgendeinen anderen Vorteil.)
man zshcompsys wrote: | Note also the _gnu_generic function described below, which can be used
to complete options for commands that understand the `--help' option. |
Wobei man das in der Praxis eigentlich nie händisch aufrufen muss, weil nicht nur alle gängigen Unix-Kommandos sondern bereits die meisten Linux-Programme (einschließlich z.B. mplayer und des obigen emerge-Beispiels nach "emerge zsh-completion") - bereits definierte Vervollständigungen haben... |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
manuels Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/106271246545d319130201e.gif)
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Sun Nov 18, 2007 6:20 pm Post subject: |
|
|
als könnte die bash das nicht...
Code: | app-shells/bash-completion |
EDIT: und immer schön das bash-completion-USE-Flag aktivieren. Am besten gleich global. _________________ Build your own live cd with catalyst 2.0! |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Finswimmer Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/1672586922424daf205ec26.jpg)
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Mon Nov 19, 2007 7:03 am Post subject: |
|
|
manuels wrote: | als könnte die bash das nicht...
Code: | app-shells/bash-completion |
EDIT: und immer schön das bash-completion-USE-Flag aktivieren. Am besten gleich global. |
Ich hatte die Flag aktiviert und das Programm war dennoch nicht installiert...
Also enweder gibt es keine Pakete mehr mit diesem Flag, oder es ist sonstwas schief gelaufen.
(Meine Updates mache ich immer mit --newuse und das Flag war schon seit Ewigkeiten in make.conf)
Tobi _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
franzf Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/13378569704a2d5c2dc51c1.jpg)
Joined: 29 Mar 2005 Posts: 4565
|
Posted: Mon Nov 19, 2007 7:52 am Post subject: |
|
|
Finswimmer wrote: | manuels wrote: | als könnte die bash das nicht...
Code: | app-shells/bash-completion |
EDIT: und immer schön das bash-completion-USE-Flag aktivieren. Am besten gleich global. |
Ich hatte die Flag aktiviert und das Programm war dennoch nicht installiert...
7Also enweder gibt es keine Pakete mehr mit diesem Flag, oder es ist sonstwas schief gelaufen.
(Meine Updates mache ich immer mit --newuse und das Flag war schon seit Ewigkeiten in make.conf) |
Ich hab das gesten auch probiert. Google hat mir geholfen
Scheinbar muss bash-completion selbst installiert werden, kommt also nicht als Abhängigkeit eines gesetzten USE-Flags daher. Danach muss in der /etc/bash/bashrc folgender Eintrag rein:
Code: | [[ -f /etc/profile.d/bash-completion ]] && source /etc/profile.d/bash-completion |
Aber Vorsicht, schau die lieber diesen Bug an...
Hier gibts noch bissl mehr Info
Grüße
Franz |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mv Watchman
![Watchman Watchman](/images/ranks/rank-G-2-watchman.gif)
![](images/avatars/169262237648b51b40d0ec0.png)
Joined: 20 Apr 2005 Posts: 6780
|
Posted: Mon Nov 19, 2007 6:24 pm Post subject: |
|
|
manuels wrote: | als könnte die bash das nicht...
Code: | app-shells/bash-completion |
|
Ich hatte nicht behauptet, dass es nicht vorgefertigte Completions für die Bash gäbe (natürlich hatte ich das in den Jahren vorher benutzt).
Aber es ging um die Frage generischer Kommandoergänzung (also nicht fest vorprogrammierter Kommandos). Und der da von der Bash zur Verfügung gestellte Mechanismus ist mehr als bescheiden (man braucht sich nur anzuschauen, wie bash-completion schon in einfahchen Fällen herumwürgen muss), während zsh die gesuchte generische Funktionalität (Parsen von --help) bereits als fertige Funktion mitbringt. Ganz davon zu schweigen, dass die Ergänzung bei zsh (bei entsprechender Konfiguration, die leider nicht der Default ist) auch mit Kommentaren für die einzelnen Kommando-Optionen, bei Files auch LS_COLOR-farbig, und - je nach Geschmack - das ganze auch per Menü mit Cursor auswählbar sein kann. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
69719 l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 20 Sep 2004 Posts: 865
|
Posted: Mon Nov 19, 2007 6:53 pm Post subject: |
|
|
app-shells/gentoo-bashcomp |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
manuels Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/106271246545d319130201e.gif)
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Wed Nov 21, 2007 9:52 am Post subject: |
|
|
mv wrote: | ...während zsh die gesuchte generische Funktionalität (Parsen von --help) bereits als fertige Funktion mitbringt. ... | Sind die --help-Ausgaben standardisiert? _________________ Build your own live cd with catalyst 2.0! |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Mr. Anderson l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
![](images/avatars/2070781095424ebf0894d33.png)
Joined: 22 Apr 2004 Posts: 762
|
Posted: Fri Nov 23, 2007 12:58 pm Post subject: Re: [GNU]Auto-Vervollständigung nicht zufriedenstellend |
|
|
mv wrote: | man zshcompsys wrote: | Note also the _gnu_generic function described below, which can be used
to complete options for commands that understand the `--help' option. |
Wobei man das in der Praxis eigentlich nie händisch aufrufen muss, weil nicht nur alle gängigen Unix-Kommandos sondern bereits die meisten Linux-Programme (einschließlich z.B. mplayer und des obigen emerge-Beispiels nach "emerge zsh-completion") - bereits definierte Vervollständigungen haben... |
Das geht auf jeden Fall in die richtige Richtung. Ich würde es begrüßen, wenn es aber noch weiter ginge. Zum Beispiel könnte
<Tab>
Code: | make
all clean dist distclean install module src |
<Tab>
auch vervollständigt werden (nur als Beispiel, es gibt zahlreiche Anwendungen dafür.) Einen insgesamt generischen Ansatz fände ich nett. Zum Beispiel bei Cisco-Routern kann man mit Tab Informationen darüber erhalten, was für ein Parameter als nächstes erwartet wird und in welchem Format er ist (was alles aber immer noch recht primitiv ist). eselect kann auch etwas Ähnliches mit Eingabetaste. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mv Watchman
![Watchman Watchman](/images/ranks/rank-G-2-watchman.gif)
![](images/avatars/169262237648b51b40d0ec0.png)
Joined: 20 Apr 2005 Posts: 6780
|
Posted: Fri Nov 23, 2007 5:43 pm Post subject: Re: [GNU]Auto-Vervollständigung nicht zufriedenstellend |
|
|
Mr. Anderson wrote: | Das geht auf jeden Fall in die richtige Richtung. Ich würde es begrüßen, wenn es aber noch weiter ginge. Zum Beispiel könnte ... |
Das macht die zsh genau so (falls ein Makefile im Directory steht) [das macht aber auch bash-completion schon so]:
Code: | & tar xzf /usr/portage/distfiles/sudo-1.6.8p12.tar.gz
& cd sudo-1.6.8p12
& ./configure >/dev/null
& make in<tab>
install install-binaries install-dirs install-man install-noexec install-sudoers interfaces.o |
|
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Mr. Anderson l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
![](images/avatars/2070781095424ebf0894d33.png)
Joined: 22 Apr 2004 Posts: 762
|
Posted: Fri Nov 23, 2007 6:39 pm Post subject: Re: [GNU]Auto-Vervollständigung nicht zufriedenstellend |
|
|
mv wrote: | Mr. Anderson wrote: | Das geht auf jeden Fall in die richtige Richtung. Ich würde es begrüßen, wenn es aber noch weiter ginge. Zum Beispiel könnte ... |
Das macht die zsh genau so (falls ein Makefile im Directory steht) [das macht aber auch bash-completion schon so]:
Code: | & tar xzf /usr/portage/distfiles/sudo-1.6.8p12.tar.gz
& cd sudo-1.6.8p12
& ./configure >/dev/null
& make in<tab>
install install-binaries install-dirs install-man install-noexec install-sudoers interfaces.o |
|
Korrigiere mich, wenn ich mich irre - so weit ich das sehe, ist diese Funktion nur von der zsh bereitgestellt und nicht von make selbst. Oder anders: Kann ich ein völlig brandneues bleeding-edge-Programm in den PATH aufnehmen, ohne an der zsh basteln zu müssen? |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Necoro Veteran
![Veteran Veteran](/images/ranks/rank_rect_5_vet.gif)
![](images/avatars/163672451943ab3dcad64df.gif)
Joined: 18 Dec 2005 Posts: 1912 Location: Germany
|
Posted: Fri Nov 23, 2007 7:12 pm Post subject: Re: [GNU]Auto-Vervollständigung nicht zufriedenstellend |
|
|
Mr. Anderson wrote: | mv wrote: | Mr. Anderson wrote: | Das geht auf jeden Fall in die richtige Richtung. Ich würde es begrüßen, wenn es aber noch weiter ginge. Zum Beispiel könnte ... |
Das macht die zsh genau so (falls ein Makefile im Directory steht) [das macht aber auch bash-completion schon so]:
Code: | & tar xzf /usr/portage/distfiles/sudo-1.6.8p12.tar.gz
& cd sudo-1.6.8p12
& ./configure >/dev/null
& make in<tab>
install install-binaries install-dirs install-man install-noexec install-sudoers interfaces.o |
|
Korrigiere mich, wenn ich mich irre - so weit ich das sehe, ist diese Funktion nur von der zsh bereitgestellt und nicht von make selbst. Oder anders: Kann ich ein völlig brandneues bleeding-edge-Programm in den PATH aufnehmen, ohne an der zsh basteln zu müssen? |
Halte ich für stark unwahrscheinlich ... für out-of-the-box müsste man für Programme ja eine Schicht einbauen, die von den Shells für sowas genutzt werden kann. Sowas gibt es aber im Moment nicht (zu min nicht dass ich wüsste)... _________________ Inter Deum Et Diabolum Semper Musica Est. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
|