From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martyn Jago Subject: Re: [babel][patch] C++ inconsistencies Date: Fri, 18 Feb 2011 16:36:13 +0000 Message-ID: <87vd0hxptu.fsf@btinternet.com> References: <87d3mpzk0u.fsf@btinternet.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from [140.186.70.92] (port=54403 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PqTJt-00078P-3U for emacs-orgmode@gnu.org; Fri, 18 Feb 2011 11:36:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PqTJr-0001vT-HM for emacs-orgmode@gnu.org; Fri, 18 Feb 2011 11:36:36 -0500 Received: from lo.gmane.org ([80.91.229.12]:53081) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PqTJr-0001vK-5c for emacs-orgmode@gnu.org; Fri, 18 Feb 2011 11:36:35 -0500 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1PqTJo-0002hJ-QC for emacs-orgmode@gnu.org; Fri, 18 Feb 2011 17:36:32 +0100 Received: from 88-96-171-142.dsl.zen.co.uk ([88.96.171.142]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 18 Feb 2011 17:36:32 +0100 Received: from martyn.jago by 88-96-171-142.dsl.zen.co.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 18 Feb 2011 17:36:32 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Martyn Jago writes: > Hi > > I've noticed a couple of minor inconsistencies with C++ export... > > - According to the Org manual (section 14.7 Languages) the identifier > for C++ is C++ (upper-case), but in practice this fails and the > identifier c++ (lower-case) must be used. In general, identifiers > appear to be lower-case words or upper-case single characters (such > as C and R) so perhaps this is a bug? > > - Within org-babel cpp is used to identify C++, however using cpp as an > identifier actually exports as if it were a C block. > > If it is desired the following patch changes the C++ identifier to C++, > and maps cpp identifier also to C++, although perhaps it is better to > maintain c++ also for backward compatibility? > > Regards > > Martyn > > > diff --git a/lisp/ob-C.el b/lisp/ob-C.el > index da0e768..86ec783 100644 > --- a/lisp/ob-C.el > +++ b/lisp/ob-C.el > @@ -56,10 +56,10 @@ is currently being evaluated.") > > (defun org-babel-execute:cpp (body params) > "Execute BODY according to PARAMS. This function calls > -`org-babel-execute:C'." > - (org-babel-execute:C body params)) > +`org-babel-execute:C++'." > + (org-babel-execute:C++ body params)) > > -(defun org-babel-execute:c++ (body params) > +(defun org-babel-execute:C++ (body params) > "Execute a block of C++ code with org-babel. This function is > called by `org-babel-execute-src-block'." > (let ((org-babel-c-variant 'cpp)) (org-babel-C-execute body params))) > > > --- > > Org-mode version 7.4 > GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.24.0) of > 2011-02-18 > > > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode Hi After further inspection and testing the following patch is more complete (apologies for the noise). In addition I have a very simple Yaml template if it is of any interest to anybody. I have a strong use case for tangling Yaml for 'literate configuration' purposes since I come across some particularly hairy yaml configuration files for the unit-test libraries Unity, CMock and Ceedling. Regards Martyn diff --git a/lisp/ob-C.el b/lisp/ob-C.el index da0e768..5aa750c 100644 --- a/lisp/ob-C.el +++ b/lisp/ob-C.el @@ -38,7 +38,7 @@ (declare-function org-entry-get "org" (pom property &optional inherit literal-nil)) -(add-to-list 'org-babel-tangle-lang-exts '("c++" . "cpp")) +(add-to-list 'org-babel-tangle-lang-exts '("C++" . "cpp")) (defvar org-babel-default-header-args:C '()) @@ -46,8 +46,8 @@ "Command used to compile a C source code file into an executable.") -(defvar org-babel-c++-compiler "g++" - "Command used to compile a c++ source code file into an +(defvar org-babel-C++-compiler "g++" + "Command used to compile a C++ source code file into an executable.") (defvar org-babel-c-variant nil @@ -56,15 +56,15 @@ is currently being evaluated.") (defun org-babel-execute:cpp (body params) "Execute BODY according to PARAMS. This function calls -`org-babel-execute:C'." - (org-babel-execute:C body params)) +`org-babel-execute:C++'." + (org-babel-execute:C++ body params)) -(defun org-babel-execute:c++ (body params) +(defun org-babel-execute:C++ (body params) "Execute a block of C++ code with org-babel. This function is called by `org-babel-execute-src-block'." (let ((org-babel-c-variant 'cpp)) (org-babel-C-execute body params))) -(defun org-babel-expand-body:c++ (body params) +(defun org-babel-expand-body:C++ (body params) "Expand a block of C++ code with org-babel according to it's header arguments (calls `org-babel-C-expand')." (let ((org-babel-c-variant 'cpp)) (org-babel-C-expand body params))) @@ -81,7 +81,7 @@ header arguments (calls `org-babel-C-expand')." (defun org-babel-C-execute (body params) "This function should only be called by `org-babel-execute:C' -or `org-babel-execute:c++'." +or `org-babel-execute:C++'." (let* ((tmp-src-file (org-babel-temp-file "C-src-" (cond @@ -98,7 +98,7 @@ or `org-babel-execute:c++'." (format "%s -o %s %s %s" (cond ((equal org-babel-c-variant 'c) org-babel-C-compiler) - ((equal org-babel-c-variant 'cpp) org-babel-c++-compiler)) + ((equal org-babel-c-variant 'cpp) org-babel-C++-compiler)) (org-babel-process-file-name tmp-bin-file) (mapconcat 'identity (if (listp flags) flags (list flags)) " ") --- Org-mode version 7.4 GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.24.0) of 2011-02-18