From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Leha Subject: Re: [babel] feature request: debug messages Date: Thu, 04 Jul 2013 08:42:07 +0200 Message-ID: <87txka3jy8.fsf@med.uni-goettingen.de> References: <87y59n2z6b.fsf@med.uni-goettingen.de> <878v1njlsh.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37631) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UudFO-0000ui-KQ for emacs-orgmode@gnu.org; Thu, 04 Jul 2013 02:42:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UudFM-0005Ta-JQ for emacs-orgmode@gnu.org; Thu, 04 Jul 2013 02:42:30 -0400 Received: from plane.gmane.org ([80.91.229.3]:51766) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UudFM-0005TQ-9S for emacs-orgmode@gnu.org; Thu, 04 Jul 2013 02:42:28 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1UudFK-000291-Lx for emacs-orgmode@gnu.org; Thu, 04 Jul 2013 08:42:26 +0200 Received: from genepi110.genepi.med.uni-goettingen.de ([134.76.140.110]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 04 Jul 2013 08:42:26 +0200 Received: from andreas.leha by genepi110.genepi.med.uni-goettingen.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 04 Jul 2013 08:42:26 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi Eric, Eric Schulte 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 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? ;-) 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 [] - 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