public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: "SZEDER Gábor" <szeder@ira•uka.de>
To: Nathan Bullock <nathanbullock@gmail•com>
Cc: Junio C Hamano <gitster@pobox•com>, git@vger•kernel.org
Subject: Re: Autocompletion - commands no longer work as stand alone
Date: Wed, 25 Jan 2012 00:26:58 +0100	[thread overview]
Message-ID: <20120124232658.GD2256@goldbirke> (raw)
In-Reply-To: <7vwr8mdvo8.fsf@alter.siamese.dyndns.org>

Hi,


> Nathan Bullock <nathanbullock@gmail•com> writes:
> 
> > I have for a number of years had the following in my .bashrc
> >
> > alias br="git branch"
> > complete -F _git_branch br
> >
> > As well as similar commands for co and log.
> >
> > Recently though this broke, now when I type something like "br
> > mas<command completion>" it will occasionally complain with messages
> > like:
> > bash: [: 1: unary operator expected
> >
> > From digging through the source it looks like this was broken back in
> > April. (The commit is show at the bottom of this email.)
> >
> > So my questions are:
> > 1. Is it reasonable for things like _git_branch to work as a
> > standalone autocompletion function instead of having to go through
> > _git? I certainly like it to work as a standalone function. I also use
> > it to add autocompletion to other bash scripts that I use frequently.
> >
> > 2. If I add code that verifies that the variable cword exists at the
> > start of these functions and only if not call something like
> > _get_comp_words_by_ref -n =: cur words cword prev. Would that be
> > reasonable?

That would be too fragile, it will break if $cword is set in the
environment from which you invoke _git_<cmd>() completion functions
directly (i.e. not though _git()).

> > I think this should address the performance concerns that
> > caused these to be removed in the first place, but it may make the
> > code uglier.

Actually it was not a performance problem, but a cleanup in a patch
series to fix a zsh-related bug.  Without this cleanup the bugfix
would have been much more intrusive.

  http://thread.gmane.org/gmane.comp.version-control.git/172142/focus=172369


> > I have already added wrapper functions in my bashrc so that this is no
> > longer a problem for me, but there may be other people who start
> > hitting this as well once they start using newer versions of git.

This issue was reported earlier, so it seems there are people who
would like to use it.  But getting $cur, $cword, etc. variables right
in _git_<cmd>() completion functions is just part of the problem,
there are other issues, as mentioned in the previous thread:

  http://thread.gmane.org/gmane.comp.version-control.git/185184/focus=185232

Unfortunately, I couldn't come up with a solution yet that doesn't
introduce too much code churn and doesn't cause yet another
inconsistency between bash and zsh.  I also haven't looked whether
there are other issues similar to that with _git_fetch() mentioned on
the above link.


Best,
Gábor

  parent reply	other threads:[~2012-01-24 23:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CAPx=Vfp_HVr5W1fFic_1k+JsKr2RAKd-RK=VkfSgo7qkb5GsAw@mail.gmail.com>
2012-01-20 16:32 ` Autocompletion - commands no longer work as stand alone Nathan Bullock
2012-01-20 19:24   ` Junio C Hamano
2012-01-20 19:33     ` Nathan Bullock
2012-01-24 23:26     ` SZEDER Gábor [this message]
2012-01-30 12:00       ` Nathan Bullock
2012-01-30 18:14         ` Junio C Hamano

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=20120124232658.GD2256@goldbirke \
    --to=szeder@ira$(echo .)uka.de \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitster@pobox$(echo .)com \
    --cc=nathanbullock@gmail$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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