From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eric Schulte" Subject: Re: [babel] feature request - tangle-and-evaluate-tangled-file Date: Wed, 21 Jul 2010 09:50:47 -0700 Message-ID: <87r5iwbwyg.fsf@gmail.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> <4C43FADD.6000700@mail.com> <4C45568B.8060300@mail.com> <87r5ixu66x.fsf@gmail.com> <4C46A086.3090105@mail.com> <4C46A697.2010506@mail.com> <4C46AB35.3020506@mail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from [140.186.70.92] (port=47678 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ObcVS-000410-Vc for emacs-orgmode@gnu.org; Wed, 21 Jul 2010 12:50:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1ObcVR-00039J-6g for emacs-orgmode@gnu.org; Wed, 21 Jul 2010 12:50:54 -0400 Received: from mail-px0-f169.google.com ([209.85.212.169]:46323) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ObcVQ-00039D-Ty for emacs-orgmode@gnu.org; Wed, 21 Jul 2010 12:50:53 -0400 Received: by pxi7 with SMTP id 7so6693996pxi.0 for ; Wed, 21 Jul 2010 09:50:52 -0700 (PDT) In-Reply-To: <4C46AB35.3020506@mail.com> (Rainer M. Krug's message of "Wed, 21 Jul 2010 10:09:25 +0200") 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: Rainer M Krug Cc: emacs-orgmode Hi Rainer, Thanks for your patience and persistence. I've pushed up what I believe should be a fix for this excess buffer movement. There still may be some issues with things like ess-load-file, but those can now optionally be squashed by wrapping your hook functions with `save-window-excursion' as shown. #+begin_src emacs-lisp :results silent :tangle no (add-hook 'org-babel-post-tangle-hook (lambda () (save-window-excursion (ess-load-file (buffer-file-name))))) #+end_src Best -- Eric Rainer M Krug writes: > On 21/07/2010 09:49, Rainer M Krug wrote: >> On 21/07/2010 09:23, Rainer M Krug wrote: >>> Hi Eric >> >> >>> On 21/07/2010 00:41, Eric Schulte wrote: >>>> Hi Rainer, >> >>>> I see the problem. When ess-load-file is called an even number of >>>> times, it results in flip-flopped buffers. I'm not sure of a good >> >>> Thanks for the clarification. >> >>>> solution here, aside from possibly tangling to a 3rd file, e.g. >> >>>> #+begin_src R :tangle /tmp/nothing.R >>>> y <- 9 >>>> #+end_src >> >>>> to ensure a good final balance. Alternately you could try wrapping the >>>> ess-load-file call in save-window-excursion, which will inhibit it's >>>> ability to change buffers -- and result in the *R* window taking over >>>> your frame. >> >>>> #+begin_src emacs-lisp :results silent :tangle no >>>> (add-hook 'org-babel-post-tangle-hook >>>> (lambda () (save-window-excursion (ess-load-file (buffer-file-name))))) >>>> #+end_src >> >>>> Sorry I can't be of more help. >> >>> No problem - now I know where the problem is sitting and I might be able >>> to work around it. >> >>> Just an idea: if I could put an if statement in the hook, so that only >>> when the buffer-file-name is a specific name, ess-load-file is called, I >>> assume that it should work? >>> I'll try that one out as well. >> >> It seems, that it has nothing to do with ess-load-file. I'll send you >> the file I am working on directly, as it is quite longish. > > I managed to reproduce the problem with the following org file: > > > ######################################################## > ** 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 > > #+begin_src R :tangle file2.R > y <- 9 > #+end_src > ######################################################## > > What I did: > > 1) Opened a file containing the text above > 2) evaluated the lisp code to set the hook > 3) C-x 2 to create a second buffer which shows the same file > 4) go to the top buffer and C-c C-v t to tangle > -> The top window is switching to a different buffer > 5) reproducible here. > > 6) If I open to-load.r but make sure that both windows are displaying > the .org buffer, it doesn't happen - only that the second buffer is > switching to to-load.r > > 7) if to-load.r is not visited by a buffer but file2.R is, the switching > is there again. > > Hope this helps, > > Rainer > > >> >> Cheers, >> >> Rainer >> >> >> >>> Cheers and thanks, >> >>> Rainer >> >> >> >>>> Best -- Eric >> >>>> Rainer M Krug writes: >> >>>>> Hi Eric >>>>> >>>>> I just discovered a "switching of buffers" when tangling the following >>>>> org file with the new org-babel-post-tangle-hook. >>>>> >>>>> Otherwise it is working perfectly now. >>>>> >>>>> >>>>> ############################################# >>>>> ** 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 () (ess-load-file (buffer-file-name)))) >>>>> #+end_src >>>>> >>>>> then tangle >>>>> >>>>> #+begin_src R :comments yes >>>>> x <- 8 >>>>> #+end_src >>>>> t >>>>> #+begin_src R >>>>> y <- 9 >>>>> #+end_src >>>>> >>>>> #+begin_src R :tangle file2.R >>>>> y <- 9 >>>>> #+end_src >>>>> >>>>> A second buffer will open with the R session. >>>>> If you tangle a second time, these buffers are switching, i.e. where the >>>>> .org buffer was is the R buffer and vice-versa. >>>>> ############################################# >> >> >>