From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 607 invoked by alias); 3 May 2011 12:26:08 -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: 29135 Received: (qmail 17403 invoked from network); 3 May 2011 12:25:56 -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=-2.6 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HTML_MESSAGE,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf.google.com designates 74.125.82.171 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:date:x-google-sender-auth :message-id:subject:from:to:content-type; bh=wK4BIxf5z/B6lfZskGAs2uHUhrGPSgZGPw9JirGb+TM=; b=ah+yRI1M+dJZaXYSqUAiuCR0CWnw9xwwqzb167Lz/ZurcjAaJFe1FkIJLk4CeWdWxF K2oExd7kbOeDmZS4jpJ5hTtEmuByg6WCY4+cowkqy+hcFyI1wPqAsE9zdwMKA7q19GQz /UufF9TRUoxtpuTDuSMT8JRmb1mpvB+udpkkQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; b=ZCnjSivEfIecp64C6gfwCxAbt77djFlTgERu0cHg030FrUboBE8Yy0TXroffPnwZhW i+WWrG3FONsH7/lNJrKaZdjAshGloBkE40sVKMeIvKDZr4pO9XnE86J2WmiksI/bA70C Rj42qH9uBEgZNJaGnrgnLqKJifjVQnCwf5+gc= MIME-Version: 1.0 Sender: rocky.bernstein@gmail.com Date: Tue, 3 May 2011 08:25:50 -0400 X-Google-Sender-Auth: ORBO_TE4m5kR1p4csQvxZLmmvH4 Message-ID: Subject: bash compgen -W compatibility patch From: Rocky Bernstein To: zsh-workers@zsh.org Content-Type: multipart/mixed; boundary=e0cb4e43d1cd8da1fd04a25e3d16 --e0cb4e43d1cd8da1fd04a25e3d16 Content-Type: multipart/alternative; boundary=e0cb4e43d1cd8da1eb04a25e3d14 --e0cb4e43d1cd8da1eb04a25e3d14 Content-Type: text/plain; charset=ISO-8859-1 Hi - It looks like zsh's "compgen -W" (words) does not match the same behavior as bash's. For example in bash: $ compgen -W 'abc abe ab a def' ab compgen -W 'abc abe ab a def' ab abc abe ab $ versus zsh 4.3.10 (and git sources): $ autoload -Uz bashcompinit $ bashcompinit $ zmodload -ap zsh/parameter parameters $ compgen -W 'abc abe ab a def' ab abc abe ab a def $ Attached is a patch from git sources as of May 3rd, 2011 with a new test that I believe corrects this behavior. Since I do not consider myself a zsh language expert, the changes in Completion/bashcompinit might be shorted or made more zsh idomatic. For example simplicity, to match the beginning of a word, I used [[ $try =~ "^$find" ]] matching using == and substrings might be faster, not that I think speed is all that important here. Ditt ofo inlining a newly added _compgen_opt_words function; but I think that makes things uglier and harder to test. --e0cb4e43d1cd8da1eb04a25e3d14 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi -=A0

It looks like zsh's =A0"compgen -W"= ; (words) does not match the same behavior as bash's. =A0For example
in bash:

$ compgen -W 'abc abe ab= a def' ab
compgen -W 'abc abe ab a def' ab
abc
abe
ab
$

versus zsh 4.3.10 (a= nd git sources):

$ autoload -Uz bashcompinit<= /div>
$ bashcompinit
$ zmodload -ap zsh/parameter parameters
=
$ compgen -W 'abc abe ab a def' ab
abc
abe=
ab
a
def
$


Attached is a patch from git sources as of May 3r= d, 2011 with a new test that I believe corrects this behavior. =A0
Since I do not consider myself a zsh language expert,=A0the changes in Co= mpletion/bashcompinit might be shorted or=A0
made more zsh idomatic.=A0

