From: "SZEDER Gábor" <szeder@ira.uka.de>
To: Felipe Contreras <felipe.contreras@gmail.com>
Cc: git@vger.kernel.org, Jonathan Nieder <jrnieder@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
Thomas Rast <trast@student.ethz.ch>
Subject: Re: [PATCH v3] completion: add new _GIT_complete helper
Date: Sun, 6 May 2012 13:14:25 +0200 [thread overview]
Message-ID: <20120506111425.GJ2164@goldbirke> (raw)
In-Reply-To: <1336231400-6878-1-git-send-email-felipe.contreras@gmail.com>
Hi,
On Sat, May 05, 2012 at 05:23:20PM +0200, Felipe Contreras wrote:
> This simplifies the completions, and makes it easier to define aliases:
>
> _GIT_complete gf git_fetch
So, 'gf' is an alias for 'git fetch', for which the user would like to
use the completion for 'git fetch', right? But that completion
function is caled _git_fetch(), so the underscore prefix is missing
here.
Besides, this example won't work, because the completion for 'git
fetch' uses __git_complete_remote_or_refspec(), which in turn relies
on finding out the name of the git command from the word on the
command line, and it won't be able to do that from 'gf'.
I remember we discussed this in an earlier round, and you even
suggested a possible fix (passing the command name as argument to
__git_complete_remote_or_refspec()). I think that's the right thing
to do here.
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
>
> Since v3:
_This_ is v3 ;)
> * Rename to _GIT_complete to follow bash completion "guidelines"
> * Get rid of foo_wrap name
>
> Since v2:
>
> * Remove stuff related to aliases fixes; should work on top of master
>
> contrib/completion/git-completion.bash | 67 ++++++++++++++------------------
> t/t9902-completion.sh | 2 +-
> 2 files changed, 31 insertions(+), 38 deletions(-)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 9f56ec7..f300b87 100755
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> +__git_func_wrap ()
Good.
> +{
> + if [[ -n ${ZSH_VERSION-} ]]; then
> + emulate -L bash
> + setopt KSH_TYPESET
> +
> + # workaround zsh's bug that leaves 'words' as a special
> + # variable in versions < 4.3.12
> + typeset -h words
> +
> + # workaround zsh's bug that quotes spaces in the COMPREPLY
> + # array if IFS doesn't contain spaces.
> + typeset -h IFS
> + fi
> + local cur words cword prev
> + _get_comp_words_by_ref -n =: cur words cword prev
> + __git_func "$@"
What is this "$@" for and why? None of the _git_<cmd>() functions
take any arguments, nor does _git() and _gitk(), and AFAICT Bash won't
pass any either.
> +}
> +
> +_GIT_complete ()
> +{
> + local name="${2-$1}"
> + eval "$(typeset -f __git_func_wrap | sed -e "s/__git_func/_$name/")"
Still don't like the subshell and sed here ...
> + complete -o bashdefault -o default -o nospace -F _${name}_wrap $1 2>/dev/null \
> + || complete -o default -o nospace -F _${name}_wrap $1
> +}
> +
> +_GIT_complete git
> +_GIT_complete gitk
... because it adds delay when the completion script is loaded. But I
still don't have ideas how to avoid them.
next prev parent reply other threads:[~2012-05-06 11:14 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-05 15:23 [PATCH v3] completion: add new _GIT_complete helper Felipe Contreras
2012-05-05 15:54 ` Jonathan Nieder
2012-05-05 16:38 ` Felipe Contreras
2012-05-05 16:47 ` Jonathan Nieder
2012-05-05 16:52 ` Jonathan Nieder
2012-05-05 17:20 ` Felipe Contreras
2012-05-05 17:33 ` Jonathan gives feedback --> flamewars inevitable? (Re: [PATCH v3] completion: add new _GIT_complete helper) Jonathan Nieder
2012-05-05 18:23 ` Felipe Contreras
2012-05-05 18:39 ` Jonathan gives feedback --> flamewars inevitable? Jonathan Nieder
2012-05-05 18:42 ` Jonathan Nieder
2012-05-06 5:23 ` Jonathan gives feedback --> flamewars inevitable? (Re: [PATCH v3] completion: add new _GIT_complete helper) Tay Ray Chuan
2012-05-14 9:11 ` Felipe Contreras
2012-05-05 17:44 ` [PATCH v3] completion: add new _GIT_complete helper Jonathan Nieder
2012-05-06 10:30 ` SZEDER Gábor
2012-05-06 20:47 ` Jonathan Nieder
2012-05-06 11:14 ` SZEDER Gábor [this message]
2012-05-06 11:30 ` SZEDER Gábor
2012-05-06 11:36 ` SZEDER Gábor
2012-05-06 12:12 ` SZEDER Gábor
2012-05-06 20:53 ` Felipe Contreras
2012-05-06 20:37 ` Felipe Contreras
2012-05-06 23:32 ` SZEDER Gábor
2012-05-07 0:20 ` Felipe Contreras
2012-05-07 9:22 ` SZEDER Gábor
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=20120506111425.GJ2164@goldbirke \
--to=szeder@ira.uka.de \
--cc=felipe.contreras@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=trast@student.ethz.ch \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.