From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2715 invoked by alias); 25 Apr 2010 21:52:26 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 27911 Received: (qmail 5608 invoked from network); 25 Apr 2010 21:52:12 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.1 Received-SPF: pass (ns1.primenet.com.au: SPF record at ntlworld.com designates 81.103.221.31 as permitted sender) Date: Sun, 25 Apr 2010 22:22:19 +0100 From: Peter Stephenson To: zsh-workers@zsh.org Subject: Re: Bug: _oldlist and automatic coloring of matched Message-ID: <20100425222219.354a52e8@pws-pc> In-Reply-To: References: <20100423222858.GC11609@plenz.com> X-Mailer: Claws Mail 3.7.5 (GTK+ 2.18.9; x86_64-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Cloudmark-Analysis: v=1.1 cv=ZtHxNT4mZm3rCuM0SmWmgWxeBwJsziC8EqOrwwVkrhA= c=1 sm=0 a=km8UjZdnGCAA:10 a=DogomfpGjd0A:10 a=IkcTkHD0fZMA:10 a=q2GGsy2AAAAA:8 a=HYG4G6p_AAAA:8 a=NLZqzBF-AAAA:8 a=Nd-5-nJWaFUxdHuHTvwA:9 a=eK2zpQY0P9Muk6579PJatRWJGkwA:4 a=QEXdDO2ut3YA:10 a=I6wTmPyJxzYA:10 a=GqRKa4PrDMEA:10 a=_dQi-Dcv4p4A:10 a=HpAAvcLHHh0Zw7uRqdWCyQ==:117 On Sat, 24 Apr 2010 10:35:06 -0700 Bart Schaefer wrote: > On Fri, Apr 23, 2010 at 3:28 PM, Julius Plenz wrote: > > > > =C2=A0 =C2=A0autoload -U compinit && compinit > > =C2=A0 =C2=A0zmodload -i zsh/complist > > =C2=A0 =C2=A0zstyle ':completion:*' completer _oldlist _complete > > =C2=A0 =C2=A0zstyle ':completion:*' menu select select=3Dlong-list > > > > If you hit Tab the first time, the listing of filenames is not > > colored. But once you hit Tab again (and the _oldlist completer comes > > into play) suddenly some matches are colored. >=20 > This is actually coming from _main_complete, here: >=20 > if [[ "$compstate[old_list]" =3D keep ]]; then > ZLS_COLORS=3D"$_saved_colors" > elif (( $#_comp_colors )); then > ZLS_COLORS=3D"${(j.:.)_comp_colors}" > else > unset ZLS_COLORS > fi >=20 > I guess there should be a second test that $_saved_colors is non-empty > before assigning it to ZLS_COLORS ... but I'm not sure that's correct > either, because we don't know at this point *why* $_saved_colors is > empty, i.e., whether the value when saved was empty or unset. Should it be something like this? Index: Completion/Base/Core/_main_complete =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/zsh/zsh/Completion/Base/Core/_main_complete,v retrieving revision 1.11 diff -p -u -r1.11 _main_complete --- Completion/Base/Core/_main_complete 1 Apr 2009 10:57:12 -0000 1.11 +++ Completion/Base/Core/_main_complete 25 Apr 2010 21:21:25 -0000 @@ -30,7 +30,8 @@ local func funcs ret=3D1 tmp _compskip for _saved_lastprompt=3D"${compstate[last_prompt]}" \ _saved_list=3D"${compstate[list]}" \ _saved_insert=3D"${compstate[insert]}" \ - _saved_colors=3D"$ZLS_COLORS" + _saved_colors=3D"$ZLS_COLORS" \ + _saved_colors_set=3D${+ZLS_COLORS} =20 # _precommand sets this to indicate we are following a precommand modifier local -a precommands @@ -325,7 +326,11 @@ fi compstate[list]=3D"${compstate[list]//messages} force" =20 if [[ "$compstate[old_list]" =3D keep ]]; then - ZLS_COLORS=3D"$_saved_colors" + if [[ $_saved_colors_set =3D 1 ]]; then + ZLS_COLORS=3D"$_saved_colors" + else + unset ZLS_COLORS + fi elif (( $#_comp_colors )); then ZLS_COLORS=3D"${(j.:.)_comp_colors}" else --=20 Peter Stephenson Web page now at http://homepage.ntlworld.com/p.w.stephenson/