git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Felipe Contreras <felipe.contreras@gmail.com>
To: Marc Khouzam <marc.khouzam@gmail.com>
Cc: "Junio C Hamano" <gitster@pobox.com>,
	"SZEDER Gábor" <szeder@ira.uka.de>,
	git@vger.kernel.org
Subject: Re: [PATCH] tcsh-completion re-using git-completion.bash
Date: Sat, 17 Nov 2012 19:01:23 +0100	[thread overview]
Message-ID: <CAMP44s30wYnkQdq8yup3z-t=FEf1R+k8OC-o7-uY=19z9VHDPg@mail.gmail.com> (raw)
In-Reply-To: <CAFj1UpFbuHVhPOQVB9-sPjW2aBN=H+OUyYnz00qASZ5ssbwmGw@mail.gmail.com>

On Sat, Nov 17, 2012 at 6:15 PM, Marc Khouzam <marc.khouzam@gmail.com> wrote:
> On Fri, Nov 16, 2012 at 4:56 PM, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
>> On Fri, Nov 16, 2012 at 10:20 PM, Junio C Hamano <gitster@pobox.com> wrote:
>>
>>> The point is not about the quality of zsh's emulation
>>> of (k)sh when it is run under that mode, but is about not having to
>>> have that logic in bash-only part in the first place.
>>
>> As I said, that logic can be moved away _if_ my wrapper is merged. But
>> then again, that would cause regressions to existing users.
>
> Please forgive me as I don't know the background of the efforts for
> zsh git-completion or
> the syntax for zsh completion, but I thought I'd mention another
> approach I tried for tcsh
> which may work for zsh.
>
> I gather that using a wrapper for zsh causes concerns about
> backwards-compatibility.

I don't see any concerns.

> if [[ -n ${ZSH_VERSION-} ]]; then
>   # replace below by zsh completion commands calling `bash
> ${HOME}/.git-completion.bash`

>   complete git   'p/*/`bash ${HOME}/.git-completion.bash ${COMMAND_LINE}`/'
>   complete gitk 'p/*/`bash ${HOME}/.git-completion.bash ${COMMAND_LINE}`/'

That doesn't work in zsh. It might be possible to do something
similar, but it would probably require many more lines.

And we can achieve the same by essentially moving the relevant code of
my wrapper:

--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -23,10 +23,6 @@
 #    3) Consider changing your PS1 to also show the current branch,
 #       see git-prompt.sh for details.

-if [[ -n ${ZSH_VERSION-} ]]; then
-       autoload -U +X bashcompinit && bashcompinit
-fi
-
 case "$COMP_WORDBREAKS" in
 *:*) : great ;;
 *)   COMP_WORDBREAKS="$COMP_WORDBREAKS:"
@@ -2404,6 +2400,32 @@ __gitk_main ()
        __git_complete_revlist
 }

+if [[ -n ${ZSH_VERSION-} ]]; then
+       emulate -L zsh
+
+       __gitcompadd ()
+       {
+               compadd -Q -S "$4" -P "${(M)cur#*[=:]}" -p "$2" --
${=1} && _ret=0
+       }
+
+       _git ()
+       {
+               local _ret=1
+               () {
+                 emulate -L ksh
+                       local cur cword prev
+                       cur=${words[CURRENT-1]}
+                       prev=${words[CURRENT-2]}
+                       let cword=CURRENT-1
+                       __${service}_main
+               }
+               let _ret && _default -S '' && _ret=0
+               return _ret
+       }
+       compdef _git git gitk
+       return
+fi
+
 __git_func_wrap ()
 {
        if [[ -n ${ZSH_VERSION-} ]]; then

-- 
Felipe Contreras

  reply	other threads:[~2012-11-17 18:01 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CAFj1UpE6OtJEojaED1_DZJD0kU=nVsFE_w8xa0oJE-6auCU2rw@mail.gmail.com>
2012-11-12 20:07 ` Fwd: [PATCH] Add tcsh-completion support to contrib by using git-completion.bash Marc Khouzam
2012-11-13 11:14   ` SZEDER Gábor
2012-11-13 20:12     ` Marc Khouzam
2012-11-13 23:46       ` SZEDER Gábor
2012-11-14  0:49         ` [PATCH] completion: remove 'help' duplicate from porcelain commands SZEDER Gábor
2012-11-14  4:26         ` Fwd: [PATCH] Add tcsh-completion support to contrib by using git-completion.bash Marc Khouzam
2012-11-15 11:51           ` [PATCH] tcsh-completion re-using git-completion.bash Marc Khouzam
2012-11-16  1:41             ` Felipe Contreras
2012-11-16 14:39               ` Marc Khouzam
2012-11-16 15:33                 ` Felipe Contreras
2012-11-16 15:48                   ` Marc Khouzam
2012-11-16 16:12                     ` [PATCH v3] " Marc Khouzam
2012-11-16 17:21                       ` Felipe Contreras
2012-11-16 18:43                         ` [PATCH v4] " Marc Khouzam
2012-11-16 19:59                           ` Junio C Hamano
2012-11-16 20:01                             ` Felipe Contreras
2012-11-16 17:18                     ` [PATCH] " Felipe Contreras
2012-11-16 18:20                       ` Marc Khouzam
2012-11-16 20:04                         ` Felipe Contreras
2012-11-16 20:40                           ` SZEDER Gábor
2012-11-16 21:03                             ` Felipe Contreras
2012-11-16 21:22                               ` SZEDER Gábor
2012-11-16 21:46                                 ` Felipe Contreras
2012-11-17 10:56                                   ` SZEDER Gábor
2012-11-17 11:46                                     ` Felipe Contreras
2012-11-17 14:17                                       ` SZEDER Gábor
2012-11-16 21:20                             ` Junio C Hamano
2012-11-16 21:56                               ` Felipe Contreras
2012-11-17 17:15                                 ` Marc Khouzam
2012-11-17 18:01                                   ` Felipe Contreras [this message]
2012-11-20 14:58                                     ` Marc Khouzam
2012-11-20 15:15                                       ` Felipe Contreras
2012-11-20 18:20                                         ` Marc Khouzam
2012-11-20 21:07                                           ` Junio C Hamano
2012-11-13 18:31   ` [PATCH] Add tcsh-completion support to contrib by using git-completion.bash Felipe Contreras
2012-11-14  0:11     ` SZEDER Gábor
2012-11-15  2:40       ` Felipe Contreras
2012-11-14  3:36     ` Marc Khouzam
2012-11-14  0:09   ` Fwd: " SZEDER Gábor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAMP44s30wYnkQdq8yup3z-t=FEf1R+k8OC-o7-uY=19z9VHDPg@mail.gmail.com' \
    --to=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=marc.khouzam@gmail.com \
    --cc=szeder@ira.uka.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).