From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rainer M Krug Subject: Re: [babel] feature request - tangle-and-evaluate-tangled-file Date: Thu, 15 Jul 2010 14:37:26 +0200 Message-ID: <4C3F0106.8060904@mail.com> References: <871vbdu77i.fsf@gmail.com> <874og8irrn.fsf@gmail.com> <87mxtwbii5.fsf@gmail.com> <4C3C2064.5020209@googlemail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: Received: from [140.186.70.92] (port=60056 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OZNgy-0006N7-Mn for emacs-orgmode@gnu.org; Thu, 15 Jul 2010 08:37:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OZNgv-0001f3-EJ for emacs-orgmode@gnu.org; Thu, 15 Jul 2010 08:37:32 -0400 Received: from mail-ww0-f49.google.com ([74.125.82.49]:36523) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OZNgv-0001Z8-A8 for emacs-orgmode@gnu.org; Thu, 15 Jul 2010 08:37:29 -0400 Received: by mail-ww0-f49.google.com with SMTP id 22so60177wwb.30 for ; Thu, 15 Jul 2010 05:37:29 -0700 (PDT) In-Reply-To: <4C3C2064.5020209@googlemail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Dr Rainer M Krug Cc: emacs-orgmode -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 13/07/2010 10:14, Dr Rainer M Krug wrote: > On 12/07/2010 19:51, Eric Schulte wrote: >> Rainer M Krug writes: > >>> Hi Eric, >>> >>> On Fri, Jul 9, 2010 at 5:44 PM, Eric Schulte wrote: >>> >>>> Hi Rainer, >>>> >>>> Rainer M Krug writes: >>>> >>>>> On Thu, Jul 8, 2010 at 9:03 PM, Eric Schulte >>>> wrote: >>>> [...] >>>>>> >>>>>> (add-hook 'org-babel-post-tangle-hook >>>>>> (lambda () (ess-load-file (buffer-file-name)))) >>>>>> >>>>> >>>>> Unfortunately, this does not work. I put the code above into my >>>>> emacs.organd nothing happens - not even an error message. I tried to >>>>> use the C-h v to customise the variable, but I don't manage it. >>>> >>>> If the variable isn't registered with C-h v, then it sounds like maybe >>>> you need to update Org-mode, and/or re-run make clean && make. >>>> >>> >>> OK - that is working now. >>> >>> >>>> >>>>> In addition, The filename for es-load-file shoud not be the buffer >>>>> name, but the buffer name with the extension replaced with R. >>>>> >>>> >>>> `buffer-file-name', returns the name of the file that the buffer is >>>> visiting, so wouldn't this already be the case if the filename ends with >>>> .R? >>>> >>> >>> Isn't the buffer from which I am tangling the org buffer, and not the result >>> from the tangling? (see below for further remarks. >>> > >> No this hook is run from /within/ a buffer visiting the file of tangled >> code, so in the example hook function above (buffer-file-name) will >> equal the name of the file of tangled R code. From your later message >> it looks like the issues below have been resolved. > > Thanks a lot for a very useful addition, and I will see abut the > buffer-name and come back if it is still the org-file buffer for me, I finally tried it out, and it is still the same: when I tangle an org file, for the hook as defined above, buffer-file-name is the org file. Cheers, Raienr > > Rainer > > >> Best -- Eric > >>> >>> >>>> >>>> This minimal example with the hook defined as above works for me. After >>>> tangling I can jump to the *R* buffer where both x and y are defined. >>>> >>>> --8<---------------cut here---------------start------------->8--- >>>> ** tangle R and load >>>> :PROPERTIES: >>>> :tangle: to-load.r >>>> :END: >>>> >>>> #+begin_src R :comments yes >>>> x <- 8 >>>> #+end_src >>>> >>>> #+begin_src R >>>> y <- 9 >>>> #+end_src >>>> --8<---------------cut here---------------end--------------->8--- >>>> >>> >>> Not here - >>> >>> Emacs and org-mode version: >>> >>> GNU Emacs 23.2.1 (i686-pc-linux-gnu, GTK+ Version 2.20.1) >>> Org-mode version 6.36trans (release_6.36.603.g227b) >>> >>> 1) if no R process is running, I get the following message: >>> ess-start-process-specific: No ESS processes running; not yet implemented to >>> start (Initial,nil) >>> No problem 0 I can start an R process manually. >>> >>> 2) when an R session is running, I get the following error message from ESS: >>> Errors: Use C-c ` to find error. >>> Symbol's function definition is void: with-temp-filebuffer >>> >>> and from ESS: >>> >>> Error in source("/home/rkrug/tmp/R.org") : >>> /home/rkrug/tmp/R.org:1:1: unexpected '^' >>> 1: ** >>> >>> it seems to submit the org file (the buffer is saved as R.org) to R. >>> >>> So buffer-file-name should actually be replaced with the name from the file >>> name resulting from the tangling, in the easiest case (which would be fine >>> with me) the org buffer name with .org replaced with .R. >>> So I did the following (my firs elisp code!): >>> >>> (add-hook 'org-babel-post-tangle-hook >>> (lambda () (ess-load-file (replace-regexp-in-string ".org" ".R" >>> buffer-file-name)))) >>> >>> and it is working - except that I still get the Symbol's function definition >>> is void: with-temp-filebuffer , but it does not seem to do anything. >>> >>> Thanks a lot, >>> >>> Rainer >>> >>> >>> >>> >>> >>>>> >>>>> I am sorry about all these questions, but emacs-lisp I have never used >>>>> emacs-lisp (I should - and I will!) >>>>> >>>> >>>> No problem at all, but be careful about learning too much lisp as you >>>> may begin to grow dissatisfied with R :) >>>> >>>> Best -- Eric >>>> >>>>> >>>>> Cheers and thanks for your patience, >>>>> >>>>> Rainer >>>>> >>>>> >>>>>> Best -- Eric >>>>>> >>>>>> Rainer M Krug writes: >>>>>> >>>>>>> Hi >>>>>>> >>>>>>> I am using org-babel for literate programming in R and I am using the >>>>>>> following approach to test the code: >>>>>>> >>>>>>> 1) tangle >>>>>>> 2) refresh buffer containing the tangled code (I use auto-revert-mode >>>> or >>>>>>> global-auto-revert-mode for that) >>>>>>> 3) load the tangled file into an existing R session via ESS R for >>>>>> evaluation >>>>>>> >>>>>>> This involves switching between buffers in always the same sequence. >>>>>>> Therefore my suggestion: >>>>>>> >>>>>>> would it be possible to have a tangle-and-evaluate-tangled-file >>>>>> funcction, >>>>>>> which is doing this automatically? >>>>>>> >>>>>>> C-c - 0 and org-babel-execute-buffer do not work in this case, as >>>>>> functions >>>>>>> are split over several code blocks in R. >>>>>>> >>>>>>> Cheers, >>>>>>> >>>>>>> Rainer >>>>>> >>>> > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkw/AQYACgkQoYgNqgF2egpOHgCeIoOMiIxi1ZbrDPVW4OpbKM8W r9IAnihCH3WTFpWgK/z9BFd7kx1Clh+k =JR5K -----END PGP SIGNATURE-----