~ubuntu-branches/ubuntu/raring/ess/raring-proposed

« back to all changes in this revision

Viewing changes to lisp/ess-site.el

  • Committer: Bazaar Package Importer
  • Author(s): Dirk Eddelbuettel
  • Date: 2011-02-03 16:10:05 UTC
  • mfrom: (1.2.19 upstream)
  • Revision ID: james.westby@ubuntu.com-20110203161005-g1bg3cd5mtu15uh3
Tags: 5.13-1
New upstream version released today

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
;;; ess-site.el --- user customization of ESS
2
2
 
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.
6
6
 
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>
10
10
 
11
11
;; Keywords: start up, configuration.
12
12
 
259
259
          )
260
260
         auto-mode-alist)))
261
261
 
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
468
468
 
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
472
 
;;        (fset 'S
473
 
;;           (if (equal (file-name-nondirectory shell-file-name) "cmdproxy.exe")
474
 
;;               'S+6-msdos
475
 
;;             'S+6))
476
 
       (defun S-by-icon (&rest x)
477
 
         (interactive)
478
 
         (message "Please start S+ from the icon.\n Then you can connect emacs to it with `M-x S-existing'.")
479
 
         )
480
 
       (fset 'S 'S-by-icon)
481
 
       (fset 'S-existing
482
 
             (if (equal (file-name-nondirectory shell-file-name) "cmdproxy.exe")
483
 
                 'S+6-msdos-existing
484
 
               'S+6-existing))
485
 
       (fset 'Sqpe 'Sqpe+6)
486
 
       (fset 's-mode 'S+6-mode)
487
 
       (fset 's-transcript-mode 'S+6-transcript-mode))
488
 
 
489
 
      ((eq system-type 'gnu/linux)      ; Linux -- no S+3
490
 
       (fset 'S 'S+6)
491
 
       (fset 's-mode 'S+6-mode)
492
 
       (fset 's-transcript-mode 'S+6-transcript-mode))
493
 
 
494
 
      (t                                ; Other Unixen
495
 
       (fset 'S 'S+6)
496
 
       (fset 's-mode 'S+6-mode)
497
 
       (fset 's-transcript-mode 'S+6-transcript-mode)))
 
471
(cond  (ess-microsoft-p
 
472
        ;; MS-Windows-------------------------------------------------
 
473
 
 
474
        ;;        (fset 'S
 
475
        ;;           (if (equal (file-name-nondirectory shell-file-name) "cmdproxy.exe")
 
476
        ;;               'S+6-msdos
 
477
        ;;             'S+6))
 
478
        (defun S-by-icon (&rest x)
 
479
          (interactive)
 
480
          (message "Please start S+ from the icon.
 
481
 Then you can connect emacs to it with `M-x S-existing'.")
 
482
          )
 
483
        (fset 'S 'S-by-icon)
 
484
        (fset 'S-existing
 
485
              (if (equal (file-name-nondirectory shell-file-name) "cmdproxy.exe")
 
486
                  'S+6-msdos-existing
 
487
                'S+6-existing))
 
488
        (fset 'Sqpe 'Sqpe+6)
 
489
        (fset 's-mode 'S+6-mode)
 
490
        (fset 's-transcript-mode 'S+6-transcript-mode))
 
491
 
 
492
       (t ;;((eq system-type 'gnu/linux)
 
493
        ;; Linux etc (including Mac OSX !?) --------------------------
 
494
        (fset 'S 'S+6)
 
495
        (fset 's-mode 'S+6-mode)
 
496
        (fset 's-transcript-mode 'S+6-transcript-mode)))
498
497
 
499
498
 
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
522
521
 
523
 
(let ( (ess-s-versions-created)
524
 
       ;;(ess-r-versions-created)
525
 
       (R-newest-list '("R-newest"))
526
 
       )
 
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
 
527
                                  (nconc
 
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
528
 
      (progn
529
 
        (setq ess-s-versions-created
530
 
              (ess-sqpe-versions-create))   ;; use ess-SHOME-versions
531
 
        (setq ess-rterm-version-paths ;; (ess-find-rterm))
532
 
              (ess-flatten-list
533
 
               (ess-uniq-list
534
 
                (nconc
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
539
 
                 ))))
540
 
        (setq ess-rterm-version-paths (mapcar '(lambda(x) (w32-short-file-name x)) ess-rterm-version-paths))
541
 
        )
542
 
    ;;else  real OS :
543
 
      (setq ess-s-versions-created
544
 
            (ess-s-versions-create))      ;; use ess-s-versions
545
 
      )
 
532
      (setq ess-rterm-version-paths ;; (ess-find-rterm))
 
533
            (ess-flatten-list
 
534
             (ess-uniq-list
 
535
              (if (getenv "ProgramW6432")
 
536
                  (let ((P-1 (getenv "ProgramFiles(x86)"))
 
537
                        (P-2 (getenv "ProgramW6432")))
 
538
                    (nconc
 
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")
 
544
 
 
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")
 
549
                     ))
 
550
                (let ((PF (getenv "ProgramFiles")))
 
551
                  (nconc
 
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")
 
556
                   ))
 
557
                )))))
546
558
 
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))
556
568
                 '(R-newest-list
557
569
                   ess-r-versions-created
558
 
                   ess-s-versions-created))))
559
 
 
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)))))
 
571
 
 
572
 
 
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))))
567
580
 
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:
570
 
(require 'ess-r-d)
571
583
(ess-check-R-program-name) ;; -> (ess-find-newest-R) if needed, in ./ess-r-d.el
572
584
 
573
585
;;; 3. Customization (and examples) for your site