emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Eric Schulte <schulte.eric@gmail.com>
To: Andreas Leha <andreas.leha@med.uni-goettingen.de>
Cc: emacs-orgmode@gnu.org
Subject: Re: [babel] feature request: debug messages
Date: Thu, 04 Jul 2013 08:48:49 -0600	[thread overview]
Message-ID: <87zju2idny.fsf@gmail.com> (raw)
In-Reply-To: <87txka3jy8.fsf@med.uni-goettingen.de> (Andreas Leha's message of "Thu, 04 Jul 2013 08:42:07 +0200")

[-- Attachment #1: Type: text/plain, Size: 3175 bytes --]

Andreas Leha <andreas.leha@med.uni-goettingen.de> writes:

> Hi Eric,
>
>
> Eric Schulte <schulte.eric@gmail.com> writes:
>
>> Hi Andreas,
>>
>> This should be easy to turn on or off using the newly introduced
>> :prologue and :epilogue header arguments.  See the manual and the
>> following example.
>>
>> #+Title: debug messages
>> #+Property: session *R*
>> #+Property: prologue (format "print(\"entering %s\")" (get-current-name))
>>
>> An elisp block to simplify the =:prologue= definition.
>> #+begin_src emacs-lisp
>>   (defun get-current-name ()
>>     (save-excursion
>>       (goto-char org-babel-current-src-block-location)
>>       (while (and (forward-line -1)
>>                   (looking-at org-babel-multi-line-header-regexp)))
>>       (when (looking-at org-babel-src-name-w-name-regexp)
>>         (org-no-properties (match-string 3)))))
>> #+end_src
>>
>> Two blocks with simple assignments.
>>
>> #+name: block-1
>> #+begin_src R
>>   x <- 2 + 2
>> #+end_src
>>
>> #+name: block-2
>> #+begin_src R
>>   y <- x + x
>> #+end_src
>>
>> Execute the whole buffer =C-c C-v b= to see the prologue in action.
>>
>> Andreas Leha <andreas.leha@med.uni-goettingen.de> writes:
>>
>>> Hi all,
>>>
>>> I would love to see messages like 'entering block foo...' and
>>> '...leaving block foo' printed to my R console.  This would be very
>>> handy when I evaluate a subtree (C-c C-v s) with a lot of #+call lines
>>> and some lengthy ones.
>>>
>>> I know that
>>> (1) I could implement that myself at in the source blocks.  But I would
>>>     love if orgmode did that for me
>>> (2) Such messages are already printed to the emacs *Messages* buffer.
>>>     But that buffer might not be visible and I can not switch to it,
>>>     without interrupting the evaluation.  Anyway it would be much nicer
>>>     to see that output together with the other output, that my code
>>>     generates.
>>>
>>>
>>> In essence it would be very helpful, if there was a variable
>>> org-babel-print-debug-messages (or org-babel-debug-level...) which if
>>> non-nil would cause that messages to be printed.  Or is there somewhere
>>> already?
>>>
>>> Regards,
>>> Andreas
>>>
>>>
>>>
>>>
>
>
> thanks for the quick answer!  The :prologue and :epilogue header
> arguments have indeed slipped my attention and they look really
> interesting!  I see, that they are documented, but somehow, they seem to
> not get their headline and TOC entry?
>
> I have three problems with your example, though:
> 1) It does not run
> 2) It does not work
> 3) It won't be usable for 'my' epilogue, correct?
> ;-)
>

Ah! My fault.  I had to add prologue and epilogue support to ob-R.el
when working through the example I sent, but then I forgot to commit
that support to Org-mode.  I've just pushed up that commit, and
re-worked my example file to avoid the issue of prologue being applied
to the emacs-lisp code block (using the very nice and also new
language-specific PROPERTY header arguments).

Finally, I don't use epilogues in the example because (as the last thing
evaluated) they would override the code block results.

Hopefully the following:
1. will run
2. will work
3. will be usable

Cheers,


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: r-debug.org --]
[-- Type: text/x-org, Size: 807 bytes --]

#+Title: debug messages
#+Property: header-args:R :session *R* :prologue (format "print(\"entering %s\")" (get-current-name))

An elisp block to simplify the =:prologue= definition.
#+begin_src emacs-lisp :results silent
  (defun get-current-name ()
    (save-excursion
      (goto-char org-babel-current-src-block-location)
      (while (and (forward-line -1)
                  (looking-at org-babel-multi-line-header-regexp)))
      (when (looking-at org-babel-src-name-w-name-regexp)
        (org-no-properties (match-string 3)))))
#+end_src

