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: Mon, 19 Jul 2010 09:12:29 +0200 Message-ID: <4C43FADD.6000700@mail.com> References: <871vbdu77i.fsf@gmail.com> <874og8irrn.fsf@gmail.com> <87mxtwbii5.fsf@gmail.com> <4C3C2064.5020209@googlemail.com> <4C3F0106.8060904@mail.com> <87oce758zv.fsf@gmail.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=58848 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OakWi-0001FL-Mb for emacs-orgmode@gnu.org; Mon, 19 Jul 2010 03:12:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OakWg-0000YQ-VA for emacs-orgmode@gnu.org; Mon, 19 Jul 2010 03:12:36 -0400 Received: from mail-ey0-f169.google.com ([209.85.215.169]:52873) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OakWg-0000Y7-MK for emacs-orgmode@gnu.org; Mon, 19 Jul 2010 03:12:34 -0400 Received: by eydd26 with SMTP id d26so1018965eyd.0 for ; Mon, 19 Jul 2010 00:12:33 -0700 (PDT) In-Reply-To: <87oce758zv.fsf@gmail.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: Eric Schulte Cc: emacs-orgmode , Rainer M Krug -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 17/07/2010 00:58, Eric Schulte wrote: > Hi Rainer, > > I've just pushed up a fix for the org-babel-post-tangle-hook. > > With a minimal org-babel configuration, if I open the following file. > > --8<---------------cut here---------------start------------->8--- > ** tangle R and load > :PROPERTIES: > :tangle: to-load.r > :END: > > evaluate this > #+begin_src emacs-lisp :results silent :tangle no > (add-hook 'org-babel-post-tangle-hook > (lambda () (message "I'm in %s" (buffer-file-name)))) > #+end_src > > then tangle > > #+begin_src R :comments yes > x <- 8 > #+end_src > > #+begin_src R > y <- 9 > #+end_src > --8<---------------cut here---------------end--------------->8--- > > evaluate the emacs-lisp code block to initialize my post-tangle-hook, > and then tangle the very same file, I see the following in my messages > buffer, indicating that the correct file is now being visited. > > --8<---------------cut here---------------start------------->8--- > Wrote /home/eschulte/Desktop/to-load.r [2 times] > tangled 2 code blocks > I'm in /home/eschulte/Desktop/to-load.r > --8<---------------cut here---------------end--------------->8--- > > Hopefully this will now work for you as well. Great - thanks a lot - it does. I especially like the idea of putting the setting of the hook in the .org file - I had it in my emacs.org, but it is MUCH nicer to have it in the .org file. Cheers and thanks a lot, Rainer > > Thanks -- Eric > > Rainer M Krug writes: > >> 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/ iEYEARECAAYFAkxD+t0ACgkQoYgNqgF2egpFNQCePK2KXJDdvyDW9qiHc1KZkbgK qccAn1mb+mWNwVDy6z4kDsdysZ0/hKEN =Wqkn -----END PGP SIGNATURE-----