# [PATCH] zsh completion: 5.0.3 compat, use emulate

4 messages from 2013-12-16 to 2014-04-30. Participants: Phil Pennock, Felipe Contreras.
Thread: https://gitlist.dev/t/35532

## Phil Pennock, 2013-12-16 08:32

Subject: [PATCH] zsh completion: 5.0.3 compat, use emulate
Message-ID: <EMXW5CZ-001FUQ-3S@ilmenite.field.spodhuis.org>
URL: https://gitlist.dev/e/EMXW5CZ-001FUQ-3S%40ilmenite.field.spodhuis.org

```
The bash completion pulled into zsh was being pulled in _as_ zsh, but
used patterns which relied on falling through as unhandled.  In zsh
5.0.3 this no longer works, resulting in:

    __git_complete_remote_or_refspec:33: bad pattern: +*

Fix by telling zsh to emulate sh while sourcing the bash config file,
which stickily preserves compatibility options in the function context.
This usage of "emulate" came in with zsh 4.3.10, released 2009-06-01.

Signed-off-by: Phil Pennock <pdp@spodhuis.org>
---
nb: I am not on the git mailing-list, please keep me CC'd.
    I have read SubmittingPatches but let me know if I've missed something.
    Fix applies (unmodified) to both master and maint.
    Thanks.

 contrib/completion/git-completion.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contrib/completion/git-completion.zsh b/contrib/completion/git-completion.zsh
index fac5e71..d898b65 100644
--- a/contrib/completion/git-completion.zsh
+++ b/contrib/completion/git-completion.zsh
@@ -39,7 +39,7 @@ if [ -z "$script" ]; then
 		test -f $e && script="$e" && break
 	done
 fi
-ZSH_VERSION='' . "$script"
+emulate sh -c 'ZSH_VERSION="" . "$script"'
 
 __gitcomp ()
 {
-- 
1.8.5.1

```

## Felipe Contreras, 2014-04-30 06:03

Subject: RE: [PATCH] zsh completion: 5.0.3 compat, use emulate
Message-ID: <53609249b388d_597a125b3084d@nysa.notmuch>
URL: https://gitlist.dev/e/53609249b388d_597a125b3084d%40nysa.notmuch
In-Reply-To: <EMXW5CZ-001FUQ-3S@ilmenite.field.spodhuis.org>

```
Phil Pennock wrote:
> The bash completion pulled into zsh was being pulled in _as_ zsh, but
> used patterns which relied on falling through as unhandled.  In zsh
> 5.0.3 this no longer works, resulting in:
> 
>     __git_complete_remote_or_refspec:33: bad pattern: +*
> 
> Fix by telling zsh to emulate sh while sourcing the bash config file,
> which stickily preserves compatibility options in the function context.
> This usage of "emulate" came in with zsh 4.3.10, released 2009-06-01.

I'm using 5.9.5 and I don't see any issue. Howe exactly have you
configured this script?

> Signed-off-by: Phil Pennock <pdp@spodhuis.org>
> ---
> nb: I am not on the git mailing-list, please keep me CC'd.

No need to say that. This is a sane mailing list with doesn't do
reply-to munging[1], so you are Cc'ed by default, in essentially al
MUA's out there.

[1] http://felipec.wordpress.com/2010/08/03/avoid-reply-to-munging-mail-as-mail-was-meant-to-be/

-- 
Felipe Contreras

```

## Felipe Contreras, 2014-04-30 10:00

Subject: RE: [PATCH] zsh completion: 5.0.3 compat, use emulate
Message-ID: <5360c9d095f5c_47db12fd310ef@nysa.notmuch>
URL: https://gitlist.dev/e/5360c9d095f5c_47db12fd310ef%40nysa.notmuch
In-Reply-To: <53609249b388d_597a125b3084d@nysa.notmuch>

```
Felipe Contreras wrote:
> Phil Pennock wrote:
> > The bash completion pulled into zsh was being pulled in _as_ zsh, but
> > used patterns which relied on falling through as unhandled.  In zsh
> > 5.0.3 this no longer works, resulting in:
> > 
> >     __git_complete_remote_or_refspec:33: bad pattern: +*
> > 
> > Fix by telling zsh to emulate sh while sourcing the bash config file,
> > which stickily preserves compatibility options in the function context.
> > This usage of "emulate" came in with zsh 4.3.10, released 2009-06-01.
> 
> I'm using 5.9.5 and I don't see any issue. Howe exactly have you
> configured this script?

I meant 5.0.5.

Anyway, I've tried with multiple versions of zsh and I'm able to
reproduce the issue by doing 'git push origin <tab>'. However, it seems
the issue was instroduced in 5.0.3, and fixed in 5.0.4, so I don't think
we should do anything on our side.

-- 
Felipe Contreras

```

## Phil Pennock, 2014-04-30 19:44

Subject: Re: [PATCH] zsh completion: 5.0.3 compat, use emulate
Message-ID: <20140430194429.GC85829@redoubt.spodhuis.org>
URL: https://gitlist.dev/e/20140430194429.GC85829%40redoubt.spodhuis.org
In-Reply-To: <5360c9d095f5c_47db12fd310ef@nysa.notmuch>

```
On 2014-04-30 at 05:00 -0500, Felipe Contreras wrote:
> Felipe Contreras wrote:
> > Phil Pennock wrote:
> > > The bash completion pulled into zsh was being pulled in _as_ zsh, but
> > > used patterns which relied on falling through as unhandled.  In zsh
> > > 5.0.3 this no longer works, resulting in:
> > > 
> > >     __git_complete_remote_or_refspec:33: bad pattern: +*
> > > 
> > > Fix by telling zsh to emulate sh while sourcing the bash config file,
> > > which stickily preserves compatibility options in the function context.
> > > This usage of "emulate" came in with zsh 4.3.10, released 2009-06-01.
> > 
> > I'm using 5.9.5 and I don't see any issue. Howe exactly have you
> > configured this script?
> 
> I meant 5.0.5.
> 
> Anyway, I've tried with multiple versions of zsh and I'm able to
> reproduce the issue by doing 'git push origin <tab>'. However, it seems
> the issue was instroduced in 5.0.3, and fixed in 5.0.4, so I don't think
> we should do anything on our side.

Correct: it was considered a regression and after I mailed the git list,
zsh changed the behaviour and put out 5.0.4 fairly shortly thereafter.
I don't think that 5.0.3 has taken root anywhere, so you should be good.

-Phil

```
