* alias of completion @ 2018-03-02 9:31 ` Pier Paolo Grassi 2018-03-02 10:51 ` Peter Stephenson 2018-03-02 12:08 ` m0viefreak 0 siblings, 2 replies; 7+ messages in thread From: Pier Paolo Grassi @ 2018-03-02 9:31 UTC (permalink / raw) To: zsh-users [-- Attachment #1: Type: text/plain, Size: 1321 bytes --] Hello guys, I just joined the list but I have been a zsh enthusiast for 15 years and since I discovered it it's always been the best work enviroment I ever had. One thing I was never been able to accomplish though, is: what if I want a custom function, say: mydockerwrapper(){} behave, for completion's sake, like, let's say: docker ls so that if I try to complete after mydockerwrapper <TAB> I get the same suggestion that I would get after docker ls, and if I have mydockerwrapper xx <TAB> I get the same completion that I would get after docker ls xx, and so on. -what I tried- I know that the completion function for the docker command is _docker, and that I could associate my function to this completion function with compdef _docker mydockerwrapper but it doesn't seem possibile to pass one default argument to the completion function in this way. So I tried defining my own completion function, and add one argument and pass it to the _docker function, but I got stuck on this one. I'm sure this must be very easy to do in zsh, I just can't figure out how.. maybe someone can help me out? thanks, happy coding everyone! -- Pier Paolo Grassi email: pierpaolog@gmail.com linkedin: https://www.linkedin.com/in/pier-paolo-grassi-19300217 fondatore: https://www.meetup.com/it-IT/Machine-Learning-TO ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: alias of completion 2018-03-02 9:31 ` alias of completion Pier Paolo Grassi @ 2018-03-02 10:51 ` Peter Stephenson 2018-03-02 12:00 ` Pier Paolo Grassi 2018-03-02 12:08 ` m0viefreak 1 sibling, 1 reply; 7+ messages in thread From: Peter Stephenson @ 2018-03-02 10:51 UTC (permalink / raw) To: Pier Paolo Grassi, zsh-users From: Peter Stephenson <p.stephenson@samsung.com> To: Pier Paolo Grassi <pierpaolog@gmail.com> Cc: zsh-users@zsh.org Subject: Re: alias of completion Date: Fri, 2 Mar 2018 10:47:34 +0000 X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) Organization: SCSC On Fri, 2 Mar 2018 10:31:57 +0100 Pier Paolo Grassi <pierpaolog@gmail.com> wrote: > One thing I was never been able to accomplish though, is: what if I > want a custom function, say: > > mydockerwrapper(){} > > behave, for completion's sake, like, let's say: > > docker ls > > so that if I try to complete after > > mydockerwrapper <TAB> > > I get the same suggestion that I would get after docker ls, and if I > have > > mydockerwrapper xx <TAB> > > I get the same completion that I would get after docker ls xx, and > so on. You need a bit of help from the completion function in question to do this. The feature in question is "services": I just looked at the docker completion and it does support this. You'll need to do something like compdef _docker mydockerwrapper=docker_service_complete_ls_filters where the thing on the right of the "=" is an appropriate docker completion function without the "_" (search for _$service for the code in _docker supporting this). pws ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: alias of completion 2018-03-02 10:51 ` Peter Stephenson @ 2018-03-02 12:00 ` Pier Paolo Grassi 0 siblings, 0 replies; 7+ messages in thread From: Pier Paolo Grassi @ 2018-03-02 12:00 UTC (permalink / raw) To: Peter Stephenson; +Cc: zsh-users [-- Attachment #1: Type: text/plain, Size: 2855 bytes --] Hello Peter, thank you for your suggestion. Following it I was able to write: compdef _docker xy=_docker_image_commands that kind of work for the first word, the problem is that the second word is not completed correctly since it tries again to use _docker_image_commands instead of whaterver it should have called. The only functions defined inside the file that /usr/share/zsh/vendor-completions/_docker match the word image are: __docker_complete_images __docker_complete_images_filters __docker_image_commands __docker_image_subcommand so there isn't a more general completion function like _docker_image that takes care of the completion for docker image [xx [yy]...], but there are various functions called from __docker_subcommand inspecting the array $words. What I would need, I think, is the ability to populate from another completion function this array adding as first argument the value "image", so that: compadd _docker mydockerwrapper=docker would make __docker_subcommand behave as if the command line contained not only "docker" but "docker image", something like: compadd _docker mydockerwrapper="docker image" that is obviously wrong because "docker image" it is not a correct service name, I wrote it just to illustrate my point 2018-03-02 11:51 GMT+01:00 Peter Stephenson <p.stephenson@samsung.com>: > From: Peter Stephenson <p.stephenson@samsung.com> > To: Pier Paolo Grassi <pierpaolog@gmail.com> > Cc: zsh-users@zsh.org > Subject: Re: alias of completion > Date: Fri, 2 Mar 2018 10:47:34 +0000 > X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) > Organization: SCSC > > On Fri, 2 Mar 2018 10:31:57 +0100 > Pier Paolo Grassi <pierpaolog@gmail.com> wrote: > > One thing I was never been able to accomplish though, is: what if I > > want a custom function, say: > > > > mydockerwrapper(){} > > > > behave, for completion's sake, like, let's say: > > > > docker ls > > > > so that if I try to complete after > > > > mydockerwrapper <TAB> > > > > I get the same suggestion that I would get after docker ls, and if I > > have > > > > mydockerwrapper xx <TAB> > > > > I get the same completion that I would get after docker ls xx, and > > so on. > > You need a bit of help from the completion function in > question to do this. The feature in question is "services": I just > looked at the docker completion and it does support this. > > You'll need to do something like > > compdef _docker mydockerwrapper=docker_service_complete_ls_filters > > where the thing on the right of the "=" is an appropriate docker > completion function without the "_" (search for _$service for the code > in _docker supporting this). > > pws > -- Pier Paolo Grassi email: pierpaolog@gmail.com linkedin: https://www.linkedin.com/in/pier-paolo-grassi-19300217 fondatore: https://www.meetup.com/it-IT/Machine-Learning-TO ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: alias of completion 2018-03-02 9:31 ` alias of completion Pier Paolo Grassi 2018-03-02 10:51 ` Peter Stephenson @ 2018-03-02 12:08 ` m0viefreak 2018-03-02 12:15 ` Pier Paolo Grassi 2018-03-02 22:23 ` Joey Pabalinas 1 sibling, 2 replies; 7+ messages in thread From: m0viefreak @ 2018-03-02 12:08 UTC (permalink / raw) To: zsh-users; +Cc: Pier Paolo Grassi On 02.03.2018 10:31, Pier Paolo Grassi wrote: > Hello guys, I just joined the list but I have been a zsh enthusiast for 15 > years and since I discovered it it's always been the best work enviroment I > ever had. > One thing I was never been able to accomplish though, is: what if I want a > custom function, say: > > mydockerwrapper(){} > > behave, for completion's sake, like, let's say: > > docker ls > > so that if I try to complete after > > mydockerwrapper <TAB> > > I get the same suggestion that I would get after docker ls, and if I have > > mydockerwrapper xx <TAB> > > I get the same completion that I would get after docker ls xx, and so on. > > -what I tried- > > I know that the completion function for the docker command is _docker, and > that I could associate my function to this completion function with > > compdef _docker mydockerwrapper > > but it doesn't seem possibile to pass one default argument to the > completion function in this way. > > So I tried defining my own completion function, and add one argument and > pass it to the _docker function, but I got stuck on this one. > > I'm sure this must be very easy to do in zsh, I just can't figure out how.. > maybe someone can help me out? > > thanks, happy coding everyone! > > You could modify CURRENT and words in a custom completion function and then just call _normal ("docker ls" is one word more than "mydockerwrapper"): _mydockerwrapper() { ((CURRENT++)) words=(docker ls "${words[@]:1}") _normal } compdef _mydockerwrapper mydockerwrapper ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: alias of completion 2018-03-02 12:08 ` m0viefreak @ 2018-03-02 12:15 ` Pier Paolo Grassi 2018-03-02 22:23 ` Joey Pabalinas 1 sibling, 0 replies; 7+ messages in thread From: Pier Paolo Grassi @ 2018-03-02 12:15 UTC (permalink / raw) To: m0viefreak; +Cc: zsh-users [-- Attachment #1: Type: text/plain, Size: 2014 bytes --] YES that does it! thank you! I knew it must have to be very simple, I just was missing some information.. 2018-03-02 13:08 GMT+01:00 m0viefreak <m0viefreak.cm@googlemail.com>: > > > On 02.03.2018 10:31, Pier Paolo Grassi wrote: > > Hello guys, I just joined the list but I have been a zsh enthusiast for > 15 > > years and since I discovered it it's always been the best work > enviroment I > > ever had. > > One thing I was never been able to accomplish though, is: what if I want > a > > custom function, say: > > > > mydockerwrapper(){} > > > > behave, for completion's sake, like, let's say: > > > > docker ls > > > > so that if I try to complete after > > > > mydockerwrapper <TAB> > > > > I get the same suggestion that I would get after docker ls, and if I have > > > > mydockerwrapper xx <TAB> > > > > I get the same completion that I would get after docker ls xx, and so > on. > > > > -what I tried- > > > > I know that the completion function for the docker command is _docker, > and > > that I could associate my function to this completion function with > > > > compdef _docker mydockerwrapper > > > > but it doesn't seem possibile to pass one default argument to the > > completion function in this way. > > > > So I tried defining my own completion function, and add one argument and > > pass it to the _docker function, but I got stuck on this one. > > > > I'm sure this must be very easy to do in zsh, I just can't figure out > how.. > > maybe someone can help me out? > > > > thanks, happy coding everyone! > > > > > > You could modify CURRENT and words in a custom completion function and > then just call _normal ("docker ls" is one word more than > "mydockerwrapper"): > > _mydockerwrapper() { > ((CURRENT++)) > words=(docker ls "${words[@]:1}") > _normal > } > compdef _mydockerwrapper mydockerwrapper > > -- Pier Paolo Grassi email: pierpaolog@gmail.com linkedin: https://www.linkedin.com/in/pier-paolo-grassi-19300217 fondatore: https://www.meetup.com/it-IT/Machine-Learning-TO ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: alias of completion 2018-03-02 12:08 ` m0viefreak 2018-03-02 12:15 ` Pier Paolo Grassi @ 2018-03-02 22:23 ` Joey Pabalinas 2018-03-03 6:41 ` Pier Paolo Grassi 1 sibling, 1 reply; 7+ messages in thread From: Joey Pabalinas @ 2018-03-02 22:23 UTC (permalink / raw) To: m0viefreak; +Cc: zsh-users, Pier Paolo Grassi [-- Attachment #1: Type: text/plain, Size: 930 bytes --] On Fri, Mar 02, 2018 at 01:08:09PM +0100, m0viefreak wrote: > You could modify CURRENT and words in a custom completion function and > then just call _normal ("docker ls" is one word more than > "mydockerwrapper"): > > _mydockerwrapper() { > ((CURRENT++)) > words=(docker ls "${words[@]:1}") > _normal > } > compdef _mydockerwrapper mydockerwrapper Holy hell, you don't know how long I've been trying to figure out exactly that (but with systemctl instead of docker). At one point I even to screw up so badly that when I did `scrs <TAB>` my computer simply rebooted itself. Dumbfounded, I immediately tested it again as soon as my OS booted to make sure I wasn't going crazy and (as you probably saw coming from a mile away) promptly rebooted my computer with another fateful <Tab>. But this works *perfectly*. I didn't ask the original question, but nonetheless thank you! -- Joey Pabalinas [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: alias of completion 2018-03-02 22:23 ` Joey Pabalinas @ 2018-03-03 6:41 ` Pier Paolo Grassi 0 siblings, 0 replies; 7+ messages in thread From: Pier Paolo Grassi @ 2018-03-03 6:41 UTC (permalink / raw) To: Joey Pabalinas; +Cc: m0viefreak, zsh-users [-- Attachment #1: Type: text/plain, Size: 1226 bytes --] Joey that’s hilarious... I can’t even imagine what kind of tests you did, but some voodoo must have been involved... XD Il giorno ven 2 mar 2018 alle 23:23 Joey Pabalinas <joeypabalinas@gmail.com> ha scritto: > On Fri, Mar 02, 2018 at 01:08:09PM +0100, m0viefreak wrote: > > You could modify CURRENT and words in a custom completion function and > > then just call _normal ("docker ls" is one word more than > > "mydockerwrapper"): > > > > _mydockerwrapper() { > > ((CURRENT++)) > > words=(docker ls "${words[@]:1}") > > _normal > > } > > compdef _mydockerwrapper mydockerwrapper > > Holy hell, you don't know how long I've been trying to figure out > exactly that (but with systemctl instead of docker). At one point > I even to screw up so badly that when I did `scrs <TAB>` my computer > simply rebooted itself. Dumbfounded, I immediately tested it again > as soon as my OS booted to make sure I wasn't going crazy and (as you > probably saw coming from a mile away) promptly rebooted my computer > with another fateful <Tab>. > > But this works *perfectly*. > > I didn't ask the original question, but nonetheless thank you! > > -- > Joey Pabalinas > -- Pier Paolo Grassi ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-03-03 6:41 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <CGME20180302093415epcas3p3d273c63fafad455cca7fec4072aeaea1@epcas3p3.samsung.com> 2018-03-02 9:31 ` alias of completion Pier Paolo Grassi 2018-03-02 10:51 ` Peter Stephenson 2018-03-02 12:00 ` Pier Paolo Grassi 2018-03-02 12:08 ` m0viefreak 2018-03-02 12:15 ` Pier Paolo Grassi 2018-03-02 22:23 ` Joey Pabalinas 2018-03-03 6:41 ` Pier Paolo Grassi
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/zsh/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).