* #+PROPERTY: header-args:C++ will not work
@ 2019-04-15 12:53 Alexandre Duret-Lutz
2019-04-15 14:08 ` Alexandre Duret-Lutz
0 siblings, 1 reply; 3+ messages in thread
From: Alexandre Duret-Lutz @ 2019-04-15 12:53 UTC (permalink / raw)
To: emacs-orgmode
Hi,
I'm currently simplifying some documentation that evaluates a lot of
sh/python/C++ blocks by defining the :results and :exports flags
commonly used in header-args properties like so:
#+PROPERTY: header-args:sh :results verbatim :exports both
#+PROPERTY: header-args:python :results output :exports both
#+PROPERTY: header-args:C++ :results verbatim :exports both
Unfortunately, this does not work for C++ blocks.
Looking at the contents of org-file-properties in a file with the
above lines shows
org-file-properties is a variable defined in ‘org.el’.
Its value is
(("header-args:C+" . ":results verbatim :exports both")
("header-args:python" . ":results output :exports both")
("header-args:sh" . ":results verbatim :exports both"))
Note how C++ is truncated to C+.
The documentation states:
1. Language-specific header arguments are also read from properties
‘header-args:<LANG>’ where <LANG> is the language identifier.
(https://orgmode.org/manual/Using-Header-Arguments.html#Code-block-specific-header-arguments)
2. If you want to add to the value of an existing property, append a
‘+’ to the property name.
(https://orgmode.org/manual/Property-Syntax.html#Property-Syntax)
Unfortunately it seems statement 2 breaks statement 1 when LANG ends
with '+', and header-args:C++ is understood as appending
header-args:C+.
I currently work around this problem by using header-args:C+++
instead, but this only works assuming that property header-args:C++
has not been set by other means.
I there other way to assign (not append) some value to the header-args
property from the some org file?
--
Alexandre Duret-Lutz
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: #+PROPERTY: header-args:C++ will not work
2019-04-15 12:53 #+PROPERTY: header-args:C++ will not work Alexandre Duret-Lutz
@ 2019-04-15 14:08 ` Alexandre Duret-Lutz
2019-04-23 8:28 ` Nicolas Goaziou
0 siblings, 1 reply; 3+ messages in thread
From: Alexandre Duret-Lutz @ 2019-04-15 14:08 UTC (permalink / raw)
To: emacs-orgmode
On Mon, Apr 15, 2019 at 2:53 PM Alexandre Duret-Lutz <adl@lrde.epita.fr> wrote:
> Unfortunately, this does not work for C++ blocks.
I just noticed that I could change all my C++ blocks into cpp blocks and
then use header-args:cpp without any problem. The org-mode manual
states that the identifier for the C++ language is "C++"
(https://orgmode.org/manual/Languages.html) but the same page links to
some babel documentation
(https://orgmode.org/worg/org-contrib/babel/languages.html)
where it is listed as "cpp".
ORG-NEWS has one example using C++, but the test suite only has cpp examples.
There is some hint on
https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-C.html#orgea7b004
that using cpp might not fully work (?). And clearly while lisp/org-src.el has
many functions implemented for both cpp and C++, its not always complete.
For instance it defines org-babel-header-args:C++
but there is no org-babel-header-args:cpp, meaning incomplete completion for
cpp blocks header-args.
From all that it feels like the documentation wants us to use C++, and that
the code is trying to keep cpp for backward compatibility (?), but that each
option has different drawbacks.
I'll stick to C++ and header-args:C+++...
--
Alexandre Duret-Lutz
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: #+PROPERTY: header-args:C++ will not work
2019-04-15 14:08 ` Alexandre Duret-Lutz
@ 2019-04-23 8:28 ` Nicolas Goaziou
0 siblings, 0 replies; 3+ messages in thread
From: Nicolas Goaziou @ 2019-04-23 8:28 UTC (permalink / raw)
To: Alexandre Duret-Lutz; +Cc: emacs-orgmode
Hello,
Alexandre Duret-Lutz <adl@lrde.epita.fr> writes:
> On Mon, Apr 15, 2019 at 2:53 PM Alexandre Duret-Lutz <adl@lrde.epita.fr> wrote:
>> Unfortunately, this does not work for C++ blocks.
>
> I just noticed that I could change all my C++ blocks into cpp blocks and
> then use header-args:cpp without any problem. The org-mode manual
> states that the identifier for the C++ language is "C++"
> (https://orgmode.org/manual/Languages.html) but the same page links to
> some babel documentation
> (https://orgmode.org/worg/org-contrib/babel/languages.html)
> where it is listed as "cpp".
>
> ORG-NEWS has one example using C++, but the test suite only has cpp examples.
>
> There is some hint on
> https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-C.html#orgea7b004
> that using cpp might not fully work (?). And clearly while lisp/org-src.el has
> many functions implemented for both cpp and C++, its not always complete.
> For instance it defines org-babel-header-args:C++
> but there is no org-babel-header-args:cpp, meaning incomplete completion for
> cpp blocks header-args.
>
> From all that it feels like the documentation wants us to use C++, and that
> the code is trying to keep cpp for backward compatibility (?), but that each
> option has different drawbacks.
>
> I'll stick to C++ and header-args:C+++...
I think we should use enforce using cpp everywhere instead of C++, since
it is more consistent. Patches welcome, of course :)
Regards,
--
Nicolas Goaziou
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-04-23 8:28 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-15 12:53 #+PROPERTY: header-args:C++ will not work Alexandre Duret-Lutz
2019-04-15 14:08 ` Alexandre Duret-Lutz
2019-04-23 8:28 ` Nicolas Goaziou
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).