git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC/PATCH 5/5] completion: refactor __gitcomp_1

From
SZEDER Gábor <szeder@ira.uka.de>
Date
Nov 17, 2012, 10:58 UTC
Message-ID
<20121117105837.GC12052@goldbirke>
In-Reply-To
<1353116298-11798-6-git-send-email-felipe.contreras@gmail.com>

[Wow, that's quite the Cc-list above. I wonder why e.g. Robert ended up there, when all his "sins" were to add a couple of 'git svn' options back in 2009.]

On Sat, Nov 17, 2012 at 02:38:18AM +0100, Felipe Contreras wrote:
Show 46 quoted lines
> It's only used by __gitcomp, so move some code there and avoid going
> through the loop again.
> 
> We could get rid of it altogether, but it's useful for zsh's completion
> wrapper.
> 
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
>  contrib/completion/git-completion.bash | 25 ++++++++++++++-----------
>  1 file changed, 14 insertions(+), 11 deletions(-)
> 
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index ad3e1fe..d92d11e 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -58,15 +58,12 @@ __gitdir ()
>  
>  __gitcomp_1 ()
>  {
> -	local c IFS=$' \t\n'
> -	for c in $1; do
> -		c="$c$2"
> -		case $c in
> -		--*=*|*.) ;;
> -		*) c="$c " ;;
> -		esac
> -		printf '%s\n' "$c"
> -	done
> +	local c=$1
> +	case $c in
> +	--*=*|*.) ;;
> +	*) c="$c " ;;
> +	esac
> +	printf '%s\n' "$c"
>  }
>  
>  # The following function is based on code from:
> @@ -249,10 +246,16 @@ __gitcomp ()
>  	--*=)
>  		;;
>  	*)
> -		local IFS=$'\n'
> -		__gitcompadd "$(__gitcomp_1 "${1-}" "${4-}")" "${2-}" "$cur_" ""
> +		local c IFS=$' \t\n'
> +		for c in ${1-}; do
> +			c=`__gitcomp_1 "$c${4-}"`
1. Backticks.
2. A subshell for every word in the wordlist?
> +			if [[ "$c" = "$cur_"* ]]; then
> +				COMPREPLY+=("${2-}$c")

This is the first time we use the append operator in the completion script. When it came up last time the question was whether the benefit of using it is large enough for worrying about supported Bash versions.

  http://article.gmane.org/gmane.comp.version-control.git/206525
Show 11 quoted lines
> +			fi
> +		done
>  		;;
>  	esac
> +
>  }
>  
>  # Generates completion reply with compgen from newline-separated possible
> -- 
> 1.8.0
> 
Previous: Felipe ContrerasNext: Felipe Contreras
Message 13 of 15 in “completion: compgen/compadd cleanups”
  1. 0/5 completion: compgen/compadd cleanupsFelipe Contreras, Nov 17, 2012
  2. 1/5 completion: get rid of empty COMPREPLY assignmentsFelipe Contreras, Nov 17, 2012
  3. 2/5 completion: add new __gitcompadd helperFelipe Contreras, Nov 17, 2012
  4. 3/5 completion: trivial test improvementFelipe Contreras, Nov 17, 2012
  5. SZEDER GáborNov 17, 2012
  6. 4/5 completion: get rid of compgenFelipe Contreras, Nov 17, 2012
  7. SZEDER GáborNov 17, 2012
  8. Felipe ContrerasNov 17, 2012
  9. SZEDER GáborNov 17, 2012
  10. Felipe ContrerasNov 17, 2012
  11. Felipe ContrerasNov 18, 2012
  12. 5/5 completion: refactor __gitcomp_1Felipe Contreras, Nov 17, 2012
  13. SZEDER GáborNov 17, 2012
  14. Felipe ContrerasNov 17, 2012
  15. SZEDER GáborNov 17, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.