1 ;;; essa-r.el -- Possible local customizations for R with ESS.
3 ;; Copyright (C) 1997--2004 A.J. Rossini, Rich M. Heiberger, Martin
4 ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen.
6 ;; Original Author: A.J. Rossini <rossini@u.washington.edu>
7 ;; Created: 17 November 1999
8 ;; Maintainers: ESS-core <ESS-core@stat.math.ethz.ch>
10 ;; Keywords: editing and process modes.
12 ;; This file is part of ESS
14 ;; This file is free software; you can redistribute it and/or modify
15 ;; it under the terms of the GNU General Public License as published by
16 ;; the Free Software Foundation; either version 2, or (at your option)
19 ;; This file is distributed in the hope that it will be useful,
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 ;; GNU General Public License for more details.
24 ;; You should have received a copy of the GNU General Public License
25 ;; along with GNU Emacs; see the file COPYING. If not, write to
26 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
28 ;; In short: you may use this code any way you like, as long as you
29 ;; don't charge money for it, remove this notice, or hold anyone liable
34 ;;; The purpose of this file is to demonstrate some of the extras that
35 ;;; have been constructed for the ESS R mode; if they prove
36 ;;; interesting, then they might be migrated to essd-r, the primary
42 ;; you can invoke ESS/R from emacs by typing
44 ;; with vsize set to (for example) 40M, and nsize set to 600000.
47 "C-u M-x R RET - - vsize SPC 40M SPC - - nsize SPC 600000 2*RET"))
48 ;; "SPC" must be "=" in future versions of R (works from 0.99 on)
50 (defun ess-r-do-region (start end
&optional message
)
51 "Send the current region to R via AppleScript."
53 (message "Starting evaluation...")
54 (do-applescript (concat
56 "tell application \"R\"\n"
58 "with timeout of 0 seconds\n"
59 "cmd \"" (buffer-substring start end
)
64 (message "Finished evaluation"))
66 (defun ess-r-do-line ()
67 "Send the current line to R via AppleScript."
68 (interactive) ;; "r\nP")
69 (message "Starting evaluation...")
73 (do-applescript (concat
75 "tell application \"R\"\n"
77 "with timeout of 0 seconds\n"
78 "cmd \"" (buffer-substring (point) end
)
84 (message "Finished evaluation"))
86 (defun ess-r-var (beg end
)
87 "Load the current region of numbers into an R variable. Prompts for
88 a variable name. If none is given, it uses a default variable name,
89 e. BEG and END denote the region in the current buffer to be sent."
91 (save-window-excursion
92 (let ( (tmp-file (make-temp-file "ess-r-var"))
95 (write-region beg end tmp-file
)
97 ;; Decide on the variable name to use in R; could use completion.
98 (setq var
(read-string "R Variable name (default e): "))
102 ;; Command to send to the R process. Get R to delete the file
103 ;; rather than Emacs in case it takes R a long time to run the
105 (setq cmd
(concat var
" <- scan(\"" tmp-file
"\"); "
106 "unlink(\"" tmp-file
"\")" ))
108 ;; Put the output from the scan command into the process buffer so
109 ;; the user has a record of it.
110 (ess-execute cmd
'buffer
))))
113 ;;; Peter Dalgaard's code.
114 ;;; This needs to be cleaned and validated!
116 (defun pd::set-up-demo
()
118 ;; (if (not xemacs) (set-default-font "*courier-bold-r*--14**"))
120 (split-window-vertically 6)
121 (find-file "demos.R")
123 ;; Don't need to run this as a function -- ought to be fine if set
126 (defun ajr::scroll-to-end
::peterD
(emacs)
127 "Goal: map prompt to bottom of the screen after every command.
128 Alternatively, use the scroll-in-place package, not sure where that
132 (if (= emacs
"emacs")
133 (setq scroll-up-aggressively t
)
134 (setq scroll-conservatively -
4)) ;; <- change this
137 (defun show-max-other-window ()
140 (comint-show-maximum-output)
144 ;; (ajr::scroll-to-end::peterD "xemacs")
145 ;; (ajr::scroll-to-end::peterD "emacs")
147 (global-set-key [f11] 'show-max-other-window)
148 (global-set-key [f12] 'ess-eval-line-and-step))
157 \f ; Local variables section
159 ;;; This file is automatically placed in Outline minor mode.
160 ;;; The file is structured as follows:
163 ;;; Subsections: ;;;*;;;
164 ;;; Components: defuns, defvars, defconsts
165 ;;; Random code beginning with a ;;;;* comment
169 ;;; outline-minor-mode: nil
170 ;;; mode: outline-minor
171 ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*"
174 ;;; ess-site.el ends here