Subject: Re: Bug in completion for git merge
From: Daniel Shahaf <[email-masked]>
To: Eric Cook <[email-masked]>
Cc: [email-masked]
Date: Tue, 16 Feb 2016 10:49:41 +0000
List-Id: Zsh Workers List <zsh-workers.zsh.org>

Eric Cook wrote on Mon, Feb 15, 2016 at 22:02:24 -0500:
> On 02/15/2016 12:20 PM, Thomas Becker wrote:
> > Ahh sorry about that.  That explains some of the other weirdness I’ve been seeing. I’m trying to upgrade my completion to something that knows about newer git options than what is provided in 5.0.5. Is there any way to do that? Thanks.
> > 
> By patching the completer to use portable syntax, portable in terms of zsh.
> The following patch applied to master should work in pre 5.1.
> 
> Considering that this is the only line in _git that expects the reserved word behavior,
> it may be a good idea to commit it for consistency sake. But bart has a point.

I added the backwards-incompatible line.  I believe the decision to
use a backwards-incompatible syntax was a conscious one: either because
the issue had been discussed on-list, or because there had been precedent.

I don't have a strong opinion regarding the specific patch.  It's
obviously correct.

However, what should we do with the other instances of the
backwards-incompatible syntax that are currently in Completion/ and
Functions/?

If we want to make $fpath backwards-compatible, we'd need to change all
of them and stop adding new instances of backwards-incompatible
syntaxes... which effectively means we'd stop eating our own dogfood.

Perhaps a 'backwards-compatible $fpath' should live on a separate git
branch, so users of master keep dogfooding.

Cheers,

Daniel

> diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
> index b7eaf2e..fb10fa6 100644
> --- a/Completion/Unix/Command/_git
> +++ b/Completion/Unix/Command/_git
> @@ -1129,9 +1129,9 @@ _git-log () {
> 
>  (( $+functions[_git-merge] )) ||
>  _git-merge () {
> -  local -a merge_options
> +  local -a merge_options git_commit_opts
>    __git_setup_merge_options
> -  local -a git_commit_opts=(--all --not HEAD --not)
> +  git_commit_opts=(--all --not HEAD --not)
> 
>    _arguments -w -S -s \
>      $merge_options \
>