237 lines
8.1 KiB
EmacsLisp
237 lines
8.1 KiB
EmacsLisp
;;; ess-site.el --- user customization of ESS
|
||
|
||
;; Copyright (C) 1993 David M. Smith
|
||
;; Copyright (C) 1997--2012 A.J. Rossini, Richard M. Heiberger, Martin
|
||
;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen.
|
||
|
||
;; Author: David Smith <D.M.Smith@lancaster.ac.uk>
|
||
;; Created: 12 Nov 1993
|
||
;; Maintainer: ESS-core <ESS-core@r-project.org>
|
||
;; Keywords: local
|
||
|
||
;; This file is part of ESS
|
||
|
||
;; This file is free software; you can redistribute it and/or modify
|
||
;; it under the terms of the GNU General Public License as published by
|
||
;; the Free Software Foundation; either version 2, or (at your option)
|
||
;; any later version.
|
||
|
||
;; This file is distributed in the hope that it will be useful,
|
||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
;; GNU General Public License for more details.
|
||
|
||
;; A copy of the GNU General Public License is available at
|
||
;; http://www.r-project.org/Licenses/
|
||
|
||
|
||
;;; Commentary:
|
||
|
||
;; This file defines all the site-specific customizations for ESS. It should be
|
||
;; edited on a per-site basis. Read the comments (1.1 in Section 1 to see if
|
||
;; ess-site.el must be edited. The final directory location of this file must be
|
||
;; supplied in ess-lisp-directory. The editing of remaining sections is
|
||
;; optional. It should then be byte-compiled, and users who wish to use ESS
|
||
;; should add the line:
|
||
;;
|
||
;; (load "/PATH/TO/THIS/FILE/ess-site")
|
||
;;
|
||
;; (where /PATH/TO/THIS/FILE is the path to ess-site.elc: i.e. the value of
|
||
;; `ess-lisp-directory', below) to their .emacs file.
|
||
;;
|
||
;; Alternatively, if the file is already in a directory specified by
|
||
;; the load-path variable:
|
||
;;
|
||
;; (require 'ess-site)
|
||
;;
|
||
;; will work.
|
||
;;
|
||
;; with Emacs (and in general):
|
||
;;
|
||
;; (add-to-list 'load-path "/path/to/ess/lisp-directory")
|
||
|
||
;;; Code:
|
||
|
||
;; Provide here; otherwise we'll get infinite loops of (require ..):
|
||
(provide 'ess-site)
|
||
|
||
;;;; Load path, autoloads, and major modes
|
||
;;;; ========================================
|
||
;;
|
||
;; For most users the variable ess-lisp-directory will automatically
|
||
;; be set correctly. If you are working with an old emacs, one in
|
||
;; which file-truename is not defined, then you might need to change
|
||
;; the value of ess-lisp-directory to the directory which is to
|
||
;; contain the file ess-site.elc. This is probably the current
|
||
;; directory, or the value of LISPDIR if it was set in the Makefile.
|
||
|
||
;; DEBUG: (setq ess-show-load-messages t); instead of nil above
|
||
|
||
;; This sets `ess-lisp-directory' either from the current directory
|
||
;; when the file is being `load'ed, or from the installed location
|
||
;; otherwise. This way, users can load ESS without having added ESS to
|
||
;; `load-path'.
|
||
(defvar ess-lisp-directory
|
||
;; A nice default
|
||
(directory-file-name
|
||
(file-name-directory
|
||
(if (and (boundp 'load-file-name) load-file-name)
|
||
(file-truename load-file-name)
|
||
(locate-library "ess-site") )))
|
||
"Directory containing ess-site.el(c) and other ESS lisp files.")
|
||
|
||
(add-to-list 'load-path (file-name-as-directory ess-lisp-directory))
|
||
(require 'ess-utils);; <<- _not_ in load-path typically for traditional setup
|
||
|
||
(ess-message (format "[ess-site:] ess-lisp-directory = '%s'" ess-lisp-directory))
|
||
|
||
|
||
(defun ess-require (feature &rest args)
|
||
(let ((feature-name (symbol-name feature)))
|
||
(ess-message (concat "[ess-site:] require '" feature-name))
|
||
(apply 'require feature args)))
|
||
|
||
;; load code to figure out what version/strain of Emacs we are running
|
||
;; must come *AFTER* load-path is set !
|
||
|
||
(ess-require 'ess-compat)
|
||
|
||
;; If ess.info is not found, then ess-lisp-directory/../doc/info is added
|
||
;; resurrecting Stephen's version with a bug-fix
|
||
(unless (locate-file "ess.info" Info-default-directory-list)
|
||
(add-to-list 'Info-default-directory-list (expand-file-name "../doc/info/" ess-lisp-directory)))
|
||
|
||
|
||
|
||
;; Loads ess-custom.el and more
|
||
(ess-require 'ess)
|
||
|
||
|
||
;;; Loading popular dialects (they should become optional in the future)
|
||
|
||
;; R and Julia
|
||
(ess-require 'ess-r-mode)
|
||
(ess-require 'ess-julia)
|
||
|
||
;; S-PLUS (MathSoft/StatSci/Insightful/TIBCO)
|
||
(ess-require 'ess-sp3-d)
|
||
(if ess-microsoft-p
|
||
(ess-require 'ess-sp6w-d)
|
||
(ess-require 'ess-sp6-d))
|
||
|
||
;; S-elsewhere, on another machine by telnet
|
||
(ess-require 'essd-els)
|
||
|
||
;; Stata, SAS and batch BUGS
|
||
(ess-require 'ess-stata-mode)
|
||
(ess-require 'ess-sas-d)
|
||
(ess-require 'ess-bugs-l)
|
||
|
||
(ess-write-to-dribble-buffer
|
||
(format "[ess-site.el]: ess-customize-alist=%s \n"
|
||
ess-customize-alist))
|
||
|
||
;;; Literate Data Analysis
|
||
(ess-require 'ess-noweb)
|
||
(ess-require 'ess-swv)
|
||
|
||
(ess-write-to-dribble-buffer
|
||
(format "[ess-site.el _2_]: ess-customize-alist=%s \n"
|
||
ess-customize-alist))
|
||
|
||
;;; Speedbar and mouse
|
||
(ess-require 'ess-mouse)
|
||
|
||
;;; Toolbar support
|
||
(ess-require 'ess-toolbar)
|
||
|
||
(ess-require 'ido nil t)
|
||
|
||
|
||
;;; Site Specific setup
|
||
;;;; ===============================================
|
||
|
||
(autoload 'Rd-mode "ess-rd" "Major mode for editing R documentation." t)
|
||
|
||
;; Be careful when editing the following. MISTAKES WILL RESULT IN
|
||
;; *.sty BEING TREATED AS ESS[S], rather than LaTeX-mode!
|
||
|
||
(unless (assoc "\\.[rR]\\'" auto-mode-alist)
|
||
(setq auto-mode-alist
|
||
(append
|
||
'(("\\.sp\\'" . S-mode) ;; re: Don MacQueen <macq@llnl.gov>
|
||
("/R/.*\\.q\\'" . R-mode) ;; R/*.q is R code (e.g., in package)
|
||
("\\.[qsS]\\'" . S-mode) ;; s,S [see ess-restore-asm-extns above!]
|
||
("\\.ssc\\'" . S-mode) ;; Splus (>= 4.x) script files.
|
||
("\\.SSC\\'" . S-mode) ;; ditto for windoze
|
||
("\\.[rR]\\'" . R-mode)
|
||
("\\.[rR]nw\\'" . Rnw-mode)
|
||
("\\.[sS]nw\\'" . Snw-mode); currently identical to Rnw-mode
|
||
("\\.[rR]profile\\'" . R-mode)
|
||
("NAMESPACE\\'" . R-mode)
|
||
("CITATION\\'" . R-mode)
|
||
("\\.omg\\'" . omegahat-mode)
|
||
("\\.hat\\'" . omegahat-mode) ;; Duncan's pref'd...
|
||
("\\.lsp\\'" . XLS-mode)
|
||
("\\.do\\'" . STA-mode)
|
||
("\\.ado\\'" . STA-mode)
|
||
("\\.[Ss][Aa][Ss]\\'" . SAS-mode)
|
||
;; Many .log/.lst files, not just SAS
|
||
;;("\\.log\\'" . SAS-log-mode)
|
||
;;("\\.[Ll][Ss][Tt]\\'" . SAS-listing-mode)
|
||
("\\.[Ss]t\\'" . S-transcript-mode)
|
||
("\\.Sout" . S-transcript-mode)
|
||
;;("\\.[Rr]t\\'" . R-transcript-mode)
|
||
("\\.[Rr]out" . R-transcript-mode)
|
||
("\\.Rd\\'" . Rd-mode)
|
||
("\\.[Bb][Uu][Gg]\\'" . ess-bugs-mode)
|
||
("\\.[Bb][Oo][Gg]\\'" . ess-bugs-mode)
|
||
("\\.[Bb][Mm][Dd]\\'" . ess-bugs-mode)
|
||
("\\.[Jj][Aa][Gg]\\'" . ess-jags-mode)
|
||
("\\.[Jj][Oo][Gg]\\'" . ess-jags-mode)
|
||
("\\.[Jj][Mm][Dd]\\'" . ess-jags-mode)
|
||
)
|
||
auto-mode-alist)))
|
||
|
||
;; Rscript and littler interpreters recognized.
|
||
(add-to-list 'interpreter-mode-alist '("Rscript" . r-mode))
|
||
(add-to-list 'interpreter-mode-alist '("r" . r-mode))
|
||
|
||
(autoload 'ess-transcript-mode "ess-trns"
|
||
"Major mode for editing S transcript files." t)
|
||
(autoload 'ess-transcript-clean-region "ess-trns" no-doc t)
|
||
|
||
(autoload 'ess-rdired "ess-rdired"
|
||
"View *R* objects in a dired-like buffer." t)
|
||
|
||
(eval-after-load "ess-r-mode"
|
||
'(progn
|
||
(ess-message "[ess-site:] before creating ess-versions-* ...")
|
||
(ess-r-s-versions-creation+menu)
|
||
(ess-message "[ess-site:] after ess-versions-created ...")))
|
||
|
||
;; Check to see that inferior-ess-r-program-name points to a working version
|
||
;; of R; if not, try to find the newest version:
|
||
(ess-check-R-program-name) ;; -> (ess-find-newest-R) if needed, in ./ess-r-d.el
|
||
(ess-message "[ess-site:] after ess-check-R-prog... ...")
|
||
|
||
(ess-message "[ess-site:] *very* end ...")
|
||
|
||
|
||
; Local variables section
|
||
|
||
;; This file is automatically placed in Outline minor mode.
|
||
;; The file is structured as follows:
|
||
;; Chapters: ^L ;
|
||
;; Sections: ;;*;;
|
||
;; Subsections: ;;;*;;;
|
||
;; Components: defuns, defvars, defconsts
|
||
;; Random code beginning with a ;;;;* comment
|
||
;; Local variables:
|
||
;; mode: emacs-lisp
|
||
;; mode: outline-minor
|
||
;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*"
|
||
;; End:
|
||
|
||
;;; ess-site.el ends here
|