For example simpli= city, to match the beginning of a word, I=A0used=A0=A0
=A0 =A0 [[= $try =3D~ "^$find" ]]=A0
matching using =3D=3D and sub= strings might be faster, not that I think speed is all that important here.= Ditt ofo inlining a newly added _compgen_opt_words
function; but I think that makes things uglier and harder to test.=A0<= /div> --e0cb4e43d1cd8da1eb04a25e3d14-- --e0cb4e43d1cd8da1fd04a25e3d16 Content-Type: text/x-patch; charset=US-ASCII; name="compgen.patch" Content-Disposition: attachment; filename="compgen.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gn8t14080 ZGlmZiAtLWdpdCBhL0NvbXBsZXRpb24vYmFzaGNvbXBpbml0IGIvQ29tcGxldGlvbi9iYXNoY29t cGluaXQKaW5kZXggY2JhNDM2YS4uNDAwZGNjNiAxMDA2NDQKLS0tIGEvQ29tcGxldGlvbi9iYXNo Y29tcGluaXQKKysrIGIvQ29tcGxldGlvbi9iYXNoY29tcGluaXQKQEAgLTQxLDYgKzQxLDIwIEBA IF9iYXNoX2NvbXBsZXRlKCkgewogICByZXR1cm4gcmV0CiB9CiAKK19jb21wZ2VuX29wdF93b3Jk cygpIHsKKyAgICB0eXBlc2V0IC1hIHdvcmRzCisgICAgZXZhbCAid29yZHM9KCAkMSApIgorICAg IGxvY2FsIGZpbmQKKyAgICBmaW5kPSQyCisgICAgbG9jYWwgdHJ5CisgICAgZmluZD0ke0BbLTFd fQorICAgIGZvciB0cnkgaW4gJHt3b3Jkc1tAXX0gOyBkbyAKKwlpZiBbWyAkdHJ5ID1+ICJeJGZp bmQiIF1dIDsgdGhlbiAKKwkgICAgcmVzdWx0cys9KCAkdHJ5ICkKKwlmaQorICAgIGRvbmUKKyAg ICByZXN1bHRzPSggIiR7KGspcmVzdWx0c1tAXX0iICkKK30KIGNvbXBnZW4oKSB7CiAgIGxvY2Fs IG9wdHMgcHJlZml4IHN1ZmZpeCBqb2IgT1BUQVJHIE9QVElORCByZXQ9MSAKICAgbG9jYWwgLWEg bmFtZSByZXMgcmVzdWx0cyBqaWRzCkBAIC0xMjgsNyArMTQyLDcgQEAgY29tcGdlbigpIHsKICAg ICAgICAgcmVzdWx0cys9KCAke35PUFRBUkd9ICkKIAl1bnNldG9wdCBudWxsZ2xvYgogICAgICAg OzsKLSAgICAgIFcpIGV2YWwgInJlc3VsdHMrPSggJE9QVEFSRyApIiA7OworICAgICAgVykgX2Nv bXBnZW5fb3B0X3dvcmRzICIkT1BUQVJHIiAiJHtAWy0xXX0iIDs7CiAgICAgICBDKSByZXN1bHRz Kz0oICQoZXZhbCAkT1BUQVJHKSApIDs7CiAgICAgICBQKSBwcmVmaXg9IiRPUFRBUkciIDs7CiAg ICAgICBTKSBzdWZmaXg9IiRPUFRBUkciIDs7CmRpZmYgLS1naXQgYS9UZXN0L1kwMmNvbXBnZW4u enRzdCBiL1Rlc3QvWTAyY29tcGdlbi56dHN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjkwZGNlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0L1kwMmNvbXBnZW4uenRzdApA QCAtMCwwICsxLDIxIEBACisjIFRlc3RzIGZvciBiYXNoIGNvbXBnZW4gY29tcGF0aWJpbGl0eS4K KworJXByZXAKKyAgaWYgKCB6bW9kbG9hZCB6c2gvcGFyYW1ldGVyICkgPi9kZXYvbnVsbCAyPiYx OyB0aGVuCisgICAgLiAkWlRTVF9zcmNkaXIvY29tcGdlbnRlc3QKKyAgICBjb21wdGVzdGluaXQg LXogJFpUU1RfdGVzdGRpci8uLi9TcmMvenNoICYmCisgIGVsc2UKKyAgICBaVFNUX3VuaW1wbGVt ZW50ZWQ9InRoZSB6c2gvcGFyYW1ldGVyIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIgorICBmaQor CisldGVzdAorCisgIGNvbXB0ZXN0ICQnOiBcdFx0XHRcdFx0XHRcdCcKKzA6YmFzaCBjb21wYXRp YmlsaXR5OiBjb21wZ2VuIC1XCis+YWJjCis+YWJlCis+YWIKKworJWNsZWFuCisKKyAgem1vZGxv YWQgLXVpIHpzaC9wYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1Rlc3QvY29tcGdlbnRlc3QgYi9UZXN0 L2NvbXBnZW50ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YjIwMmMK LS0tIC9kZXYvbnVsbAorKysgYi9UZXN0L2NvbXBnZW50ZXN0CkBAIC0wLDAgKzEsMTUgQEAKK2Nv bXB0ZXN0aW5pdCAoKSB7CisgIAorICBzZXRvcHQgZXh0ZW5kZWRnbG9iCisgIFtbIC1kICRaVFNU X3Rlc3RkaXIvTW9kdWxlcy96c2ggXV0gJiYgbW9kdWxlX3BhdGg9KCAkWlRTVF90ZXN0ZGlyL01v ZHVsZXMgKQorCisgIHptb2Rsb2FkIC1pIHpzaC9wYXJhbWV0ZXIgfHwgcmV0dXJuICQ/CisgIGF1 dG9sb2FkIC1VeiBiYXNoY29tcGluaXQgfHwgcmV0dXJuICQ/CisgIGJhc2hjb21waW5pdCB8fCBy ZXR1cm4gJD8KKworfQorCitjb21wdGVzdCAoKSB7CisgIGNvbXBnZW4gLVcgJ2FiYyBhYmUgYWIg YSBkZWYnIGFiCit9CisK --e0cb4e43d1cd8da1fd04a25e3d16--