Two blocks with simple assignments.

#+name: block-1
#+begin_src R
  x <- 2 + 2
#+end_src

#+RESULTS: block-1
: 4

#+name: block-2
#+begin_src R
  y <- x + x
#+end_src

#+RESULTS: block-2
: 8

Execute the whole buffer =C-c C-v b= to see the prologue in action.

[-- Attachment #3: Type: text/plain, Size: 2812 bytes --]


>
> 1)
> It does not run, because org tries to do the prologue also on the
> emacs-lisp block defining the function of the prologue.  So, I get
> "format: Symbol's function definition is void: get-current-name"
> I changed the #+property line to
> #+Property: header-args:R :prologue (format "print(\"entering %s\")" (get-current-name))
> which solved that problem.
>
> 2)
> But still it does not work: This is what I get in my *R* buffer:
> --8<---------------cut here---------------start------------->8---
>
> R version 3.0.1 (2013-05-16) -- "Good Sport"
> Copyright (C) 2013 The R Foundation for Statistical Computing
> Platform: x86_64-pc-linux-gnu (64-bit)
>
> R ist freie Software und kommt OHNE JEGLICHE GARANTIE.
> Sie sind eingeladen, es unter bestimmten Bedingungen weiter zu verbreiten.
> Tippen Sie 'license()' or 'licence()' für Details dazu.
>
> R ist ein Gemeinschaftsprojekt mit vielen Beitragenden.
> Tippen Sie 'contributors()' für mehr Information und 'citation()',
> um zu erfahren, wie R oder R packages in Publikationen zitiert werden können.
>
> Tippen Sie 'demo()' für einige Demos, 'help()' für on-line Hilfe, oder
> 'help.start()' für eine HTML Browserschnittstelle zur Hilfe.
> Tippen Sie 'q()', um R zu verlassen.
>
> [1] "C"
> filehash: Simple key-value database (2.2-1 2012-03-12)
> tikzDevice: R Graphics Output in LaTeX Format (v0.6.2-92-0ad2792)
>   LaTeX found in the PATH using the command: pdflatex
>   XeLaTeX found in the PATH using the command: xelatex
>   LuaLaTeX found in the PATH using the command: lualatex
>> options(STERM='iESS', str.dendrogram.last="'", editor='emacsclient', show.error.locations=TRUE)
>>
>> > 
>> > 
> --8<---------------cut here---------------end--------------->8---
>
> I tried it with
> - Org-mode version 8.0.4 (release_8.0.4-294-g62f20c)
> - ess-version : 13.05-1 [<unknown>]
> - emacs -Q -l ~/.emacs.minimal.ess.org, whith that content:
> --8<---------------cut here---------------start------------->8---
> (add-to-list 'load-path
>                   "~/local/emacs/org-mode-install/lisp")
> (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
>
> (add-to-list 'load-path "~/local/emacs/ess/lisp")
> (require 'ess-site)
>
> (setq org-babel-load-languages '((emacs-lisp . t)
> 				 (R . t)
> 				 (sh . t)))
> --8<---------------cut here---------------end--------------->8---
>
> What am I missing?  (BTW: If I put a print("sth") into the R blocks
> myself, I see that printed)
>
>
> 3)
> Even if it did run, I guess putting sth similar for 'leaving code block
> foo' into the epilogue would spoil the return value of my src blocks,
> correct?
> Is there some work-around?
>
>
>
> Regards,
> Andreas
>
>
>

-- 
Eric Schulte
http://cs.unm.edu/~eschulte

  reply	other threads:[~2013-07-04 14:50 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-03 19:58 [babel] feature request: debug messages Andreas Leha
2013-07-03 22:55 ` Eric Schulte
2013-07-04  6:42   ` Andreas Leha
2013-07-04 14:48     ` Eric Schulte [this message]
2013-07-06 16:00       ` Andreas Leha
2013-07-07 17:08         ` Eric Schulte
2013-07-07 19:24           ` Andreas Leha
2013-07-08  2:03             ` Eric Schulte
2013-07-20 15:11       ` Andreas Leha
2013-07-20 15:24         ` Andreas Leha
2013-07-20 15:33           ` Andreas Leha
2013-07-23 22:12             ` Eric Schulte
2013-07-25  8:14               ` Andreas Leha
2013-07-25 13:37                 ` Eric Schulte
2013-07-25 15:18                   ` Andreas Leha
2013-07-25 16:07                     ` Eric Schulte

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=87zju2idny.fsf@gmail.com \
    --to=schulte.eric@gmail.com \
    --cc=andreas.leha@med.uni-goettingen.de \
    --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).