From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brad Knotwell Subject: language support for m4 Date: Thu, 5 Apr 2018 06:35:46 +0000 (UTC) Message-ID: <1363290911.1944832.1522910146358@mail.yahoo.com> References: <1363290911.1944832.1522910146358.ref@mail.yahoo.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_1944831_899147019.1522910146358" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55425) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f3yV1-00015n-6L for emacs-orgmode@gnu.org; Thu, 05 Apr 2018 02:35:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f3yUw-0007h1-9D for emacs-orgmode@gnu.org; Thu, 05 Apr 2018 02:35:55 -0400 Received: from sonic304-20.consmr.mail.ne1.yahoo.com ([66.163.191.146]:34540) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f3yUv-0007gS-LK for emacs-orgmode@gnu.org; Thu, 05 Apr 2018 02:35:50 -0400 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-orgmode@gnu.org ------=_Part_1944831_899147019.1522910146358 Content-Type: multipart/alternative; boundary="----=_Part_1944830_1950550634.1522910146324" ------=_Part_1944830_1950550634.1522910146324 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Good evening all-- The attached file adds m4 support.=C2=A0 It was tested against org-9.1.7 an= d used ob-sed.el and ob-shell.el for inspiration.=C2=A0 Both code execution= and tangling have been tested with simple inputs as well as tables (easies= t way to verify correctness is to inspect the tangled output).=C2=A0 It was= good fun for an evening project (converting the tables to m4 list syntax w= as the trickiest part and required a foray into ob-shell.el; pcase is a nif= ty function). When putting it together, I debated between putting the definitions represe= nting variables in as -DNAME=3Dvalue pairs in the command-line or putting t= hem in the body of the generate file.=C2=A0 Even though it's a bit uglier, = I decided to put them in the body of the file as it makes the generated fil= e capable of being run by hand. Finally, thanks for the work on org-mode and babel.=C2=A0 Vanilla org-mode = has made my meeting notes are significantly easier and PDF exports look ter= rific.=C2=A0 Likewise, while I've written numerous documents using R/knitr,= I appreciate having a literate environment that supports additional langua= ges. --Brad ------=_Part_1944830_1950550634.1522910146324 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Good evening all--
The attached file adds m4 support.  It was tested against = org-9.1.7 and used ob-sed.el and ob-shell.el for inspiration.  Both co= de execution and tangling have been tested with simple inputs as well as ta= bles (easiest way to verify correctness is to inspect the tangled output).&= nbsp; It was good fun for an evening project (converting the tables to m4 l= ist syntax was the trickiest part and required a foray into ob-shell.el; pc= ase is a nifty function).

When putting it together= , I debated between putting the definitions representing variables in as -D= NAME=3Dvalue pairs in the command-line or putting them in the body of the g= enerate file.  Even though it's a bit uglier, I decided to put them in= the body of the file as it makes the generated file capable of being run b= y hand.

Finally, thanks for the work on org-mode a= nd babel.  Vanilla org-mode has made my meeting notes are significantl= y easier and PDF exports look terrific.  Likewise, while I've written = numerous documents using R/knitr, I appreciate having a literate environmen= t that supports additional languages.

