Re: [PATCH v2] tests: add initial bash completion tests

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

 



On Fri, Apr 13, 2012 at 11:12:36AM +0200, SZEDER Gábor wrote:
> On Thu, Apr 12, 2012 at 12:57:03AM +0300, Felipe Contreras wrote:
> > +. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash"
> > +
> > +_get_comp_words_by_ref ()
> > +{
> > +	while [ $# -gt 0 ]; do
> > +		case "$1" in
> > +		cur)
> > +			cur=${_words[_cword]}
> > +			;;
> > +		prev)
> > +			prev=${_words[_cword-1]}
> > +			;;
> > +		words)
> > +			words=("${_words[@]}")
> > +			;;
> > +		cword)
> > +			cword=$_cword
> > +			;;
> > +		esac
> > +		shift
> > +	done
> > +}
> 
> Git's completion script already implements this function.  Why
> override it here?

Ah, ok, I think I got it.

Of course, the words on the command line must be specified somehow to
test completion functions.  But the two implementations of
_get_comp_words_by_ref() for bash and zsh in the completion script
take the words on the command line from different variables, so we
need a common implementation to test completion functions both on bash
and zsh.  Hence the _get_comp_words_by_ref() above, which takes the
words on the command line and their count from $_words and $_cword,
respectively, and run_completion() below, which fills those variables
with its arguments.


> > +print_comp ()
> > +{
> > +	local IFS=$'\n'
> > +	echo "${COMPREPLY[*]}" > out
> > +}
> > +
> > +run_completion ()
> > +{
> > +	local -a COMPREPLY _words
> > +	local _cword
> > +	_words=( $1 )
> > +	(( _cword = ${#_words[@]} - 1 ))
> > +	_git && print_comp
> > +}
--
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]