[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] [babel] feature request: debug messages
From: |
Andreas Leha |
Subject: |
Re: [O] [babel] feature request: debug messages |
Date: |
Sat, 20 Jul 2013 17:11:01 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Hi Eric,
Eric Schulte <address@hidden> writes:
> Andreas Leha <address@hidden> writes:
>
>> Hi Eric,
>>
>>
>> Eric Schulte <address@hidden> 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 <address@hidden> 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,
>
> #+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.
>
>>
>> 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
>>
>>
>>
Could that awesome setup be extended to work on #+call lines as well?
That would be really helpful.
The get-current-name does not work for #+call lines:
--8<---------------cut here---------------start------------->8---
#+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
#+call: block-1()
#+results:
: 4
Execute the whole buffer =C-c C-v b= to see the prologue in action.
--8<---------------cut here---------------end--------------->8---
Regards,
Andreas
- [O] [babel] feature request: debug messages, Andreas Leha, 2013/07/03
- Re: [O] [babel] feature request: debug messages, Eric Schulte, 2013/07/03
- Re: [O] [babel] feature request: debug messages, Andreas Leha, 2013/07/04
- Re: [O] [babel] feature request: debug messages, Eric Schulte, 2013/07/04
- Re: [O] [babel] feature request: debug messages, Andreas Leha, 2013/07/06
- Re: [O] [babel] feature request: debug messages, Eric Schulte, 2013/07/07
- Re: [O] [babel] feature request: debug messages, Andreas Leha, 2013/07/07
- Re: [O] [babel] feature request: debug messages, Eric Schulte, 2013/07/07
- Re: [O] [babel] feature request: debug messages,
Andreas Leha <=
- Re: [O] [babel] feature request: debug messages, Andreas Leha, 2013/07/20
- Re: [O] [babel] feature request: debug messages, Andreas Leha, 2013/07/20
- Re: [O] [babel] feature request: debug messages, Eric Schulte, 2013/07/24
- Re: [O] [babel] feature request: debug messages, Andreas Leha, 2013/07/25
- Re: [O] [babel] feature request: debug messages, Eric Schulte, 2013/07/25
- Re: [O] [babel] feature request: debug messages, Andreas Leha, 2013/07/25
- Re: [O] [babel] feature request: debug messages, Eric Schulte, 2013/07/25