hello, N'ayant jamais eu le courage de m'attaquer serieusement au man zsh relatif a la completion, je travaille avec les qq recettes de cuisine bien pratiques choppés a droite ou a gauche. par exemple, j'ai compdef _man superman compdef 'compadd ~/.mutt/dratfs/*(:r:t)' mms compdef 'compadd /home/services/qemu/*(:r:t)' vm_boot compdef 'compadd /etc/apache2/mods-available/*(:r:t)' a2enmod compdef 'compadd /etc/apache2/mods-enabled/*(:r:t)' a2dismod compdef 'compadd /etc/apache2/sites-available/*(:r:t)' a2ensite compdef 'compadd /etc/apache2/sites-enabled/*(:r:t)' a2dissite compdef 'compadd ~/local/etc/zsh/rc/*(:t)' edit_zsh_rc ok ... maintenant, soit la fonction remote_screen_sessions qui m'affiche la liste des sessions screen d'une machine distante (j'ai sué pour trouver le nom ...). remote_screen_sessions () { ssh $1 screen -ls | perl -nE ' /^\s+\d+\.(?<screenname>\S+)\s+\(/ and say $+{screenname} ' } j'aimerais pouvoir faire compdef 'compadd `remote_screen_sessions www.google.com`' www.google.com ca ne marche pas ... meme quand j'ai mon agent qui tourne et que ma clef est authorized sur www.google.com. une idée? marc .oO IDLE BREAK P0WN3D Oo.
Salut, On Thu, Nov 11, 2010 at 10:38:41AM +0100, Marc Chantreux wrote:
compdef 'compadd /etc/apache2/mods-available/*(:r:t)' a2enmod compdef 'compadd /etc/apache2/mods-enabled/*(:r:t)' a2dismod compdef 'compadd /etc/apache2/sites-available/*(:r:t)' a2ensite compdef 'compadd /etc/apache2/sites-enabled/*(:r:t)' a2dissite
Tu devrais plus avoir besoin de ceux-là si ton zsh est récent, _a2utils les prend en charge.
compdef 'compadd `remote_screen_sessions www.google.com`' www.google.com
ca ne marche pas ... meme quand j'ai mon agent qui tourne et que ma clef est authorized sur www.google.com.
Chez moi ça marche : compdef 'compadd $(remote_screen_sessions localhost)' kikoo Par contre si je mets comme toi www.google.com, ça marche pas, il tente de compléter avec autre chose : $ www.google.com ^x^h tags in context :completion::complete:iceweasel:: argument-rest options (_arguments _x_arguments _mozilla (eval)) tags in context :completion::complete:iceweasel:argument: prefixes (_urls _mozilla (eval)) tags in context :completion::complete:iceweasel:argument-rest: all-files (_files _mozilla (eval)) En fait, c'est un alias de suffixe qui me donne ce comportement : alias -s com=iceweasel Regarde si t'as pas un truc comme ça qui traîne et « unalias -s com » devrait te corriger ça. En espèrant que ça t'aide. -- Anthony CHARLES
On Thu, Nov 11, 2010 at 01:21:15PM +0100, Anthony Charles wrote:
compdef 'compadd /etc/apache2/mods-available/*(:r:t)' a2enmod compdef 'compadd /etc/apache2/mods-enabled/*(:r:t)' a2dismod compdef 'compadd /etc/apache2/sites-available/*(:r:t)' a2ensite compdef 'compadd /etc/apache2/sites-enabled/*(:r:t)' a2dissite
Tu devrais plus avoir besoin de ceux-là si ton zsh est récent, _a2utils les prend en charge.
je me dis parfois qu'il faudrait que je reprenne ma conf de 0 pour réintégrer que les trucs qui me servent vraiment ... en fait je me sers plus de mon .zshrc comme code snippets qu'autre chose :)
compdef 'compadd `remote_screen_sessions www.google.com`' www.google.com
Chez moi ça marche : compdef 'compadd $(remote_screen_sessions localhost)' kikoo
haha ... la belle jambe ;) ... une histoire d'alias donc ... moi j'ai ca: $ alias www.google.com alias www.google.com='ssh -t www.google.com new_screen_for marc' pour info quand je dis "ca marche pas" c'est: il complete avec des noms de fichier. cordialement marc
On Fri, Nov 12, 2010 at 08:52:59AM +0100, Marc Chantreux wrote:
haha ... la belle jambe ;) ... une histoire d'alias donc ... moi j'ai ca:
$ alias www.google.com alias www.google.com='ssh -t www.google.com new_screen_for marc'
pour info quand je dis "ca marche pas" c'est: il complete avec des noms de fichier.
Essaie de taper : $ www.google.com ^x^h avec un espace avant de faire ton ^x^h, il va te montrer avec quoi il essaie de compléter. Comme zsh est bien fait, j'imagine qu'il utilise _ssh pour compléter le reste de ta commande, ce que tu ne veux pas dans ce cas. À priori la solution la plus simple, c'est « setopt completealiases » qui transforme tes alias en commande à part (cf. man zshoptions et le zshguide). Par contre, ça casse la complétion de tes autres alias, tu es alors obligé de définir manuellement leur complétion via compdef. -- Anthony CHARLES
participants (2)
-
Anthony Charles
-
Marc Chantreux