From: Martyn Jago <martyn.jago@btinternet.com>
To: emacs-orgmode@gnu.org
Subject: Re: [babel][patch] C++ inconsistencies
Date: Fri, 18 Feb 2011 16:36:13 +0000 [thread overview]
Message-ID: <87vd0hxptu.fsf@btinternet.com> (raw)
In-Reply-To: 87d3mpzk0u.fsf@btinternet.com
Martyn Jago <martyn.jago@btinternet.com> 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
next prev parent reply other threads:[~2011-02-18 16:36 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-18 10:58 [babel][patch] C++ inconsistencies Martyn Jago
2011-02-18 16:36 ` Martyn Jago [this message]
2011-02-20 8:25 ` Eric Schulte
2011-02-21 13:37 ` Martyn Jago
2011-02-21 17:10 ` Eric Schulte
2011-02-22 22:07 ` Martyn Jago
2011-02-23 4:21 ` Eric Schulte
2011-02-22 11:20 ` Bastien
2011-02-22 22:14 ` Martyn Jago
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87vd0hxptu.fsf@btinternet.com \
--to=martyn.jago@btinternet.com \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).