is it possible to display plots in an emacs buffer?
Rodney Sparapani
rsparapa at post.its.mcw.edu
Fri May 21 19:57:15 CEST 2004
>I've taken this sentence from a recent thread:
>_The usual answer to a question of the form "is it possible to do ....?"
>is "yes, here is how"_
>
>Lets try:
>is it possible to display the plots R makes inside an emacs buffer?
>
>I hope to get the usual answer... ;-)
>
>I'll explain the idea a bit more. When I am working in emacs and make a
>plot, a new X11 window opens, I see the plot and to get back to emacs I
>have to close or minimize the X11, I loose quite a lot of time doing
>this every day. Wouldn't it be great if the plots could be displayed
>directly inside an emacs buffer?
>
>I guess opening an X11 device inside an emacs buffer is not possible (am
>I right?) but other interim solutions would also be great.
>For example:
> - I can open an image (called say "Rplots.png" or other appropiatte
>format, maybe eps?) in an emacs buffer.
> - Every time I would make a plot in the ESS proccess the output is
>written to this file instead of the default X11 and an automatic call to
>revert-buffer is done in the emacs buffer displaying the image.
> Is it to possible to do this? Has anybody already implemented it?
>Best regards,
>Angel
>
>
Angel:
That's very similar to the way the ESS[SAS] feature used to work. However, in
it's current state it would not do what you want for ESS[R]. So, take the code
below and execute it in the scratch buffer. Then, when you have created a .gif
or .jpg, executing ess-sas-graph-view should bring up the image in it's own
buffer (if you have setup ESS[SAS], then you can just press F12). You can find
out more by reading the info of ESS[SAS].
(defun ess-sas-graph-view ()
"Open a GSASFILE for viewing."
(interactive)
(ess-sas-file-path)
; (ess-sas-goto-log 'no-error-check)
(save-excursion (let ((ess-tmp-sas-graph nil)
(ess-tmp-sas-glyph nil)
(ess-tmp-sas-graph-regexp
(concat "['\"]\\(.*" ess-sas-graph-suffix-regexp "\\)['\"]")))
(save-match-data
(search-backward-regexp "[ \t=]" nil t)
(save-excursion
(setq ess-tmp-sas-graph (ess-search-except
ess-tmp-sas-graph-regexp)))
(if (not ess-tmp-sas-graph)
(setq ess-tmp-sas-graph (ess-search-except ess-tmp-sas-graph-regexp
nil t)))
(setq ess-tmp-sas-graph (read-string "GSASFILE: "
(or ess-tmp-sas-graph ess-sas-file-path)))
; (or ess-tmp-sas-graph (file-name-nondirectory ess-sas-file-path))))
(if (fboundp 'ess-xemacs-insert-glyph) (progn
(if (string-match "[.][gG][iI][fF]" ess-tmp-sas-graph)
(setq ess-tmp-sas-glyph 'gif)
;;else
(if (string-match "[.][jJ][pP][eE]?[gG]" ess-tmp-sas-graph)
(setq ess-tmp-sas-glyph 'jpeg)))))
(if ess-tmp-sas-glyph (progn
(switch-to-buffer (file-name-nondirectory ess-tmp-sas-graph))
(ess-xemacs-insert-glyph
(make-glyph (vector ess-tmp-sas-glyph :file
ess-tmp-sas-graph)))
)
;;else
(if (and (boundp 'auto-image-file-mode) auto-image-file-mode
(string-match "[.][jJ][pP][eE]?[gG]" ess-tmp-sas-graph))
(find-file ess-tmp-sas-graph)
;;else
(ess-sas-goto-shell t)
(insert ess-sas-submit-pre-command " " ess-sas-image-viewer " "
ess-tmp-sas-graph
(if (equal ess-sas-submit-method 'sh) " &"))
(comint-send-input))
)))))
Rodney Sparapani Medical College of Wisconsin
Sr. Biostatistician Patient Care & Outcomes Research
rsparapa at mcw.edu http://www.mcw.edu/pcor
Was 'Name That Tune' rigged? WWLD -- What Would Lombardi Do
More information about the ESS-help
mailing list