From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jay Kamat Subject: [PATCH] Support for 'using namespace *' in ob-C.el Date: Sun, 16 Jul 2017 22:31:01 -0700 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a114747e48b7bdf05547cb531" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54601) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dWycw-0002Ga-Ai for emacs-orgmode@gnu.org; Mon, 17 Jul 2017 01:31:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dWycv-00069l-2T for emacs-orgmode@gnu.org; Mon, 17 Jul 2017 01:31:26 -0400 Received: from mail-it0-x22b.google.com ([2607:f8b0:4001:c0b::22b]:36137) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dWycu-00068x-Qh for emacs-orgmode@gnu.org; Mon, 17 Jul 2017 01:31:25 -0400 Received: by mail-it0-x22b.google.com with SMTP id l132so8139012ita.1 for ; Sun, 16 Jul 2017 22:31:23 -0700 (PDT) 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 --001a114747e48b7bdf05547cb531 Content-Type: text/plain; charset="UTF-8" Hi! A problem that I came across recently was the difficulty of writing C++ tutorials for beginners to programming in org mode. In such tutorials, it would be ideal to keep as much boilerplate away from the examples so they don't ask questions (until we get to those topics). The shortest ob-C++ example available is: #+begin_src C++ :includes std::cout<<"Hello World!\n"; #+end_src 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. Attached are patches for adding a :namespaces export option to C++ blocks, and a patch to documentation on worg that documents this change. 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. Since it's clear that namespaces aren't part of plain C, I don't think this is too big of a deal. Please give this a more thorough review than usual, I'm very new to all of this! Thanks again for creating/maintaining org mode, it's the greatest! 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. Thanks, -Jay PS: I'm getting an error when I try to run: #+BEGIN_SRC C :exports output :includes stdio.h printf("hello world\n"); #+END_SRC because 'stdio.h' is not surrounded by quotes. I can do and have it work fine, but how can I include quotes in the header line? They seem to be stripped by org, and backslash ecaping them does not work. --001a114747e48b7bdf05547cb531 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_j57pfjx40 RnJvbSAxZTVmZmYxNzQxZGM4NTMyMTQ5NjJiN2VhOTBiMDgzMmI0YWUzZTY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXkgS2FtYXQgPGpheWdrYW1hdEBnbWFpbC5jb20+CkRhdGU6 IFN1biwgMTYgSnVsIDIwMTcgMjE6NTU6MjQgLTA3MDAKU3ViamVjdDogW1BBVENIXSBvYi1DLmVs OiBBZGQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBuYW1lc3BhY2VzIGluIEMvQysrCgoqIGxpc3Av b2ItQy5lbCAob3JnLWJhYmVsLUMtZXhwYW5kLUMpOiBBZGQgYSA6bmFtZXNwYWNlcyBleHBvcnQg b3B0aW9uCiAgdG8gQysrIG9yZyBiYWJlbCBibG9ja3MuIE5hbWVzcGFjZXMgc3BlY2lmaWVkIGhl cmUgd2lsbCBiZSBhZGRlZCB0bwogIHRoZSBmaWxlIGluIHRoZSBmb3JtYXQgJ3VzaW5nIG5hbWVz cGFjZSAlczsnLiBNdWx0aXBsZSBuYW1lc3BhY2VzCiAgY2FuIGJlIHNwZWNpZmllZCwgc2VwYXJh dGVkIGJ5IHNwYWNlcy4KClRJTllDSEFOR0UKLS0tCiBsaXNwL29iLUMuZWwgfCAxMiArKysrKysr KysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvbGlzcC9vYi1DLmVsIGIvbGlzcC9vYi1DLmVsCmluZGV4IDJiZGRhNjhkNS4u YmExMDgzM2QwIDEwMDY0NAotLS0gYS9saXNwL29iLUMuZWwKKysrIGIvbGlzcC9vYi1DLmVsCkBA IC0yMDIsOSArMjAyLDE1IEBAIGl0cyBoZWFkZXIgYXJndW1lbnRzLiIKIAkoZGVmaW5lcyAob3Jn LWJhYmVsLXJlYWQKIAkJICAob3IgKGNkciAoYXNzcSA6ZGVmaW5lcyBwYXJhbXMpKQogCQkgICAg ICAob3JnLWVudHJ5LWdldCBuaWwgImRlZmluZXMiIHQpKQotCQkgIG5pbCkpKQorCQkgICBuaWwp KQorCShuYW1lc3BhY2VzIChvcmctYmFiZWwtcmVhZAorCQkgIChvciAoY2RyIChhc3NxIDpuYW1l c3BhY2VzIHBhcmFtcykpCisJCSAgICAgIChvcmctZW50cnktZ2V0IG5pbCAibmFtZXNwYWNlcyIg dCkpCisJCSAgIG5pbCkpKQogICAgICh3aGVuIChzdHJpbmdwIGluY2x1ZGVzKQogICAgICAgKHNl dHEgaW5jbHVkZXMgKHNwbGl0LXN0cmluZyBpbmNsdWRlcykpKQorICAgICh3aGVuIChzdHJpbmdw IG5hbWVzcGFjZXMpCisgICAgICAoc2V0cSBuYW1lc3BhY2VzIChzcGxpdC1zdHJpbmcgbmFtZXNw YWNlcykpKQogICAgICh3aGVuIChzdHJpbmdwIGRlZmluZXMpCiAgICAgICAobGV0ICgoeSBuaWwp CiAJICAgIChyZXN1bHQgKGxpc3QgdCkpKQpAQCAtMjI0LDYgKzIzMCwxMCBAQCBpdHMgaGVhZGVy IGFyZ3VtZW50cy4iCiAJCShtYXBjb25jYXQKIAkJIChsYW1iZGEgKGluYykgKGZvcm1hdCAiI2Rl ZmluZSAlcyIgaW5jKSkKIAkJIChpZiAobGlzdHAgZGVmaW5lcykgZGVmaW5lcyAobGlzdCBkZWZp bmVzKSkgIlxuIikKKwkJOzsgbmFtZXNwYWNlcworCQkobWFwY29uY2F0CisJCSAobGFtYmRhIChp bmMpIChmb3JtYXQgInVzaW5nIG5hbWVzcGFjZSAlczsiIGluYykpCisJCSBuYW1lc3BhY2VzICJc biIpCiAJCTs7IHZhcmlhYmxlcwogCQkobWFwY29uY2F0ICdvcmctYmFiZWwtQy12YXItdG8tQyB2 YXJzICJcbiIpCiAJCTs7IHRhYmxlIHNpemVzCi0tIAoyLjExLjAKCg== --001a114747e48b7bdf05547cb531 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-documentation-for-ob-C-namespaces.patch" Content-Disposition: attachment; filename="0001-Add-documentation-for-ob-C-namespaces.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j57pfse51 RnJvbSAzMjY3YWVhYzBiOTBjNzZmNTA5MTEwNGUxMzM4OWNlNjA1MGRkNTgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXkgS2FtYXQgPGpheWdrYW1hdEBnbWFpbC5jb20+CkRhdGU6 IFN1biwgMTYgSnVsIDIwMTcgMjI6MDk6MDYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBBZGQgZG9j dW1lbnRhdGlvbiBmb3Igb2ItQyA6bmFtZXNwYWNlcwoKLS0tCiBvcmctY29udHJpYi9iYWJlbC9s YW5ndWFnZXMvb2ItZG9jLUMub3JnIHwgNyArKysrKystCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvb3JnLWNvbnRyaWIvYmFiZWwv bGFuZ3VhZ2VzL29iLWRvYy1DLm9yZyBiL29yZy1jb250cmliL2JhYmVsL2xhbmd1YWdlcy9vYi1k b2MtQy5vcmcKaW5kZXggYjFhYWM5OWIuLmZhZjJiNzdmIDEwMDY0NAotLS0gYS9vcmctY29udHJp Yi9iYWJlbC9sYW5ndWFnZXMvb2ItZG9jLUMub3JnCisrKyBiL29yZy1jb250cmliL2JhYmVsL2xh bmd1YWdlcy9vYi1kb2MtQy5vcmcKQEAgLTY2LDcgKzY2LDcgQEAgdGhlIHJlc3VsdHMgb2YgZXZh bHVhdGlvbiBpbnNlcnRlZCBpbnRvIHRoZSBidWZmZXIuCiA6ICAgaW50IGI9MTsKIDogICBwcmlu dGYoIiVkXG4iLCBhK2IpOwogOiAjK2VuZF9zcmMKLTogCis6CiA6ICMrcmVzdWx0czoKIDogOiAy CiAKQEAgLTE1NCw2ICsxNTQsMTEgQEAgSXQgZmVhdHVyZXM6CiAgICAgIChDICYgQysrIG9ubHkp IGp1c3QgbGlrZSA9OmluY2x1ZGVzPSBidXQgZm9yID0jZGVmaW5lcz0gbGluZXMgYXQgdGhlCiAg ICAgIHRvcCBvZiB0aGUgY29kZS4KIAorLSA9Om5hbWVzcGFjZXM9IDo6CisgICAgIChDKysgb25s eSkKKyAgICAgYWNjZXB0cyBlaXRoZXIgYSBzaW5nbGUgbmFtZSwgb3IgYSBsaXN0IG9mIG5hbWVz IG9mIG5hbWVzcGFjZXMgdG8gdXNlLgorICAgICBUaGUgZmluYWwgZm9ybWF0IHdpbGwgbG9vayBs aWtlIHRoaXM6ID11c2luZyBuYW1lc3BhY2UgbmFtZTs9CisKIC0gPTpsaWJzPSA6OgogICAgICAo QyAmIEMrKyBvbmx5KSB1c2VmdWwgZm9yIGxpbmtpbmcgd2l0aCBhIGxpYnJhcnksIG1heSBiZSBn aXZlbgogICAgICA9LUwvcGF0aC90by9saWI9IGFuZCA9LWxsaWJyYXJ5PSBpbnN0cnVjdGlvbnMu Ci0tIAoyLjExLjAKCg== --001a114747e48b7bdf05547cb531--