emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] [babel] feature request - tangle-and-evaluate-tangled-file


From: Eric Schulte
Subject: Re: [Orgmode] [babel] feature request - tangle-and-evaluate-tangled-file
Date: Wed, 21 Jul 2010 09:50:47 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

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 <address@hidden> 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 <address@hidden> 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.
>>>>> #############################################
>> 
>> 
>> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]