Re: [PATCH] completion: fix completion of certain aliases

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Sat, Dec 07, 2013 at 07:11:13AM -0600, Felipe Contreras wrote:
> Some commands need the first word to determine the actual action that is
> being executed, however, the command is wrong when we use an alias,

This first sentence was hard to understand for me because of the wrong
terminology used.  How about this instead:

  Some completion helper functions need to know the name of the git
  command to act properly.  However, ...

> for
> example 'alias.p=push', if we try to complete 'git p origin ', the
> result would be wrong because __git_complete_remote_or_refspec() doesn't
> know where it come from.

Are there other helper functions that are affected?  After a quick
glance I didn't find any.  In this case we could even write the above
as

  The __git_complete_remote_or_refspec() completion helper function
  needs to know ...


> So let's override words[1], so the alias 'p' is override by the actual
> command, 'push'.

words[1] is not always the name of the git command, it can also be an
option to the main git command, e.g. in case of 'git -c key=value push
...' with this patch '-c' would be overwritten.


Best,
Gábor

> Reported-by: Aymeric Beaumet <aymeric.beaumet@xxxxxxxxx>
> Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx>
> ---
>  contrib/completion/git-completion.bash | 1 +
>  contrib/completion/git-completion.zsh  | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index dba3c15..c14bac4 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -2530,6 +2530,7 @@ __git_main ()
>  
>  	local expansion=$(__git_aliased_command "$command")
>  	if [ -n "$expansion" ]; then
> +		words[1]=$expansion
>  		completion_func="_git_${expansion//-/_}"
>  		declare -f $completion_func >/dev/null && $completion_func
>  	fi
> diff --git a/contrib/completion/git-completion.zsh b/contrib/completion/git-completion.zsh
> index fac5e71..3eeb7f8 100644
> --- a/contrib/completion/git-completion.zsh
> +++ b/contrib/completion/git-completion.zsh
> @@ -96,6 +96,7 @@ __git_zsh_bash_func ()
>  
>  	local expansion=$(__git_aliased_command "$command")
>  	if [ -n "$expansion" ]; then
> +		words[1]=$expansion
>  		completion_func="_git_${expansion//-/_}"
>  		declare -f $completion_func >/dev/null && $completion_func
>  	fi
> -- 
> 1.8.4.2+fc1
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]