From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22426 invoked by alias); 31 Mar 2015 11:10:47 -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: 34826 Received: (qmail 8373 invoked from network); 31 Mar 2015 11:10:44 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HTML_MESSAGE,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:content-type; bh=wlo7zs4XII9y1dsSBm44r9vU2yNu5fkVBSH743S/ZQA=; b=iJA7h6Tem47c0lKpZiVrDI4GskoV0o4pGU7ztKpkc2IFo6RcsNNAT73DXNzv6Af53t Jfh+bzOh8o3oVqbDPIdAQx8rjgu6D3HkZZNhAN9U9Od0syi9lrZ69dRNCsOgUhwAnnEx l7nRUQZVseVj1c+VeNRDRg2bXvNAyHQPifuwrXZLrAyQVIA1zTarubwnHnt2mNDumgcF 5C2WXTmHlKMcujjrl32yW08iYrL8CXRm16JuE+dNv0/IapWngqZbq6Iiftcu1v4ii9kQ 5Sr5oXtI071IgtZrX1971rHW7ZOmJnZvO//SoZjjddTd1ayWn5t5JAyxRAltE+B+Vpsa rTag== MIME-Version: 1.0 X-Received: by 10.66.160.197 with SMTP id xm5mr67306331pab.51.1427800242432; Tue, 31 Mar 2015 04:10:42 -0700 (PDT) Sender: robbieg8s@gmail.com Date: Tue, 31 Mar 2015 22:10:42 +1100 X-Google-Sender-Auth: aLM8BBsYBsKj2Xb8qhvU8Ddo1d8 Message-ID: Subject: git checkout @... completion From: Robbie Gates To: zsh-workers@zsh.org Content-Type: multipart/mixed; boundary=e89a8f5038844346ee051293a61d --e89a8f5038844346ee051293a61d Content-Type: multipart/alternative; boundary=e89a8f5038844346e9051293a61b --e89a8f5038844346e9051293a61b Content-Type: text/plain; charset=UTF-8 Hi All, i've modified the git completions in _git to complete git checkout's @{-n} syntax for recent branches. I'm pretty sure the way i've done it is somewhat ugly, because my understanding of the completion system is primitive. I've attached a patch (against a local copy) - please let me know if it's better to submit changes as a PR and i'll do that. More importantly, any review comments before the patch is usable are most welcome. In particular, it just offers the first for each unique amongst the most recent 9 branches. This is done by parsing the output of git log --walk-reflogs using the same logic as git uses to interpret the @... syntax according to my reading of sha1_name.c in the git source using a bit of awkery. Although simplistic, i think this is useful in practice. In particular, it could be rewritten to loop over git check-ref-format --branch "@{-$i}" for increasing i until a given (by completion style maybe, or environment variable) number of unique previous branches was found. This felt a bit more rounadabout (and effort) than the quick version here, but if it's more likely to be acceptable that this patch please let me know and i'll rework it. Any pointers to completions with a configurable depth / length that i could use to glean the right way to do this kind of thing welcome. Thanks for your time, - Robbie --e89a8f5038844346e9051293a61b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi All,

=C2=A0 i've modified the gi= t completions in _git to complete git checkout's @{-n} syntax for recen= t branches. I'm pretty sure the way i've done it is somewhat ugly, = because my understanding of the completion system is primitive. I've at= tached a patch (against a local copy) - please let me know if it's bett= er to submit changes as a PR and i'll do that.

=C2=A0 More importantly, any review comments before the patch is usable ar= e most welcome. In particular, it just offers the first for each unique amo= ngst the most recent 9 branches. This is done by parsing the output of git = log --walk-reflogs using the same logic as git uses to interpret the @... s= yntax according to my reading of sha1_name.c= =C2=A0in the git source using a bit of awkery. Although simplistic, i think= this is useful in practice.

