emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] Re: [babel][patch] C++ inconsistencies


From: Martyn Jago
Subject: [Orgmode] Re: [babel][patch] C++ inconsistencies
Date: Fri, 18 Feb 2011 16:36:13 +0000
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Martyn Jago <address@hidden> 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.
> address@hidden
> 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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]