Subject: Re: [PATCH] bash completion: Add completion for 'git grep'

From: "Shawn O. Pearce" <[email-masked]>
Date: Mon, 4 Aug 2008 07:53:03 -0700

Lee Marlow <[email-masked]> wrote:
> Added completions for all long options specified in the docs
> 	--cached
> 	--text --ignore-case --word-regexp --invert-match
> 	--full-name
> 	--extended-regexp --basic-regexp --fixed-strings
> 	--files-with-matches --name-only
> 	--files-without-match
> 	--count
> 	--and --or --not --all-match
> 
> Signed-off-by: Lee Marlow <[email-masked]>

Acked-by: Shawn O. Pearce <[email-masked]>

This is the "first patch" which has the doubledash test.  As you
pointed out, its better because it stops completion of long options
after the --.

> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 30d8701..b28ac10 100755
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -796,6 +796,29 @@ _git_gc ()
>  	COMPREPLY=()
>  }
>  
> +_git_grep ()
> +{
> +	__git_has_doubledash && return
> +
> +	local cur="${COMP_WORDS[COMP_CWORD]}"
> +	case "$cur" in
> +	--*)
> +		__gitcomp "
> +			--cached
> +			--text --ignore-case --word-regexp --invert-match
> +			--full-name
> +			--extended-regexp --basic-regexp --fixed-strings
> +			--files-with-matches --name-only
> +			--files-without-match
> +			--count
> +			--and --or --not --all-match
> +			"
> +		return
> +		;;
> +	esac
> +	COMPREPLY=()
> +}
> +
>  _git_help ()
>  {
>  	local cur="${COMP_WORDS[COMP_CWORD]}"
> @@ -1486,6 +1509,7 @@ _git ()
>  	fetch)       _git_fetch ;;
>  	format-patch) _git_format_patch ;;
>  	gc)          _git_gc ;;
> +	grep)        _git_grep ;;
>  	help)        _git_help ;;
>  	log)         _git_log ;;
>  	ls-remote)   _git_ls_remote ;;
> -- 

-- 
Shawn.