--Brad
=
------=_Part_1944830_1950550634.1522910146324-- ------=_Part_1944831_899147019.1522910146358 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ob-m4.el" Content-ID: Ozs7IG9iLW00LmVsIC0tLSBCYWJlbCBGdW5jdGlvbnMgZm9yIG00IHNjcmlwdHMgICAgLSotIGxl eGljYWwtYmluZGluZzogdDsgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KCjs7IEF1dGhvcjogQnJhZCBLbm90d2VsbAo7OyBLZXl3 b3JkczogbGl0ZXJhdGUgcHJvZ3JhbW1pbmcsIHJlcHJvZHVjaWJsZSByZXNlYXJjaAo7OyBWZXJz aW9uOiAwLjEuMAoKOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgoKOzsgR05VIEVt YWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KCjs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRoIEdO VSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgo7 OzsgQ29tbWVudGFyeToKCjs7IFByb3ZpZGVzIGEgd2F5IHRvIGV2YWx1YXRlIG00IHNjcmlwdHMg aW4gT3JnIG1vZGUuCgo7OzsgVXNhZ2U6Cgo7OyBBZGQgdG8geW91ciBFbWFjcyBjb25maWc6Cgo7 OyAob3JnLWJhYmVsLWRvLWxvYWQtbGFuZ3VhZ2VzCjs7ICAnb3JnLWJhYmVsLWxvYWQtbGFuZ3Vh Z2VzCjs7ICAnKChtNCAuIHQpKSkKCjs7IEluIGFkZGl0aW9uIHRvIHRoZSBub3JtYWwgaGVhZGVy IGFyZ3VtZW50cywgb2ItbTQgYWxzbyBwcm92aWRlcwo7OyB0d28gc3BlY2lmaWMgb3B0aW9uczoK OzsgIDpjbWQtbGluZSAtLSBhbGxvd3MgYSB1c2VyIHRvIGFwcGVuZCBhcmd1bWVudHMgdG8gdGhl IGNhbGwKOzsgIDpwcmVmaXgtYnVpbGRpbnMgLS0gY2FsbHMgd2l0aCB0aGUgLVAgb3B0aW9uIHRv IGF1dG9tYXRpY2FsbHkKOzsgICAgICAgcHJlZml4IGFsbCBidWlsdC1pbiBtYWNyb3Mgd2l0aCAn bTRfJwo7OyBOb3RlOiAgaXQgaXMgYSBiYWQgaWRlYSB0byBleHBsaWNpdGx5IHBhc3MgdGhlICIt UCIgb3B0aW9uIGluCjs7IDpjbWQtbGluZSB0byBlbmFibGUgcHJlZml4aW5nIGFzIGFueSBhcmd1 bWVudHMgc3BlY2lmaWVkIHZpYQo7OyA6dmFyIE5BTUU9dmFsdWUgd2lsbCBiZSBwcmVmaXhlZCBp bmNvcnJlY3RseS4KOzsKOzsgRXhwbGFpbmluZyB0aGlzIHdpdGggYSBiaXQgbW9yZSBkZXRhaWws IGFsbCA6dmFyIE5BTUU9dmFsdWUgYXJndW1lbnRzIGFyZQo7OyBwcmVwZW5kZWQgdG8gdGhlIGJv ZHkgYXMgZGVmaW5pdGlvbnM6Cjs7ICAgICBkZWZpbmUoTkFNRSx2YWx1ZSkKOzsgICAgICAgICAg ICBvcgo7OyAgICAgbTRfZGVmaW5lKE5BTUUsdmFsdWUpIGlmZiA6cHJlZml4LWJ1aWx0aW5zIGlz IHNldAo7Owo7OyBOb3RlOiAgdGhlIDpwcmVmaXgtYnVpbHRpbiBvcHRpb24gaXMgaW5jb21wYXRp YmxlIHdpdGggUG9zaXgKOzsgICAgICAgIGNvbXBsaWFudCBtNCBpbXBsZW1lbnRhdGlvbnMuICBU aGlzIGlzIGZpbmUgZm9yIHR3byByZWFzb25zOgo7OyAgICAgKiBhbnlvbmUgdXNpbmcgYSBQb3Np eCBjb21wbGlhbnQgdXRpbGl0eSBpcyBmaW5lIGJ5IGRlZmF1bHQgYXMKOzsgICAgICAgdGhlIC1Q IG9wdGlvbiBpcyBvbWl0dGVkCjs7ICAgICAqIEdOVSdzIG00IGltcGxlbWVudGF0aW9uIGlzIChl c3NlbnRpYWxseSkgc3RhbmRhcmQgYXQgdGhpcyBwb2ludAoocmVxdWlyZSAnb2IpCgooZGVmdmFy IG9yZy1iYWJlbC1tNC1jb21tYW5kICJtNCIKICAiTmFtZSBvZiB0aGUgbTQgZXhlY3V0YWJsZSBj b21tYW5kLiIpCgooZGVmdmFyIG9yZy1iYWJlbC10YW5nbGUtbGFuZy1leHRzKQooYWRkLXRvLWxp c3QgJ29yZy1iYWJlbC10YW5nbGUtbGFuZy1leHRzICcoIm00IiAuICJtNCIpKQoKKGRlZmNvbnN0 IG9yZy1iYWJlbC1oZWFkZXItYXJnczptNAogICcoKDpjbWQtbGluZSAuIDphbnkpCiAgICAoOnBy ZWZpeC1idWlsdGlucykpCiAgIk00IHNwZWNpZmljIGhlYWRlciBhcmd1bWVudHMuIikKCihkZWZ2 YXIgb3JnLWJhYmVsLWRlZmF1bHQtaGVhZGVyLWFyZ3M6bTQgJygpCiAgIkRlZmF1bHQgYXJndW1l bnRzIGZvciBldmFsdWF0aW5nIGEgbTQgc291cmNlIGJsb2NrLiIpCgo7OyBidWlsZCB0aGUgcGFz c2VkLWluIG1hY3JvIGRlZmluaXRpb25zIGFzIGEgc2luZ2xlIHN0cmluZyB0byBwcmVwZW5kIHRv IHRoZSBib2R5Cjs7IHRoZSBob2N1cy1wb2N1cyB3aXRoIDpwcmVmaXgtYnVpbHRpbnMgaXMgbmVj ZXNzYXJ5IGZvciB0aGUgLVAgb3B0aW9uIHRvIHdvcmsKCihkZWZ1biBfX29yZy1iYWJlbC1tNC1w cmVmaXggKHBhcmFtcykgKGlmIChhc3NxIDpwcmVmaXgtYnVpbHRpbnMgcGFyYW1zKSAibTRfIikp CihkZWZ1biBvcmctYmFiZWwtLXZhcmlhYmxlLWFzc2lnbm1lbnQ6bTRfZ2VuZXJpYyAocGFyYW1z IHZhcm5hbWUgdmFsdWVzKQogIChjb25jYXQgKF9fb3JnLWJhYmVsLW00LXByZWZpeCBwYXJhbXMp CgkgICJkZWZpbmUoIiAoZm9ybWF0ICIlcyIgdmFybmFtZSkgIiwiIChmb3JtYXQgIiVzIiB2YWx1 ZXMpICIpIgoJICAoX19vcmctYmFiZWwtbTQtcHJlZml4IHBhcmFtcykKCSAgImRubFxuIikpCgoo ZGVmdW4gb3JnLWJhYmVsLS12YXJpYWJsZS1hc3NpZ25tZW50Om00X2xpc3QgKHBhcmFtcyB2YXJu YW1lIHZhbHVlcykKICAoY29uY2F0IChfX29yZy1iYWJlbC1tNC1wcmVmaXggcGFyYW1zKQoJICAi ZGVmaW5lKCIgKGZvcm1hdCAiJXMsWyIgdmFybmFtZSkKCSAgKG1hcGNvbmNhdCAobGFtYmRhICh2 YWx1ZSkKCQkgICAgICAgKGlmICg9IChsZW5ndGggdmFsdWUpIDEpIChmb3JtYXQgIiVzIiAoY2Fy IHZhbHVlKSkKCQkgICAgICAgKGNvbmNhdCAiWyIKCQkJICAgICAgIChtYXBjb25jYXQgKGxhbWJk YSAoeCkgKGZvcm1hdCAiJXMiIHgpKSB2YWx1ZSAiLCIpCgkJCSAgICAgICAiXSIpKSkgdmFsdWVz ICIsIikKCSAgIl0pIiAoX19vcmctYmFiZWwtbTQtcHJlZml4IHBhcmFtcykgImRubFxuIikpCgoo ZGVmdW4gb3JnLWJhYmVsLS12YXJpYWJsZS1hc3NpZ25tZW50czptNCAocGFyYW1zIHZhcm5hbWVz IHZhbHVlcykKICAiUmVwcmVzZW50IHRoZSBwYXJhbWV0ZXJzIGFzIG00IGRlZmluaXRpb25zIgog IChwY2FzZSB2YWx1ZXMKICAgIChgKCxfIC4gLF8pIChvcmctYmFiZWwtLXZhcmlhYmxlLWFzc2ln bm1lbnQ6bTRfbGlzdCBwYXJhbXMgdmFybmFtZXMgdmFsdWVzKSkKICAgIChfIChvcmctYmFiZWwt LXZhcmlhYmxlLWFzc2lnbm1lbnQ6bTRfZ2VuZXJpYyBwYXJhbXMgdmFybmFtZXMgdmFsdWVzKSkp KQoKKGRlZnVuIG9yZy1iYWJlbC12YXJpYWJsZS1hc3NpZ25tZW50czptNCAocGFyYW1zKQogIChh cHBseSAnY29uY2F0IChtYXBjYXIgKGxhbWJkYSAocGFpcikgKG9yZy1iYWJlbC0tdmFyaWFibGUt YXNzaWdubWVudHM6bTQKCQkJCQkgcGFyYW1zIChjYXIgcGFpcikgKGNkciBwYWlyKSkpCgkJCSAo b3JnLWJhYmVsLS1nZXQtdmFycyBwYXJhbXMpKSkpCgo7OyByZXF1aXJlZCB0byBtYWtlIHRhbmds aW5nIHdvcmsKOzsgdGhlIGZpbmFsICJcbiIgaXMgcmVxdWlyZWQgdG8gbWFrZSBtNCB3b3JrIGFz IHRoZSBib2R5IGRvZXNuJ3QgZW5kIGluIGEgbmV3bGluZQooZGVmdW4gb3JnLWJhYmVsLWV4cGFu ZC1ib2R5Om00IChib2R5IHBhcmFtcykKICAiRXhwYW5kIEJPRFkgYWNjb3JkaW5nIHRvIFBBUkFN UywgcmV0dXJuIHRoZSBleHBhbmRlZCBib2R5LiIKICAoY29uY2F0IChvcmctYmFiZWwtdmFyaWFi bGUtYXNzaWdubWVudHM6bTQgcGFyYW1zKSBib2R5ICJcbiIpKQoKKGRlZnVuIG9yZy1iYWJlbC1l eGVjdXRlOm00IChib2R5IHBhcmFtcykKICAiRXhlY3V0ZSBhIGJsb2NrIG9mIG00IGNvZGUgd2l0 aCBPcmcgQmFiZWwuCkJPRFkgaXMgdGhlIHNvdXJjZSBpbnNpZGUgYSBtNCBzb3VyY2UgYmxvY2sg YW5kIFBBUkFNUyBpcyBhbgphc3NvY2lhdGlvbiBsaXN0IG92ZXIgdGhlIHNvdXJjZSBibG9jayBj b25maWd1cmF0aW9ucy4gIFRoaXMKZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBvcmctYmFiZWwtZXhl Y3V0ZS1zcmMtYmxvY2snLiIKICAobWVzc2FnZSAiZXhlY3V0aW5nIG00IHNvdXJjZSBjb2RlIGJs b2NrIikKICAobGV0KiAoKHJlc3VsdC1wYXJhbXMgKGNkciAoYXNzcSA6cmVzdWx0LXBhcmFtcyBw YXJhbXMpKSkKICAgICAgICAgKGNtZC1saW5lIChjZHIgKGFzc3EgOmNtZC1saW5lIHBhcmFtcykp KQoJIChwcmVmaXgtYnVpbHRpbnMgKGFzc3EgOnByZWZpeC1idWlsdGlucyBwYXJhbXMpKQoJIChj b2RlLWZpbGUgKGxldCAoKGZpbGUgKG9yZy1iYWJlbC10ZW1wLWZpbGUgIm00LSIpKSkKICAgICAg ICAgICAgICAgICAgICAgICh3aXRoLXRlbXAtZmlsZSBmaWxlCgkJCShpbnNlcnQgKG9yZy1iYWJl bC1leHBhbmQtYm9keTptNCBib2R5IHBhcmFtcykgZmlsZSkpIGZpbGUpKQoJIChzdGRpbiAobGV0 ICgoc3RkaW4gKGNkciAoYXNzcSA6c3RkaW4gcGFyYW1zKSkpKQoJCSAgICh3aGVuIHN0ZGluCgkJ ICAgICAobGV0ICgodG1wIChvcmctYmFiZWwtdGVtcC1maWxlICJtNC1zdGRpbi0iKSkKCQkJICAg KHJlcyAob3JnLWJhYmVsLXJlZi1yZXNvbHZlIHN0ZGluKSkpCgkJICAgICAgICh3aXRoLXRlbXAt ZmlsZSB0bXAKCQkJIChpbnNlcnQgcmVzKSkKCQkgICAgICAgdG1wKSkpKQogICAgICAgICAoY21k IChtYXBjb25jYXQgIydpZGVudGl0eQoJCQkgKHJlbXEgbmlsCgkJCSAgICAgICAobGlzdCBvcmct YmFiZWwtbTQtY29tbWFuZAoJCQkJICAgICBjbWQtbGluZSAoaWYgcHJlZml4LWJ1aWx0aW5zICIt UCIpICI8IiBjb2RlLWZpbGUpKQoJCQkgIiAiKSkpCiAgICAob3JnLWJhYmVsLXJlYXNzZW1ibGUt dGFibGUKICAgICAobGV0ICgocmVzdWx0cwogICAgICAgICAgICAoY29uZAogICAgICAgICAgICAg KHN0ZGluICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAoY2FsbC1wcm9j ZXNzLXNoZWxsLWNvbW1hbmQgY21kIHN0ZGluIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgICAg ICAgICAgICAgICAoYnVmZmVyLXN0cmluZykpKQogICAgICAgICAgICAgKHQgKG9yZy1iYWJlbC1l dmFsIGNtZCAiIikpKSkpCiAgICAgICAod2hlbiByZXN1bHRzCiAgICAgICAgIChvcmctYmFiZWwt cmVzdWx0LWNvbmQgcmVzdWx0LXBhcmFtcwoJICAgcmVzdWx0cwoJICAgKGxldCAoKHRtcCAob3Jn LWJhYmVsLXRlbXAtZmlsZSAibTQtcmVzdWx0cy0iKSkpCgkgICAgICh3aXRoLXRlbXAtZmlsZSB0 bXAgKGluc2VydCByZXN1bHRzKSkKCSAgICAgKG9yZy1iYWJlbC1pbXBvcnQtZWxpc3AtZnJvbS1m aWxlIHRtcCkpKSkpCiAgICAgKG9yZy1iYWJlbC1waWNrLW5hbWUKICAgICAgKGNkciAoYXNzcSA6 Y29sbmFtZS1uYW1lcyBwYXJhbXMpKSAoY2RyIChhc3NxIDpjb2xuYW1lcyBwYXJhbXMpKSkKICAg ICAob3JnLWJhYmVsLXBpY2stbmFtZQogICAgICAoY2RyIChhc3NxIDpyb3duYW1lLW5hbWVzIHBh cmFtcykpIChjZHIgKGFzc3EgOnJvd25hbWVzIHBhcmFtcykpKSkpKQoKKHByb3ZpZGUgJ29iLW00 KQo7Ozsgb2ItbTQuZWwgZW5kcyBoZXJlCgo7OyBUZXN0IGV4YW1wbGVzIGJlbG93Ogo7Owo7Owo7 OyAjK2JlZ2luX3NyYyBtNCA6cmVzdWx0cyBvdXRwdXQgOnZhciBYWFhYPSdoZWxsbycgOnZhciBZ WVlZPSd3b3JsZCcKOzsgZGVmaW5lKHRoaXMxLCBvbmUgd2lsbCBleHBhbmQpZG5sCjs7IG00X2Rl ZmluZSh0aGlzMixvbmUgd2lsbCBub3QgZXhwYW5kKW00X2RubAo7OyB0aGlzMQo7OyB0aGlzMgo7 OyBYWFhYCjs7IFlZWVkKOzsgWlpaWgo7OyAjK2VuZF9zcmMKCjs7ICMrUkVTVUxUUzoKOzsgOiBt NF9kZWZpbmUodGhpczIsb25lIHdpbGwgbm90IGV4cGFuZCltNF9kbmwKOzsgOiBvbmUgd2lsbCBl eHBhbmQKOzsgOiB0aGlzMgo7OyA6IGhlbGxvCjs7IDogd29ybGQKOzsgOiBaWlpaCgo7OyAjK2Jl Z2luX3NyYyBtNCA6cHJlZml4LWJ1aWx0aW5zIDpyZXN1bHRzIG91dHB1dCA6dmFyIFhYWFg9J2hl bGxvJyA6dmFyIFlZWVk9J3dvcmxkJwo7OyBkZWZpbmUodGhpczEsIG9uZSB3aWxsIG5vdCBleHBh bmQpZG5sCjs7IG00X2RlZmluZSh0aGlzMixvbmUgd2lsbCBleHBhbmQpbTRfZG5sCjs7IHRoaXMx Cjs7IHRoaXMyCjs7IFhYWFgKOzsgWVlZWQo7OyBaWlpaCjs7ICMrZW5kX3NyYwoKOzsgIytSRVNV TFRTOgo7OyA6IGRlZmluZSh0aGlzMSwgb25lIHdpbGwgbm90IGV4cGFuZClkbmwKOzsgOiB0aGlz MQo7OyA6IG9uZSB3aWxsIGV4cGFuZAo7OyA6IGhlbGxvCjs7IDogd29ybGQKOzsgOiBaWlpaCg== ------=_Part_1944831_899147019.1522910146358--