=C2=A0 In particular,= it could be rewritten to loop over=C2=A0git check-ref-format --branch &quo= t;@{-$i}" for increasing i until a given (by completion style maybe, o= r environment variable) number of unique previous branches was found. This = felt a bit more rounadabout (and effort) than the quick version here, but i= f it's more likely to be acceptable that this patch please let me know = and i'll rework it. Any pointers to completions with a configurable dep= th / length that i could use to glean the right way to do this kind of thin= g welcome.

=C2=A0 Thanks for your time,
=
=C2=A0- Robbie
--e89a8f5038844346e9051293a61b-- --e89a8f5038844346ee051293a61d Content-Type: application/octet-stream; name="_git.patch" Content-Disposition: attachment; filename="_git.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i7x6uo5r0 ZGlmZiAtLWdpdCBhL2Z1bmN0aW9ucy9fZ2l0IGIvZnVuY3Rpb25zL19naXQKaW5kZXggYzRlMzg2 Yi4uODg0NzU2YyAxMDA2NDQKLS0tIGEvZnVuY3Rpb25zL19naXQKKysrIGIvZnVuY3Rpb25zL19n aXQKQEAgLTQ2MywyNyArNDYzLDM3IEBAIF9naXQtY2hlY2tvdXQgKCkgewogICAgICAgICBsb2Nh bCBicmFuY2hfYXJnPSdicmFuY2hlczo6X19naXRfcmV2aXNpb25zJyBcCiAgICAgICAgICAgICAg IHJlbW90ZV9icmFuY2hfbm9wcmVmaXhfYXJnPSdyZW1vdGUgYnJhbmNoZXM6Ol9fZ2l0X3JlbW90 ZV9icmFuY2hfbmFtZXNfbm9wcmVmaXgnIFwKICAgICAgICAgICAgICAgdHJlZV9pc2hfYXJnPSd0 cmVlLWlzaHM6Ol9fZ2l0X3RyZWVfaXNocycgXAotICAgICAgICAgICAgICBmaWxlX2FyZz0nbW9k aWZpZWQtZmlsZXM6Ol9fZ2l0X21vZGlmaWVkX2ZpbGVzJworICAgICAgICAgICAgICBmaWxlX2Fy Zz0nbW9kaWZpZWQtZmlsZXM6Ol9fZ2l0X21vZGlmaWVkX2ZpbGVzJyBcCisgICAgICAgICAgICAg IHByZXZpb3VzX2FyZz0ncHJldmlvdXMtYnJhbmNoZXM6Ol9fZ2l0X3ByZXZpb3VzX2JyYW5jaGVz JwogCiAgICAgICAgIGlmIFtbIC1uICR7b3B0X2FyZ3NbKEkpLWJ8LUJ8LS1vcnBoYW58LS1kZXRh Y2hdfSBdXTsgdGhlbgogICAgICAgICAgIHJlbW90ZV9icmFuY2hfbm9wcmVmaXhfYXJnPQogICAg ICAgICAgIHRyZWVfaXNoX2FyZz0KICAgICAgICAgICBmaWxlX2FyZz0KKyAgICAgICAgICBwcmV2 aW91c19hcmc9CiAgICAgICAgIGVsaWYgW1sgLW4gJG9wdF9hcmdzWyhJKS0tdHJhY2tdIF1dOyB0 aGVuCiAgICAgICAgICAgYnJhbmNoX2FyZz0ncmVtb3RlLWJyYW5jaGVzOjpfX2dpdF9yZW1vdGVf YnJhbmNoX25hbWVzJwogICAgICAgICAgIHJlbW90ZV9icmFuY2hfbm9wcmVmaXhfYXJnPQogICAg ICAgICAgIHRyZWVfaXNoX2FyZz0KICAgICAgICAgICBmaWxlX2FyZz0KKyAgICAgICAgICBwcmV2 aW91c19hcmc9CiAgICAgICAgIGVsaWYgW1sgLW4gJHtvcHRfYXJnc1soSSktLW91cnN8LS10aGVp cnN8LW18LS1jb25mbGljdHwtLXBhdGNoXX0gXV07IHRoZW4KICAgICAgICAgICBicmFuY2hfYXJn PQogICAgICAgICAgIHJlbW90ZV9icmFuY2hfbm9wcmVmaXhfYXJnPQorICAgICAgICAgIHByZXZp b3VzX2FyZz0KKyAgICAgICAgZWxpZiBbWyAkbGluZVtDVVJSRU5UXSA9IEAqIF1dOyB0aGVuCisg ICAgICAgICAgYnJhbmNoX2FyZz0KKyAgICAgICAgICByZW1vdGVfYnJhbmNoX25vcHJlZml4X2Fy Zz0KKyAgICAgICAgICB0cmVlX2lzaF9hcmc9CisgICAgICAgICAgZmlsZV9hcmc9CiAgICAgICAg IGZpCiAKICAgICAgICAgX2FsdGVybmF0aXZlIFwKICAgICAgICAgICAkYnJhbmNoX2FyZyBcCiAg ICAgICAgICAgJHJlbW90ZV9icmFuY2hfbm9wcmVmaXhfYXJnIFwKICAgICAgICAgICAkdHJlZV9p c2hfYXJnIFwKLSAgICAgICAgICAkZmlsZV9hcmcgJiYgcmV0PTAKKyAgICAgICAgICAkZmlsZV9h cmcgXAorICAgICAgICAgICRwcmV2aW91c19hcmcgJiYgcmV0PTAKICAgICAgIGVsaWYgW1sgLW4g JHtvcHRfYXJnc1soSSktYnwtQnwtdHwtLXRyYWNrfC0tb3JwaGFufC0tZGV0YWNoXX0gXV07IHRo ZW4KICAgICAgICAgX25vdGhpbmcKICAgICAgIGVsaWYgW1sgLW4gJGxpbmVbMV0gXV0gJiYgX19n aXRfaXNfdHJlZWlzaCAkbGluZVsxXTsgdGhlbgpAQCAtNTc2OSw2ICs1Nzc5LDE0IEBAIF9fZ2l0 X25vdGVzX3JlZnMgKCkgewogICBfd2FudGVkIG5vdGVzLXJlZnMgZXhwbCAnbm90ZXMgcmVmJyBj b21wYWRkICQqIC0gJG5vdGVzX3JlZnMKIH0KIAorKCggJCtmdW5jdGlvbnNbX19naXRfcHJldmlv dXNfYnJhbmNoZXNdICkpIHx8CitfX2dpdF9wcmV2aW91c19icmFuY2hlcyAoKSB7CisgIGRlY2xh cmUgLWEgcHJldmlvdXNfYnJhbmNoZXMKKyAgIyBXZSBkb24ndCBuZWVkIHRvIGVzY2FwZSA6IGlu IGJyYW5jaCBuYW1lcywgYmVjYXVzZSB0aGV5IGNhbid0IGJlIHRoZXJlIChzZWUgZ2l0IGhlbHAg Y2hlY2stcmVmLWZvcm1hdCkKKyAgcHJldmlvdXNfYnJhbmNoZXM9KCR7KGYpIiQoX2NhbGxfcHJv Z3JhbSBwcmV2aW91cy1icmFuY2hlcyAiZ2l0IGxvZyAtLW1heC1jb3VudD05IC0td2Fsay1yZWZs b2dzIC0tZ3JlcC1yZWZsb2cgJ15jaGVja291dDogbW92aW5nIGZyb20gLiogdG8nIC0tZm9ybWF0 PSclZ3MnIDI+L2Rldi9udWxsIiB8IGF3ayAne2lmICghc2VlblskNF0pIHsgc2VlblskNF09MSA7 IHByaW50ICJAey0iIE5SICJ9OiIgJDQgfSB9JykifSkKKyAgX2Rlc2NyaWJlICJwcmV2aW91cyBi cmFuY2giIHByZXZpb3VzX2JyYW5jaGVzCit9CisKICMgRmlsZSBBcmd1bWVudCBUeXBlcwogCiAo KCAkK2Z1bmN0aW9uc1tfX2dpdF9maWxlc19yZWxhdGl2ZV0gKSkgfHwK --e89a8f5038844346ee051293a61d--