;; Adapted with one minor change from Felipe Salazar at ;; http://www.emacswiki.org/emacs/EmacsSpeaksStatistics (setq ess-ask-for-ess-directory nil) (setq ess-local-process-name "R") (setq ansi-color-for-comint-mode 'filter) (setq comint-scroll-to-bottom-on-input t) (setq comint-scroll-to-bottom-on-output t) (setq comint-move-point-for-output t) (defun my-ess-start-R () (interactive) (if (not (member "*R*" (mapcar (function buffer-name) (buffer-list)))) (progn (delete-other-windows) (setq w1 (selected-window)) (setq w1name (buffer-name)) (setq w2 (split-window w1 nil t)) (R) (set-window-buffer w2 "*R*") (set-window-buffer w1 w1name)))) (defun my-ess-eval () (interactive) (my-ess-start-R) (if (and transient-mark-mode mark-active) (call-interactively 'ess-eval-region) (call-interactively 'ess-eval-line-and-step))) (add-hook 'ess-mode-hook '(lambda() (local-set-key [(shift return)] 'my-ess-eval))) (add-hook 'inferior-ess-mode-hook '(lambda() (local-set-key [C-up] 'comint-previous-input) (local-set-key [C-down] 'comint-next-input))) (add-hook 'Rnw-mode-hook '(lambda() (local-set-key [(shift return)] 'my-ess-eval))) (require 'ess-site)