From: Junio C Hamano Date: Sun, 04 Feb 2007 08:08:38 GMT Subject: Re: [PATCH 4/8] bash: Add space after unique command name is completed. Message-ID: <7vr6t6xs3d.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <20070204073827.GD17603@spearce.org> "Shawn O. Pearce" writes: > +__gitcomp () > +{ > + local all c s=$'\n' IFS=' '$'\t'$'\n' > + for c in $1; do > + case "$c" in > + --*=*) all="$all$c$s" ;; > + *) all="$all$c $s" ;; > + esac > + done > + IFS=$s > + COMPREPLY=($(compgen -W "$all" -- "${COMP_WORDS[COMP_CWORD]}")) > + return > +} > + I do not understand what is going on here. Care to explain? (1) "for c in $1": because $1 is not dquoted, it is split into word with IFS -- which IFS applies to this splitting? The local one you hand-define to the typical " \t\n" value? (2) when this function returns, what IFS value does the caller would have? Is the "local" used to avoid screwing up the caller?