From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19374 invoked from network); 17 Jul 2009 06:36:14 -0000 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.2.5 Received: from new-brage.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.254.104) by ns1.primenet.com.au with SMTP; 17 Jul 2009 06:36:14 -0000 Received-SPF: none (ns1.primenet.com.au: domain at sunsite.dk does not designate permitted sender hosts) Received: (qmail 67138 invoked from network); 17 Jul 2009 06:28:05 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 17 Jul 2009 06:28:05 -0000 Received: (qmail 7747 invoked by alias); 17 Jul 2009 06:27:56 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 27154 Received: (qmail 7718 invoked from network); 17 Jul 2009 06:27:55 -0000 Received: from bifrost.dotsrc.org (130.225.254.106) by sunsite.dk with SMTP; 17 Jul 2009 06:27:55 -0000 Received: from web37304.mail.mud.yahoo.com (web37304.mail.mud.yahoo.com [209.191.90.247]) by bifrost.dotsrc.org (Postfix) with SMTP id 098668027106 for ; Fri, 17 Jul 2009 08:27:50 +0200 (CEST) Received: (qmail 74538 invoked by uid 60001); 17 Jul 2009 06:27:50 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1247812069; bh=EHq4rtvbVREWwYtc7kGUsrAQyOU8nEWKF52snu+Cdx4=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type; b=HUByw6PJIf7l4Q1+GkqDnYMvnn8VelZXr4cVf1J3v3ZV8GLHm2y0bSCGvbioEnQaN1u5q28/CMheDWD3QuchxLDj1S+sS+cAfDDRqPBlpk4LLqopgyef69Ybtxn2GcNo32/kq4B9N5ubbnIWrrp1TV5nwetOAVwATTHWCgV0Ljg= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type; b=gXYHYhL4BWHmpE+7tv/9lNHjnvr63/4RIyj7KJBI8xtgoshVcRmDZWmxgzhJ0Tx2I8I75mS6VutZtQa3EjNE0kCbuTy+tcL281998PIfT4qCqUJ4pSITnDnFBulDm6Qb2GLTRH/Tc0C3fVqjMHbG9iYW4p51C4sQRTY2p367ZLY=; Message-ID: <943349.74078.qm@web37304.mail.mud.yahoo.com> X-YMail-OSG: zbucrl8VM1kRGTm33fsk.T60yAbWGnMUL8GRAk6JEt1QhtWqJI8wfXG1i.6z0nyhv0hRCdvJ3TmgkAoRQS2q.No7QJ72nnhe0mNpKL2qeWEQEh0hED5s8qgASY2ySC1MvYgyS7Bj5qWxYP_pK19RmvhBKcwX47W08onBcGM_7vNSy4ikLwarIrLjXPaHEffZnIx6_7kt39qjUe2zK3kTc4Td.6nRUMFhEF7fq7ehAav3Kywa07kcW2PxLmHvXlj2YGB7PTGxnmacagW8vNiib4xlWLqrmXKoAjw0PnkUUCx2cRqmM4NYv8DelbDMQh5k0.9P_Q-- Received: from [173.59.41.177] by web37304.mail.mud.yahoo.com via HTTP; Thu, 16 Jul 2009 23:27:49 PDT X-Mailer: YahooMailRC/1358.22 YahooMailWebService/0.7.289.15 Date: Thu, 16 Jul 2009 23:27:49 -0700 (PDT) From: Michael Hwang Subject: [PATCH]: New hook function "atexec" To: zsh-workers@sunsite.dk MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-284992939-1247812069=:74078" X-Virus-Scanned: ClamAV 0.94.2/9578/Fri Jul 17 07:22:17 2009 on bifrost X-Virus-Status: Clean --0-284992939-1247812069=:74078 Content-Type: text/plain; charset=us-ascii I've hacked in a new hook function similar to preexec called "atexec". The differences are: 1) atexec run before each command in the list/sublist. 2) The first argument is the command being run. The remaining arguments are the ones fed to the command. 3) The arguments have all substitutions made. atexec is only run: 1) In interactive mode 2) When a command is executed by the user 3) When the command is not in the background 4) When not executing command substitution For example, let's say I'm running xterm, and have this atexec: atexec () { print -n -- "\e]0;${(q-)@}\a" } When I run "make && make install" (compiling zsh, for instance), the xterm title will be "make" when executing "make". If that command is successful and moves on to "make install", the xterm's title will change to "make install". Because atexec shows exactly what is being executed, something like "print $HOME $(( 3 + 4 ))" will give atexec arguments of "print /home/foobar 7". Globs are also resolved, which might be annoying. Moving into a folder AUTO_CD-style will give atexec an actual "cd" command. atexec is not run for backgrounded commands in case it interferes with the output of foreground commands. atexec is not run for command substitution, because anything it prints will be output on the line editor. I'm hoping the man documentation is clear enough. Michael Hwang --0-284992939-1247812069=:74078 Content-Type: text/x-patch; name="atexec.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="atexec.patch" ZGlmZiAtLWdpdCBhL0RvYy9ac2gvY29udHJpYi55byBiL0RvYy9ac2gvY29u dHJpYi55bwppbmRleCA0MTMxZDY2Li5lMDcxMDdkIDEwMDY0NAotLS0gYS9E b2MvWnNoL2NvbnRyaWIueW8KKysrIGIvRG9jL1pzaC9jb250cmliLnlvCkBA IC0zMDEsOCArMzAxLDggQEAgY2FsbGVkIGF0IHRoZSBzYW1lIHBvaW50OyB0 aGVzZSBhcmUgc28tY2FsbGVkIGBob29rIGZ1bmN0aW9ucycuCiBUaGUgc2hl bGwgZnVuY3Rpb24gdHQoYWRkLXpzaC1ob29rKSBwcm92aWRlcyBhIHNpbXBs ZSB3YXkgb2YgYWRkaW5nIG9yCiByZW1vdmluZyBmdW5jdGlvbnMgZnJvbSB0 aGUgYXJyYXkuCiAKLXZhcihob29rKSBpcyBvbmUgb2YgdHQoY2hwd2QpLCB0 dChwZXJpb2RpYyksIHR0KHByZWNtZCkgb3IgdHQocHJlZXhlYyksCi10aGUg c3BlY2lhbCBmdW5jdGlvbnMgaW4gcXVlc3Rpb24uCit2YXIoaG9vaykgaXMg b25lIG9mIHR0KGF0ZXhlYyksIHR0KGNocHdkKSwgdHQocGVyaW9kaWMpLCB0 dChwcmVjbWQpLAorb3IgdHQocHJlZXhlYyksIHRoZSBzcGVjaWFsIGZ1bmN0 aW9ucyBpbiBxdWVzdGlvbi4KIAogdmFyKGZ1bmN0aW9ucykgaXMgbmFtZSBv ZiBhbiBvcmRpbmFyeSBzaGVsbCBmdW5jdGlvbi4gIElmIG5vIG9wdGlvbnMK IGFyZSBnaXZlbiB0aGlzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFycmF5IG9m IGZ1bmN0aW9ucyB0byBiZSBleGVjdXRlZC4KZGlmZiAtLWdpdCBhL0RvYy9a c2gvZnVuYy55byBiL0RvYy9ac2gvZnVuYy55bwppbmRleCA1ZjhkZjk5Li43 Njg5NjQ3IDEwMDY0NAotLS0gYS9Eb2MvWnNoL2Z1bmMueW8KKysrIGIvRG9j L1pzaC9mdW5jLnlvCkBAIC0yMDgsNiArMjA4LDE1IEBAIGNhdXNlcyBhbiBp bW1lZGlhdGVseSBmb2xsb3dpbmcgdHQocGVyaW9kaWMpIGZ1bmN0aW9uIG5v dCB0byBydW4gKHRob3VnaAogaXQgbWF5IHJ1biBhdCB0aGUgbmV4dCBvcHBv cnR1bml0eSkuCiAKIHN0YXJ0aXRlbSgpCitmaW5kZXgoYXRleGVjKQordmlu ZGV4KGF0ZXhlY19mdW5jdGlvbnMpCitpdGVtKHR0KGF0ZXhlYykpKAorRXhl Y3V0ZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGVhY2ggaW5kaXZpZHVhbCBjb21t YW5kIGV4ZWN1dGVkIGJ5IHRoZSB1c2VyLgorVGhlIGZpcnN0IGFyZ3VtZW50 IGlzIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kIGJlaW5nIGV4ZWN1dGVkLiBU aGUgcmVtYWluaW5nCithcmd1bWVudHMgYXJlIHRoZSBhcmd1bWVudHMgZ2l2 ZW4gdG8gdGhlIGNvbW1hbmQuIFVubGlrZSB0dChwcmVleGVjKSwgYWxsCitz dWJzdGl0dXRpb25zIGhhdmUgYmVlbiBtYWRlLiBUaGUgaG9vayBmdW5jdGlv biB3aWxsIG5vdCBiZSBydW4gZm9yCitiYWNrZ3JvdW5kZWQgY29tbWFuZHMg b3IgY29tbWFuZCBzdWJzdGl0dXRpb24uCispCiBmaW5kZXgoY2hwd2QpCiB2 aW5kZXgoY2hwd2RfZnVuY3Rpb25zKQogaXRlbSh0dChjaHB3ZCkpKApkaWZm IC0tZ2l0IGEvU3JjL2V4ZWMuYyBiL1NyYy9leGVjLmMKaW5kZXggZTY4MjM3 OS4uOGQ3YzY1ZiAxMDA2NDQKLS0tIGEvU3JjL2V4ZWMuYworKysgYi9TcmMv ZXhlYy5jCkBAIC0yMjMzLDYgKzIyMzMsMTUgQEAgcmVzb2x2ZWJ1aWx0aW4o Y29uc3QgY2hhciAqY21kYXJnLCBIYXNoTm9kZSBobikKICAgICByZXR1cm4g aG47CiB9CiAKKy8qIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHdlIHdhbnQg dG8gcnVuIHRoZSBhdGV4ZWMgaG9vaworICogZnVuY3Rpb24ocykuIEZvciBl eGFtcGxlLCB3ZSBkb24ndCB3YW50IHRvIHJ1biBpdCBmb3IKKyAqIGJhY2tn cm91bmRlZCBjb21tYW5kcy4gV2UgYWxzbyBkb24ndCB3YW50IGl0IHRvIHJ1 biBmb3IKKyAqIGNvbW1hbmQgc3Vic3RpdHV0aW9uLCBvdGhlcndpc2UgYW55 dGhpbmcgYXRleGVjIHByaW50cworICogd2lsbCBiZSBvdXRwdXQgdG8gdGhl IGxpbmUgZWRpdG9yLgorCisvKiovCitpbnQgYXRleGVjID0gMTsKKwogLyoq Lwogc3RhdGljIHZvaWQKIGV4ZWNjbWQoRXN0YXRlIHN0YXRlLCBpbnQgaW5w dXQsIGludCBvdXRwdXQsIGludCBob3csIGludCBsYXN0MSkKQEAgLTI3NDIs NiArMjc1MSw4IEBAIGV4ZWNjbWQoRXN0YXRlIHN0YXRlLCBpbnQgaW5wdXQs IGludCBvdXRwdXQsIGludCBob3csIGludCBsYXN0MSkKIAl9CiAJLyogcGlk ID09IDAgKi8KIAljbG9zZShzeW5jaFswXSk7CisJaWYgKGhvdyAmIFpfQVNZ TkMpCisJICAgIGF0ZXhlYyA9IDA7CiAJZmxhZ3MgPSAoKGhvdyAmIFpfQVNZ TkMpID8gRVNVQl9BU1lOQyA6IDApIHwgRVNVQl9QR1JQOwogCWlmICgodHlw ZSAhPSBXQ19TVUJTSCkgJiYgIShob3cgJiBaX0FTWU5DKSkKIAkgICAgZmxh Z3MgfD0gRVNVQl9LRUVQVFJBUDsKQEAgLTI3NzksNiArMjc5MCwzNSBAQCBl eGVjY21kKEVzdGF0ZSBzdGF0ZSwgaW50IGlucHV0LCBpbnQgb3V0cHV0LCBp bnQgaG93LCBpbnQgbGFzdDEpCiAJZ290byBlcnI7CiAgICAgfQogCisgICAg LyogRXhlY3V0ZSBhdGV4ZWMgYW5kL29yIGF0ZXhlY19mdW5jdGlvbnMuCisg ICAgICoKKyAgICAgKiBOb3RpY2UgdGhhdCB3ZSBkbyB0aGlzIGFmdGVyIHBy ZWZvcmsgc3Vic3RpdHV0aW9uczsKKyAgICAgKiB0aGlzIG1lYW5zIHdlIGdl dCB0byBzZWUgZXhhY3RseSB3aGF0cyBiZWluZyBleGVjdXRlZC4KKyAgICAg KgorICAgICAqIGF0ZXhlYyBpcyBydW4gd2hlbgorICAgICAqIDEuIFRoZSBz aGVsbCBpcyBpbnRlcmFjdGl2ZSAodGhvdWdoIGl0IG1pZ2h0IGJlIHVzZWZ1 bCBhcworICAgICAqICAgIGEgZGVidWdnaW5nIHRvb2wgaW4gc2NyaXB0cz8p CisgICAgICogMi4gQ29tbWFuZCB3YXMgY2FsbGVkIGJ5IHVzZXIgCisgICAg ICogMy4gTm90IGRvaW5nIHByb2Nlc3Mgc3Vic3RpdHV0aW9uIChvdGhlcndp c2UgaWYgYXRleGVjIHByaW50cworICAgICAqICAgIGFueXRoaW5nLCBpdCBp cyBwdXNoZWQgb250byB0aGUgY29tbWFuZCBsaW5lKQorICAgICAqIDQuIE5v bi1iYWNrZ3JvdW5kIGNvbW1hbmQgaXMgZXhlY3V0ZWQuIE5vIHBvaW50Cisg ICAgICogICAgaW4gcnVubmluZyBhdGV4ZWMgb24gc29tZXRoaW5nIHlvdSB3 YW50ZWQgdG8gaGlkZS4gKi8KKyAgICBpZiAoaW50ZXJhY3QgJiYKKwlhdGV4 ZWMgJiYKKwkhc291cmNlbGV2ZWwgJiYKKwkhc2Zjb250ZXh0ICYmCisJYXJn cyAmJgorCShnZXRzaGZ1bmMoImF0ZXhlYyIpIHx8CisJcGFyYW10YWItPmdl dG5vZGUocGFyYW10YWIsICJhdGV4ZWMiIEhPT0tfU1VGRklYKSkpIHsKKwkv KiBUZW1wb3JhcmlseSBhZGQgYSBub2RlIGF0IHRoZSBiZWdpbm5pbmcgb2Yg dGhlIGFyZ3MKKwkgKiBsaW5rIGxpc3QgdG8gaW5kaWNhdGUgd2UgYXJlIGNh bGxpbmcgYXRleGVjLAorCSAqIGFuZCByZW1vdmUgaXQgYWZ0ZXJ3YXJkcy4g Ki8KKwlwdXNobm9kZShhcmdzLCAiYXRleGVjIik7CisJY2FsbGhvb2tmdW5j KCJhdGV4ZWMiLCBhcmdzLCAxLCBOVUxMKTsKKwl1cmVtbm9kZShhcmdzLCBm aXJzdG5vZGUoYXJncykpOworCWVycmZsYWcgPSAwOworICAgIH0KKwogICAg IC8qIE1ha2UgYSBjb3B5IG9mIHN0ZGVyciBmb3IgeHRyYWNlIG91dHB1dCBi ZWZvcmUgcmVkaXJlY3RpbmcgKi8KICAgICBmZmx1c2goeHRyZXJyKTsKICAg ICBpZiAoaXNzZXQoWFRSQUNFKSAmJiB4dHJlcnIgPT0gc3RkZXJyICYmCkBA IC0zNTI0LDYgKzM1NjQsNyBAQCBnZXRvdXRwdXQoY2hhciAqY21kLCBpbnQg cXQpCiAgICAgY2hpbGRfdW5ibG9jaygpOwogICAgIHpjbG9zZShwaXBlc1sw XSk7CiAgICAgcmVkdXAocGlwZXNbMV0sIDEpOworICAgIGF0ZXhlYyA9IDA7 IC8qIERvbid0IHJ1biBhdGV4ZWMuICovCiAgICAgZW50ZXJzdWJzaChFU1VC X1BHUlB8RVNVQl9OT01PTklUT1IpOwogICAgIGNtZHB1c2goQ1NfQ01EU1VC U1QpOwogICAgIGV4ZWNvZGUocHJvZywgMCwgMSk7Cg== --0-284992939-1247812069=:74078--