Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[GNU]Auto-Vervollständigung nicht zufriedenstellend
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 762

PostPosted: Sun Nov 18, 2007 12:08 pm    Post subject: [GNU]Auto-Vervollständigung nicht zufriedenstellend Reply with quote

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:

Code:
eme

<Tab>
Code:
emerge

Code:
emerge --re

<Tab>
Code:
emerge --resume


Gibt es bereits solche Überlegungen? Wie setzt man das am besten um?
Back to top
View user's profile Send private message
musv
Advocate
Advocate


Joined: 01 Dec 2002
Posts: 3369
Location: de

PostPosted: Sun Nov 18, 2007 12:40 pm    Post subject: Reply with quote

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
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Sun Nov 18, 2007 1:11 pm    Post subject: Re: [GNU]Auto-Vervollständigung nicht zufriedenstellend Reply with quote

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
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Sun Nov 18, 2007 6:20 pm    Post subject: Reply with quote

als könnte die bash das nicht... :roll: :wink:
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
View user's profile Send private message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Mon Nov 19, 2007 7:03 am    Post subject: Reply with quote

manuels wrote:
als könnte die bash das nicht... :roll: :wink:
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
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Mon Nov 19, 2007 7:52 am    Post subject: Reply with quote

Finswimmer wrote:
manuels wrote:
als könnte die bash das nicht... :roll: :wink:
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
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Mon Nov 19, 2007 6:24 pm    Post subject: Reply with quote

manuels wrote:
als könnte die bash das nicht... :roll: :wink:
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
View user's profile Send private message
69719
l33t
l33t


Joined: 20 Sep 2004
Posts: 865

PostPosted: Mon Nov 19, 2007 6:53 pm    Post subject: Reply with quote

app-shells/gentoo-bashcomp
Back to top
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Wed Nov 21, 2007 9:52 am    Post subject: Reply with quote

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
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 762

PostPosted: Fri Nov 23, 2007 12:58 pm    Post subject: Re: [GNU]Auto-Vervollständigung nicht zufriedenstellend Reply with quote

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

Code:
make

<Tab>
Code:
make
all clean dist distclean install module src

Code:
make i

<Tab>
Code:
make install


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
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Fri Nov 23, 2007 5:43 pm    Post subject: Re: [GNU]Auto-Vervollständigung nicht zufriedenstellend Reply with quote

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
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 762

PostPosted: Fri Nov 23, 2007 6:39 pm    Post subject: Re: [GNU]Auto-Vervollständigung nicht zufriedenstellend Reply with quote

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
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Fri Nov 23, 2007 7:12 pm    Post subject: Re: [GNU]Auto-Vervollständigung nicht zufriedenstellend Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum