1
;;; essa-r.el -- Possible local customizations for R with ESS.
3
;; Copyright (C) 1997--2005 A.J. Rossini, Rich M. Heiberger, Martin
4
;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen.
6
;; Original Author: A.J. Rossini <blindglobe@gmail.com>
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)
83
(message "Finished evaluation"))
85
(defun ess-r-var (beg end)
86
"Load the current region of numbers into an R variable. Prompts for
87
a variable name. If none is given, it uses a default variable name,
88
e. BEG and END denote the region in the current buffer to be sent."
90
(save-window-excursion
91
(let ((tmp-file (make-temp-file "ess-r-var"))
94
(write-region beg end tmp-file)
96
;; Decide on the variable name to use in R; could use completion.
97
(setq var (read-string "R Variable name (default e): "))
101
;; Command to send to the R process. Get R to delete the file
102
;; rather than Emacs in case it takes R a long time to run the
104
(setq cmd (concat var " <- scan(\"" tmp-file "\"); "
105
"unlink(\"" tmp-file "\")" ))
107
;; Put the output from the scan command into the process buffer so
108
;; the user has a record of it.
109
(ess-execute cmd 'buffer))))
112
;;; Peter Dalgaard's code.
113
;;; This needs to be cleaned and validated!
115
(defun pd::set-up-demo ()
117
;; (if (not xemacs) (set-default-font "*courier-bold-r*--14**"))
119
(split-window-vertically 6)
120
(find-file "demos.R")
122
;; Don't need to run this as a function -- ought to be fine if set
125
(defun ajr::scroll-to-end::peterD (emacs)
126
"Goal: map prompt to bottom of the screen after every command.
127
Alternatively, use the scroll-in-place package, not sure where that
131
(if (= emacs "emacs")
132
(setq scroll-up-aggressively t)
133
(setq scroll-conservatively -4)) ;; <- change this
136
(defun show-max-other-window ()
139
(comint-show-maximum-output)
143
;; (ajr::scroll-to-end::peterD "xemacs")
144
;; (ajr::scroll-to-end::peterD "emacs")
146
(global-set-key [f11] 'show-max-other-window)
147
(global-set-key [f12] 'ess-eval-line-and-step))
154
; Local variables section
156
;;; This file is automatically placed in Outline minor mode.
157
;;; The file is structured as follows:
160
;;; Subsections: ;;;*;;;
161
;;; Components: defuns, defvars, defconsts
162
;;; Random code beginning with a ;;;;* comment
166
;;; outline-minor-mode: nil
167
;;; mode: outline-minor
168
;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*"
171
;;; ess-site.el ends here