Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re[2]: How to set up completion for git aliases?

On Thu, 1 Nov 2012, Vadim Zeitlin wrote:

On Sat, 07 Jul 2012 01:02:43 +0200 Frank Terbeck <ft@xxxxxxxxxxxxxxxxxxx> wrote:

FT> Vadim Zeitlin wrote:
FT> > I have a simple git alias "lg = log --oneline" and I'd like zsh to FT> > complete it in the same way as it already completes "git log".
FT> You don't need to do anything, unless you're on a quite old version of FT> zsh. The _git completion has support for that out of the box.


I'd like to return to this thread because I think that this (very useful) feature doesn't play well with the method of setting up custom completion for git subcommands described in the standard Completion/Unix/_git: the comment in the beginning of this file says that you should be able to simply defined your own _git-foo completion function to handle completion of "git foo". Unfortunately this doesn't seem to work or, actually, it does work as long as "foo" is really an external command and not an alias. But if I have "foo" defined as an alias in my ~/.gitconfig, then it seems that the alias completion takes over and it tries to complete the "!sh -c ..." alias expansion which, unsurprisingly, doesn't work really well.

Is there some way to tell git completion to use _git-foo if it's defined even if foo is an alias? I tried to find it but unfortunately _git file is just too much for me...

Of course, there is always the solution of actually using an external command instead of an alias but having an alias is often more convenient for simple one-liners so it would be nice if it could be made to work.

I recently posted a patch to make this work:

zsh-workers 30737

For the example mentioned (git alias "lg = log --oneline"), if the function _git-lg exists, the patch will let it be used for completion.


Messages sorted by: Reverse Date, Date, Thread, Author