git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Shawn O. Pearce" <spearce@spearce.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: David Rhodes Clymer <david@zettazebra.com>, git@vger.kernel.org
Subject: Re: Custom git completion
Date: Fri, 29 Jan 2010 09:59:50 -0800	[thread overview]
Message-ID: <20100129175950.GE21821@spearce.org> (raw)
In-Reply-To: <7v4om4kdt3.fsf@alter.siamese.dyndns.org>

Junio C Hamano <gitster@pobox.com> wrote:
> "Shawn O. Pearce" <spearce@spearce.org> writes:
> 
> > David Rhodes Clymer <david@zettazebra.com> wrote:
> >> Unless I read it incorrectly, the completion script included with
> >> git-core does not make it easy for users to write completion scripts
> >> for custom git commands. I can extend git itself by creating a command
> >> "git-foo", and placing it in my path.
> >
> > git config --global alias.foo /home/me/bin/my-git-foo
> >
> > git foo will now complete correctly.  No need to modify the
> > completion code.
> 
> Yes.  Aliases and custom subcommands are found from 'git help" output just
> fine (you need to install new subcommand in exec-path).
> 
> But.
> 
> How does the completion code learn what options and arguments such aliases
> and subcommands (e.g. "git foo") take without being told?

Sure.  But the patch offered by the original poster also suffered
from this problem, it didn't know how to complete arguments for
the subcommand.

 
> An alias that uses another git subcommand (i.e. the ones that do not start
> with a bang "!") seems to be handled correctly, but one of my aliases is
> this:
> 
>     [alias]
> 	lgm = "!sh -c 'GIT_NOTES_REF=refs/notes/amlog git log \"$@\" || :' -"

Doing this is difficult, because its hard to parse that string and
do completion on it.  On the other hand, we could do something like:

  [completion]
  	lgm = log

and have `git lgm` complete using the same rules as `git log`.
Its somewhat ugly though...
 
-- 
Shawn.

  reply	other threads:[~2010-01-29 18:00 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-29 12:57 Custom git completion David Rhodes Clymer
2010-01-29 15:11 ` Shawn O. Pearce
2010-01-29 17:42   ` Junio C Hamano
2010-01-29 17:59     ` Shawn O. Pearce [this message]
2010-01-29 18:02       ` Junio C Hamano
2010-01-29 19:06         ` [PATCH] bash: support user-supplied completion scripts for user's git commands SZEDER Gábor
2010-01-29 19:13           ` Shawn O. Pearce
2010-01-29 20:00             ` SZEDER Gábor
2010-01-29 20:04               ` Shawn O. Pearce
2010-01-31 19:19                 ` SZEDER Gábor
2010-02-23 21:02                   ` [PATCH 0/4] bash: support user-supplied completion scripts for custom git commands and aliases SZEDER Gábor
2010-02-23 21:02                     ` [PATCH 1/4] bash: improve aliased command recognition SZEDER Gábor
2010-02-23 22:11                       ` Junio C Hamano
2010-02-24  1:04                         ` SZEDER Gábor
2010-02-24  2:56                           ` Junio C Hamano
2010-02-23 21:02                     ` [PATCH 2/4] bash: support user-supplied completion scripts for user's git commands SZEDER Gábor
2010-02-23 21:02                     ` [PATCH 3/4] bash: support user-supplied completion scripts for aliases SZEDER Gábor
2010-02-23 21:03                     ` [PATCH 4/4] bash: completion for gitk aliases SZEDER Gábor
2010-01-29 20:32           ` [PATCH] bash: support user-supplied completion scripts for user's git commands Junio C Hamano
2010-02-26 15:27             ` SZEDER Gábor
2010-02-26 20:04               ` Junio C Hamano
2010-02-26 20:17                 ` Shawn O. Pearce
2010-01-30 23:34           ` David Rhodes Clymer
2010-01-30 23:03       ` Custom git completion David Rhodes Clymer
2010-01-30 23:00   ` David Rhodes Clymer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100129175950.GE21821@spearce.org \
    --to=spearce@spearce.org \
    --cc=david@zettazebra.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).