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 <r.m.k...@gmail.com> 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 <r.m.k...@gmail.com> 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. >>>>> ############################################# >> >> >> _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode