emacs-orgmode
[Top][All Lists]
Advanced

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

Re: Confused about source code blocks evaluation when exporting


From: Alain . Cochard
Subject: Re: Confused about source code blocks evaluation when exporting
Date: Wed, 13 Jul 2022 23:06:44 +0200

Fraga, Eric writes on Wed 13 Jul 2022 10:57:

 > No, you used the word correctly.  My point was that this was your
 > main issue!  Understanding what is the "result" of a src block
 > evaluation is key.

Thank you for the clarification.  I can see that I am still very
confused.

 > > Thank you both, I made progress; but the behavior is still very so
 > > unintuitive to me.  For example, I haven't found a way to have this
 > > block:
 > >
 > > #+begin_src emacs-lisp <arguments to be determined>
 > >   (message "foo")
 > >   (message "bar")
 > > #+END_SRC
 > 
 > If you want output, maybe use "print" instead of "message".  However,
 > you will get quotes around the strings.  The best alternative would be
 > to have a single elisp statement that returns what you want output:
 > 
 > #+begin_src emacs-lisp :results value
 >   (concat "Foo"
 >           "\n"
 >           "Bar")
 > #+end_src

I can now also see that the issue is coupled to my unfamiliarity with
the lisp language, so below I switch to something hopefully simpler
for me.

 > > Finally I still tend to consider that the sentence "Org evaluates
 > > source code blocks in an Org file during export" is confusing.  But
 > > maybe that's just I who interpret this as "code evaluation is the
 > > default behavior upon export".
 > 
 > I do not quite understand the difference.  Evaluation happens (subject
 > to confirmation).  What may happen with that evaluation, however, might
 > not be what you want by default.  What is it you want on export?  If you
 > want the code and the results, add ":exports both" to the begin_src
 > line.  Straightforward?

Nah, sorry.  Maybe I don't understand what "evaluation" is.

I have the file with only the following block in it:

#+begin_src shell
rm -f foo
#+end_src

I load it with 'emacs -Q -l ~/.emacs.git' 

where '~/.emacs.git' only contains

(add-to-list 'load-path "~/Org/Coch-git/org-mode/lisp")
(org-babel-do-load-languages
 'org-babel-load-languages 
 '((shell . t)))

I do 'C-c C-c' within the block; I am asked "Evaluate this shell code
block on your system?", I say 'yes', and I can see that that the file
'foo', which I had just created, is no longer there.  This makes sense
to me.  "evaluation" here seems to me to be a synonym for "execution".

Now I start again, but I do 'C-c C-e l o' instead.  I am _not_ asked
whether I want to evaluate, and the 'foo' file is still there.  But
the pdf file does display

rm -f foo

Does this still qualify as "evaluation"?  I thought not, hence my
conclusion that evaluation was not performed by default upon export,
but you made me doubt it...

Regards.  Hope you appreciated your beer.


Org mode version 9.5.4 (release_9.5.4-623-gc66bdb @
/home/cochard/Org/Coch-git/org-mode/lisp/) 

-- 
EOST (École et Observatoire des Sciences de la Terre) 
ITE (Institut Terre & Environnement) | alain.cochard@unistra.fr
5 rue René Descartes   [bureau 106]  | Phone: +33 (0)3 68 85 50 44 
F-67084 Strasbourg Cedex, France     | [ slot available for rent ]




reply via email to

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