From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jay Kamat Subject: Re: [PATCH] Support for 'using namespace *' in ob-C.el Date: Mon, 31 Jul 2017 01:03:53 -0700 Message-ID: References: <874lu3mcw7.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="f403045d9ada0799c20555987aac" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40578) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dc5gY-0004Pz-Nb for emacs-orgmode@gnu.org; Mon, 31 Jul 2017 04:04:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dc5gX-0003fS-5I for emacs-orgmode@gnu.org; Mon, 31 Jul 2017 04:04:18 -0400 Received: from mail-it0-x22f.google.com ([2607:f8b0:4001:c0b::22f]:38712) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dc5gW-0003eD-TX for emacs-orgmode@gnu.org; Mon, 31 Jul 2017 04:04:17 -0400 Received: by mail-it0-x22f.google.com with SMTP id h199so121286040ith.1 for ; Mon, 31 Jul 2017 01:04:15 -0700 (PDT) In-Reply-To: <874lu3mcw7.fsf@nicolasgoaziou.fr> 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: Nicolas Goaziou Cc: emacs-orgmode@gnu.org --f403045d9ada0799c20555987aac Content-Type: text/plain; charset="UTF-8" Hello! Sorry for the late reply, I was pretty busy last week. An updated patch is attached! > I suggest to add the following to "ob-C.el" so that `org-lint' can issue > a warning whenever :namespaces is used in a C block. Done. I needed to tweak the code a bit though to get it to work and to prevent flagging valid C headers as errors with org lint. > Using `org-entry-get' is no longer supported. You can replace the `or' > with > > (cdr (assq :namespaces params)) Done, I also replaced the other uses of 'org-entry-get' around the one I modified > Nitpick: I would put the "\n" on another line. I agree, and done :) > Could you also provide an ORG-NEWS entry for the feature? Done. I'm not sure if it went in the right place and if it's formatted correctly though, so can you give that a look over to make sure it looks good? Thanks again for taking the time to review this for me :D Let me know if you spot anything fishy or wrong. Also, RE: Copyright, this is the form I need to send, correct? http://orgmode.org/request-assign-future.txt -Jay On Sun, Jul 23, 2017 at 7:44 AM, Nicolas Goaziou wrote: > Hello, > > Jay Kamat writes: > >> However, it would be nice to add a "using namespace std" to this >> source code block, so it can become: >> >> #+BEGIN_SRC C++ :includes :namespaces std >> cout << "Hello world\n"; >> #+END_SRC >> >> >> Which makes it cleaner and easier to read, especially for very short >> code snippets, using a bunch of std tools. > > Good idea. > >> One concern that I have is that "using namespace *;" is only available >> in C++ and not C, but there isn't an easy way I could find to limit >> it's usage to only C++ blocks without a bunch of restructuring, so >> this will fail if you attempt to set a namespace on a plain C block. > > I suggest to add the following to "ob-C.el" so that `org-lint' can issue > a warning whenever :namespaces is used in a C block. > > (defconst org-babel-header-args:C '((includes . :any)) > "C-specific header arguments.") > > (defconst org-babel-header-args:C++ > `(,(append '((namespaces . :any)) > org-babel-header-args:C)) > "C++-specific header arguments.") > >> Also, this contribution puts me very close to the 15 line limit before >> I need to get FSF papers signed. I intend to sign papers soon, but I'm >> a little busy right now, and I'll get around to submitting the request >> later on. > > Thank you. FYI, in many cases, the whole process is very quick and not > time-consuming. > >> Subject: [PATCH] ob-C.el: Add support for specifying namespaces in C/C++ >> >> * lisp/ob-C.el (org-babel-C-expand-C): Add a :namespaces export option >> to C++ org babel blocks. Namespaces specified here will be added to >> the file in the format 'using namespace %s;'. Multiple namespaces >> can be specified, separated by spaces. > > Some comments follow. > >> + (namespaces (org-babel-read >> + (or (cdr (assq :namespaces params)) >> + (org-entry-get nil "namespaces" t)) >> + nil))) > > Using `org-entry-get' is no longer supported. You can replace the `or' > with > > (cdr (assq :namespaces params)) > >> + ;; namespaces >> + (mapconcat >> + (lambda (inc) (format "using namespace %s;" inc)) >> + namespaces "\n") > > Nitpick: I would put the "\n" on another line. > > Could you also provide an ORG-NEWS entry for the feature? > > Regards, > > -- > Nicolas Goaziou --f403045d9ada0799c20555987aac Content-Type: text/x-patch; charset="US-ASCII"; name="0001-ob-C.el-Add-support-for-specifying-namespaces-in-C-C.patch" Content-Disposition: attachment; filename="0001-ob-C.el-Add-support-for-specifying-namespaces-in-C-C.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j5rv6zuw0 RnJvbSBiZjA4ZmI0Zjg5MDI0NDI4YTk1NjE1YmRmZWRlODZlM2M4ODNkODdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXkgS2FtYXQgPGpheWdrYW1hdEBnbWFpbC5jb20+CkRhdGU6 IFN1biwgMTYgSnVsIDIwMTcgMjE6NTU6MjQgLTA3MDAKU3ViamVjdDogW1BBVENIXSBvYi1DLmVs OiBBZGQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBuYW1lc3BhY2VzIGluIEMvQysrCgoqIGxpc3Av b2ItQy5lbCAob3JnLWJhYmVsLUMtZXhwYW5kLUMpOiBBZGQgYSA6bmFtZXNwYWNlcyBleHBvcnQg b3B0aW9uCiAgdG8gQysrIG9yZyBiYWJlbCBibG9ja3MuIE5hbWVzcGFjZXMgc3BlY2lmaWVkIGhl cmUgd2lsbCBiZSBhZGRlZCB0bwogIHRoZSBmaWxlIGluIHRoZSBmb3JtYXQgJ3VzaW5nIG5hbWVz cGFjZSAlczsnLiBNdWx0aXBsZSBuYW1lc3BhY2VzCiAgY2FuIGJlIHNwZWNpZmllZCwgc2VwYXJh dGVkIGJ5IHNwYWNlcy4KClRJTllDSEFOR0UKLS0tCiBldGMvT1JHLU5FV1MgfCAxNCArKysrKysr KysrKysrKwogbGlzcC9vYi1DLmVsIHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2V0Yy9PUkctTkVXUyBiL2V0Yy9PUkctTkVXUwppbmRleCA5MzZlY2MzNmIy Li4xZDA4ZjliYTlkIDEwMDY0NAotLS0gYS9ldGMvT1JHLU5FV1MKKysrIGIvZXRjL09SRy1ORVdT CkBAIC0yMDAsNiArMjAwLDIwIEBAIFRvIHVzZSA9dmVydGljYT0gaW4gYW4gc3FsID1TUkNfQkxL PSBzZXQgdGhlID06ZW5naW5lPSBsaWtlIHRoaXM6CiAgIFNFTEVDVCAqIEZST00gbm9kZXM7CiAg ICwjK0VORF9TUkMKICMrRU5EX0VYQU1QTEUKKyoqKiogQysrOiBOZXcgaGVhZGVyIH46bmFtZXNw YWNlc34KKworVGhlIG5ldyB+Om5hbWVzcGFjZXN+IGV4cG9ydCBvcHRpb24gY2FuIGJlIHVzZWQg dG8gc3BlY2lmeSBuYW1lc3BhY2VzCit0byBiZSB1c2VkIHdpdGhpbiBhIEMrKyBvcmcgc291cmNl IGJsb2NrLiAgSXRzIHVzYWdlIGlzIHNpbWlsYXIgdG8KK346aW5jbHVkZXN+LCBpbiB0aGF0IGl0 IGNhbiBhY2NlcHQgbXVsdGlwbGUsIHNwYWNlLXNlcGFyYXRlZAorbmFtZXNwYWNlcyB0byB1c2Uu ICBUaGlzIGhlYWRlciBpcyBlcXVpdmFsZW50IHRvIGFkZGluZyB+dXNpbmcKK25hbWVzcGFjZSA8 bmFtZT47fiBpbiB0aGUgc291cmNlIGJsb2NrLiBIZXJlIGlzIGEgIkhlbGxvIFdvcmxkIiBpbiBD KysKK3VzaW5nIH46bmFtZXNwYWNlc346CisKKyMrYmVnaW5fZXhhbXBsZQorICAsIytCRUdJTl9T UkMgQysrIDpyZXN1bHRzIG91dHB1dCA6bmFtZXNwYWNlcyBzdGQgOmluY2x1ZGVzIDxpb3N0cmVh bT4KKyAgICBjb3V0IDw8ICJIZWxsbyBXb3JsZCIgPDwgZW5kbDsKKyAgLCMrRU5EX1NSQworIytl bmRfZXhhbXBsZQogCiAqKiogTmV3IH5mdW5jdGlvbn4gc2NvcGUgYXJndW1lbnQgZm9yIHRoZSBD bG9jayBUYWJsZQogQWRkZWQgYSBudWxsYXJ5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGxpc3Qg b2YgZmlsZXMgYXMgYSBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvbGlzcC9vYi1DLmVsIGIvbGlzcC9v Yi1DLmVsCmluZGV4IDJiZGRhNjhkNTguLmNjZDE1MGVhYzkgMTAwNjQ0Ci0tLSBhL2xpc3Avb2It Qy5lbAorKysgYi9saXNwL29iLUMuZWwKQEAgLTQ2LDYgKzQ2LDIwIEBACiAKIChkZWZ2YXIgb3Jn LWJhYmVsLWRlZmF1bHQtaGVhZGVyLWFyZ3M6QyAnKCkpCiAKKzs7IG9yZyBsaW50IGhlYWRlciBh cmd1bWVudHMgZm9yIEMgYW5kIEMrKworKGRlZmNvbnN0IG9yZy1iYWJlbC1oZWFkZXItYXJnczpD ICcoKGluY2x1ZGVzIC4gOmFueSkKKwkJCQkgICAgIChkZWZpbmVzIC4gOmFueSkKKwkJCQkgICAg IChtYWluICAgIC4gOmFueSkKKwkJCQkgICAgIChmbGFncyAgIC4gOmFueSkKKwkJCQkgICAgIChj bWRsaW5lIC4gOmFueSkKKwkJCQkgICAgIChsaWJzICAgIC4gOmFueSkpCisgICJDL0MrKy1zcGVj aWZpYyBoZWFkZXIgYXJndW1lbnRzLiIpCisKKyhkZWZjb25zdCBvcmctYmFiZWwtaGVhZGVyLWFy Z3M6QysrCisgIChhcHBlbmQgJygobmFtZXNwYWNlcyAuIDphbnkpKQorICAgIG9yZy1iYWJlbC1o ZWFkZXItYXJnczpDKQorICAiQysrLXNwZWNpZmljIGhlYWRlciBhcmd1bWVudHMuIikKKwogKGRl ZmN1c3RvbSBvcmctYmFiZWwtQy1jb21waWxlciAiZ2NjIgogICAiQ29tbWFuZCB1c2VkIHRvIGNv bXBpbGUgYSBDIHNvdXJjZSBjb2RlIGZpbGUgaW50byBhbiBleGVjdXRhYmxlLgogTWF5IGJlIGVp dGhlciBhIGNvbW1hbmQgaW4gdGhlIHBhdGgsIGxpa2UgZ2NjCkBAIC0xOTYsMTUgKzIxMCwxOCBA QCBpdHMgaGVhZGVyIGFyZ3VtZW50cy4iCiAJKGNvbG5hbWVzIChjZHIgKGFzc3EgOmNvbG5hbWUt bmFtZXMgcGFyYW1zKSkpCiAJKG1haW4tcCAobm90IChzdHJpbmc9IChjZHIgKGFzc3EgOm1haW4g cGFyYW1zKSkgIm5vIikpKQogCShpbmNsdWRlcyAob3JnLWJhYmVsLXJlYWQKLQkJICAgKG9yIChj ZHIgKGFzc3EgOmluY2x1ZGVzIHBhcmFtcykpCi0JCSAgICAgICAob3JnLWVudHJ5LWdldCBuaWwg ImluY2x1ZGVzIiB0KSkKLQkJICAgbmlsKSkKKwkJICAgIChjZHIgKGFzc3EgOmluY2x1ZGVzIHBh cmFtcykpCisJCSAgICBuaWwpKQogCShkZWZpbmVzIChvcmctYmFiZWwtcmVhZAotCQkgIChvciAo Y2RyIChhc3NxIDpkZWZpbmVzIHBhcmFtcykpCi0JCSAgICAgIChvcmctZW50cnktZ2V0IG5pbCAi ZGVmaW5lcyIgdCkpCi0JCSAgbmlsKSkpCisJCSAgIChjZHIgKGFzc3EgOmRlZmluZXMgcGFyYW1z KSkKKwkJICAgbmlsKSkKKwkobmFtZXNwYWNlcyAob3JnLWJhYmVsLXJlYWQKKwkJICAgICAgKGNk ciAoYXNzcSA6bmFtZXNwYWNlcyBwYXJhbXMpKQorCQkgICAgICBuaWwpKSkKICAgICAod2hlbiAo c3RyaW5ncCBpbmNsdWRlcykKICAgICAgIChzZXRxIGluY2x1ZGVzIChzcGxpdC1zdHJpbmcgaW5j bHVkZXMpKSkKKyAgICAod2hlbiAoc3RyaW5ncCBuYW1lc3BhY2VzKQorICAgICAgKHNldHEgbmFt ZXNwYWNlcyAoc3BsaXQtc3RyaW5nIG5hbWVzcGFjZXMpKSkKICAgICAod2hlbiAoc3RyaW5ncCBk ZWZpbmVzKQogICAgICAgKGxldCAoKHkgbmlsKQogCSAgICAocmVzdWx0IChsaXN0IHQpKSkKQEAg LTIyNCw2ICsyNDEsMTEgQEAgaXRzIGhlYWRlciBhcmd1bWVudHMuIgogCQkobWFwY29uY2F0CiAJ CSAobGFtYmRhIChpbmMpIChmb3JtYXQgIiNkZWZpbmUgJXMiIGluYykpCiAJCSAoaWYgKGxpc3Rw IGRlZmluZXMpIGRlZmluZXMgKGxpc3QgZGVmaW5lcykpICJcbiIpCisJCTs7IG5hbWVzcGFjZXMK KwkJKG1hcGNvbmNhdAorCQkgKGxhbWJkYSAoaW5jKSAoZm9ybWF0ICJ1c2luZyBuYW1lc3BhY2Ug JXM7IiBpbmMpKQorCQkgbmFtZXNwYWNlcworCQkgIlxuIikKIAkJOzsgdmFyaWFibGVzCiAJCSht YXBjb25jYXQgJ29yZy1iYWJlbC1DLXZhci10by1DIHZhcnMgIlxuIikKIAkJOzsgdGFibGUgc2l6 ZXMKLS0gCjIuMTEuMAoK --f403045d9ada0799c20555987aac--