1
1
;;; ess-site.el --- user customization of ESS
3
3
;; Copyright (C) 1993 David M. Smith
4
;; Copyright (C) 1997--2007 A.J. Rossini, Rich M. Heiberger, Martin
4
;; Copyright (C) 1997--2011 A.J. Rossini, Richard M. Heiberger, Martin
5
5
;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen.
7
7
;; Original Author: David Smith <D.M.Smith@lancaster.ac.uk>
8
8
;; Created: 12 Nov 1993
9
;; Maintainers: ESS-core <ESS-core@stat.math.ethz.ch>
9
;; Maintainers: ESS-core <ESS-core@r-project.org>
11
11
;; Keywords: start up, configuration.
260
260
auto-mode-alist)))
262
;; Rscript and littler interpreters recognized. XEmacs entries can
263
;; be regexps, which complicates matters as "r" on its own matches
262
;; Rscript and littler interpreters recognized. XEmacs entries can
263
;; be regexps, which complicates matters as "r" on its own matches
264
264
;; other interpeters like "perl".
265
265
(add-to-list 'interpreter-mode-alist '("Rscript" . r-mode))
266
266
(add-to-list 'interpreter-mode-alist
469
469
;;; On a PC, the default is S+6.
470
470
;; Elsewhere (unix and linux) the default is S+6
471
(cond (ess-microsoft-p ; MS-Windows
473
;; (if (equal (file-name-nondirectory shell-file-name) "cmdproxy.exe")
476
(defun S-by-icon (&rest x)
478
(message "Please start S+ from the icon.\n Then you can connect emacs to it with `M-x S-existing'.")
482
(if (equal (file-name-nondirectory shell-file-name) "cmdproxy.exe")
486
(fset 's-mode 'S+6-mode)
487
(fset 's-transcript-mode 'S+6-transcript-mode))
489
((eq system-type 'gnu/linux) ; Linux -- no S+3
491
(fset 's-mode 'S+6-mode)
492
(fset 's-transcript-mode 'S+6-transcript-mode))
496
(fset 's-mode 'S+6-mode)
497
(fset 's-transcript-mode 'S+6-transcript-mode)))
471
(cond (ess-microsoft-p
472
;; MS-Windows-------------------------------------------------
475
;; (if (equal (file-name-nondirectory shell-file-name) "cmdproxy.exe")
478
(defun S-by-icon (&rest x)
480
(message "Please start S+ from the icon.
481
Then you can connect emacs to it with `M-x S-existing'.")
485
(if (equal (file-name-nondirectory shell-file-name) "cmdproxy.exe")
489
(fset 's-mode 'S+6-mode)
490
(fset 's-transcript-mode 'S+6-transcript-mode))
492
(t ;;((eq system-type 'gnu/linux)
493
;; Linux etc (including Mac OSX !?) --------------------------
495
(fset 's-mode 'S+6-mode)
496
(fset 's-transcript-mode 'S+6-transcript-mode)))
500
499
;;;;* Alias S-mode to s-mode
520
519
;; ----- *and* update the "Start Process" menu (below)
521
520
;; -> To this: wrap the following in functions that can be re-called
523
(let ( (ess-s-versions-created)
524
;;(ess-r-versions-created)
525
(R-newest-list '("R-newest"))
522
;; Create ess-versions-created,
523
;; ess-r-versions-created,
524
;; and on Windows, ess-rterm-version-paths -----------------------------------------
525
(let ((R-newest-list '("R-newest"))
526
(ess-s-versions-created (if ess-microsoft-p
528
(ess-sqpe-versions-create ess-SHOME-versions) ;; 32-bit
529
(ess-sqpe-versions-create ess-SHOME-versions-64 "-64-bit")) ;; 64-bit
530
(ess-s-versions-create)))) ;; use ess-s-versions
527
531
(if ess-microsoft-p
529
(setq ess-s-versions-created
530
(ess-sqpe-versions-create)) ;; use ess-SHOME-versions
531
(setq ess-rterm-version-paths ;; (ess-find-rterm))
535
(ess-find-rterm (concat (getenv "ProgramFiles") "/R/")) ;; always 32 on 32 bit OS
536
;; ;; depends on 32 or 64 process on 64 bit OS
537
(ess-find-rterm (concat (getenv "ProgramFiles(x86)") "/R/")) ;; always 32 on 64 bit OS, nil on 32 bit OS
538
(ess-find-rterm (concat (getenv "ProgramW6432") "/R/")) ;; always 64 on 64 bit OS, nil on 32 bit OS
540
(setq ess-rterm-version-paths (mapcar '(lambda(x) (w32-short-file-name x)) ess-rterm-version-paths))
543
(setq ess-s-versions-created
544
(ess-s-versions-create)) ;; use ess-s-versions
532
(setq ess-rterm-version-paths ;; (ess-find-rterm))
535
(if (getenv "ProgramW6432")
536
(let ((P-1 (getenv "ProgramFiles(x86)"))
537
(P-2 (getenv "ProgramW6432")))
539
;; always 32 on 64 bit OS, nil on 32 bit OS
540
(ess-find-rterm (concat P-1 "/R/") "bin/Rterm.exe")
541
(ess-find-rterm (concat P-1 "/R/") "bin/i386/Rterm.exe")
542
;; keep this both for symmetry and because it can happen:
543
(ess-find-rterm (concat P-1 "/R/") "bin/x64/Rterm.exe")
545
;; always 64 on 64 bit OS, nil on 32 bit OS
546
(ess-find-rterm (concat P-2 "/R/") "bin/Rterm.exe")
547
(ess-find-rterm (concat P-2 "/R/") "bin/i386/Rterm.exe")
548
(ess-find-rterm (concat P-2 "/R/") "bin/x64/Rterm.exe")
550
(let ((PF (getenv "ProgramFiles")))
552
;; always 32 on 32 bit OS, depends on 32 or 64 process on 64 bit OS
553
(ess-find-rterm (concat PF "/R/") "bin/Rterm.exe")
554
(ess-find-rterm (concat PF "/R/") "bin/i386/Rterm.exe")
555
(ess-find-rterm (concat PF "/R/") "bin/x64/Rterm.exe")
547
559
(setq ess-r-versions-created ;; for Unix *and* Windows, using either
548
560
(ess-r-versions-create));; ess-r-versions or ess-rterm-version-paths (above!)
555
567
(mapcar (lambda(x) (if (boundp x) (symbol-value x) nil))
557
569
ess-r-versions-created
558
ess-s-versions-created))))
560
(when ess-versions-created
561
;; new-menu will be a list of 3-vectors, of the form:
562
;; ["R-1.8.1" R-1.8.1 t]
563
(let ((new-menu (mapcar '(lambda(x) (vector x (intern x) t))
564
ess-versions-created)))
565
(easy-menu-add-item ess-mode-menu '("Start Process")
566
(cons "Other" new-menu)))))
570
ess-s-versions-created)))))
573
(when ess-versions-created
574
;; new-menu will be a list of 3-vectors, of the form:
575
;; ["R-1.8.1" R-1.8.1 t]
576
(let ((new-menu (mapcar '(lambda(x) (vector x (intern x) t))
577
ess-versions-created)))
578
(easy-menu-add-item ess-mode-menu '("Start Process")
579
(cons "Other" new-menu))))
568
581
;; Check to see that inferior-R-program-name points to a working version
569
582
;; of R; if not, try to find the newest version:
571
583
(ess-check-R-program-name) ;; -> (ess-find-newest-R) if needed, in ./ess-r-d.el
573
585
;;; 3. Customization (and examples) for your site