From: "Eric Schulte" <schulte.eric@gmail.com>
To: Rainer M Krug <r.m.krug@gmail.com>
Cc: emacs-orgmode <emacs-orgmode@gnu.org>
Subject: Re: [babel] feature request - tangle-and-evaluate-tangled-file
Date: Wed, 21 Jul 2010 09:50:47 -0700 [thread overview]
Message-ID: <87r5iwbwyg.fsf@gmail.com> (raw)
In-Reply-To: <4C46AB35.3020506@mail.com> (Rainer M. Krug's message of "Wed, 21 Jul 2010 10:09:25 +0200")
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.krug@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.krug@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.
>>>>> #############################################
>>
>>
>>
next prev parent reply other threads:[~2010-07-21 16:50 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-06 7:55 [babel] feature request - tangle-and-evaluate-tangled-file Rainer M Krug
2010-07-08 19:03 ` Eric Schulte
2010-07-09 7:47 ` Rainer M Krug
2010-07-09 15:44 ` Eric Schulte
2010-07-12 7:46 ` Rainer M Krug
2010-07-12 17:51 ` Eric Schulte
2010-07-13 8:14 ` Dr Rainer M Krug
2010-07-15 12:37 ` Rainer M Krug
2010-07-16 22:58 ` Eric Schulte
2010-07-19 7:12 ` Rainer M Krug
2010-07-20 7:55 ` Rainer M Krug
2010-07-20 22:41 ` Eric Schulte
2010-07-21 7:23 ` Rainer M Krug
2010-07-21 7:49 ` Rainer M Krug
2010-07-21 8:09 ` Rainer M Krug
2010-07-21 16:50 ` Eric Schulte [this message]
2010-07-22 6:30 ` Rainer M Krug
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r5iwbwyg.fsf@gmail.com \
--to=schulte.eric@gmail.com \
--cc=emacs-orgmode@gnu.org \
--cc=r.m.krug@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.