emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Dan Davison <davison@stats.ox.ac.uk>
To: Julien Barnier <julien@no-log.org>
Cc: emacs-orgmode@gnu.org
Subject: Re: [PATCH] [babel] Add option to display process buffer when editing R source code blocks
Date: Thu, 08 Apr 2010 16:02:10 -0400	[thread overview]
Message-ID: <87d3y94ssd.fsf@stats.ox.ac.uk> (raw)
In-Reply-To: <87sk77tjd8.fsf@z.nozav.org> (Julien Barnier's message of "Wed, 07 Apr 2010 16:41:55 +0200")

Julien Barnier <julien@no-log.org> writes:

> Hi,
>
> This is a small patch to org-babel-R.el which allows to automatically
> display the R process buffer when editing R source code blocks with
> org-edit-src-code.

Hi Julien,

Could I suggest a slightly different route? We already have the
functions org-babel-switch-to-session and org-babel-load-session, which
work for any language. These switch to the process buffer, like your
patch does. I agree with you about wanting a function that ends up
displaying the process buffer and the code edit buffer. I have the
following personal function which achieves that:

(defun dan/org-babel-switch-to-code-with-session (&optional arg)
    "Switch to code edit buffer and display session"
    (interactive "P")
    (save-excursion
      (org-babel-switch-to-session arg nil))
    (org-edit-src-code))

Could you experiment with these functions, and see if they are
satisfactory, amd let us know if we can improve things? E.g. we could
include a function like my one above to display both the session with
the edit-buffer.

Note that o-b-load-session additionally loads the body of the block into
the session; and that switch-session, if called with a prefix arg,
assigns variables from the header args in the session[1]. These are
bound to M-down and M-up when on a code block.

Oh, and also... org-babel-switch-to-session and org-babel-load-session
use the emacs function pop-to-buffer. That means that there's all sorts
of extra control you can have over how the windows are displayed. See
the documentation for things like pop-to-buffer, pop-up-windows,
split-window-sensibly, special-display-buffer-names, etc.

Dan

Footnotes:

[1] Just fixed bug here; please pull latest version.

>

> A custom variable allows to choose between no process buffer
> (default), only the source code block and the process buffer, or the
> org file, the source code block and the process buffer.
>
> As I'm quite new to git, I hope my patch is usable, because I
> generated it from a org-babel-R.el file which already had some
> modifications from master.
>
> Sincerely,
>
> -- 
> Julien
>
>
> ---
>  contrib/babel/lisp/langs/org-babel-R.el |   27 ++++++++++++++++++++++++++-
>  1 files changed, 26 insertions(+), 1 deletions(-)
>
> diff --git a/contrib/babel/lisp/langs/org-babel-R.el b/contrib/babel/lisp/langs/org-babel-R.el
> index 8b333cc..3924089 100644
> --- a/contrib/babel/lisp/langs/org-babel-R.el
> +++ b/contrib/babel/lisp/langs/org-babel-R.el
> @@ -218,7 +218,32 @@ Currently, insert hline if column names in output have been requested."
>    (if column-names-p
>        (cons (car result) (cons 'hline (cdr result)))
>      result))
> -  
> +
> +
> +(defcustom org-babel-R-edit-src-show-process nil
> +  "Layout of windows while editing R source blocks in org files"
> +  :group 'org-babel
> +  :type '(choice (const :tag "No process buffer" nil)
> +                (const :tag "Show source block and process buffer" "full")
> +                (const :tag "Show org file, source block and process buffer" "split")))
> +
> +(defadvice org-edit-src-code (around org-edit-src-code-with-R-process activate)
> +  "Display process buffer when eidting R source code blocks"
> +  (if org-babel-R-edit-src-show-process
> +    (let* ((info (org-babel-get-src-block-info))
> +          (lang (first info))
> +          (R-src-block (and info (string= (upcase lang) "R"))))
> +      ad-do-it
> +      (when R-src-block
> +       (cond ((string= org-babel-R-edit-src-show-process "split")
> +              (split-window-vertically)
> +              (ess-switch-to-end-of-ESS)
> +              (other-window -1))
> +             ((string= org-babel-R-edit-src-show-process "full")
> +              (delete-other-windows)
> +              (ess-switch-to-end-of-ESS)
> +              (other-window 1)))))
> +    ad-do-it))
>  
>  (provide 'org-babel-R)
>  ;;; org-babel-R.el ends here

  reply	other threads:[~2010-04-08 20:03 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-07 14:41 [PATCH] [babel] Add option to display process buffer when editing R source code blocks Julien Barnier
2010-04-08 20:02 ` Dan Davison [this message]
2010-04-13  9:46   ` Julien Barnier

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

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87d3y94ssd.fsf@stats.ox.ac.uk \
    --to=davison@stats.ox.ac.uk \
    --cc=emacs-orgmode@gnu.org \
    --cc=julien@no-log.org \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).