This is the README file for the distribution of ESS version 13.09-1
ESS is a GNU Emacs and XEmacs mode for interactive statistical programming and data analysis. Languages supported: the S family (S, S-PLUS and R), SAS, BUGS/JAGS and Stata. ESS grew out of the desire for bug fixes and extensions to S-mode and SAS-mode as well as a consistent union of their features in one package.
Installation instructions are provided in sections for both Unix and Windows; see below.
The current development team is led by Martin Maechler since August 2004. Former project leader A.J. (Tony) Rossini (rossini@blindglobe.net) did the initial port to XEmacs and has been the primary coder. Martin Maechler (maechler@stat.math.ethz.ch) and Kurt Hornik (Kurt.Hornik@R-project.org) have assisted with the S family and XLispStat. Stephen Eglen (stephen@gnu.org) has worked mostly on R support. Richard M. Heiberger (rmh@temple.edu) has assisted with S/S-PLUS development for Windows. Richard and Rodney A. Sparapani (rsparapa@mcw.edu) have done much of the work improving SAS batch and interactive support. Rodney has also extended ESS to support BUGS/JAGS and has an interest in improving Stata support.
We are grateful to the previous developers of S-mode (Doug Bates, Ed Kademan, Frank Ritter, David M. Smith), SAS-mode (Tom Cook) and Stata-mode (Thomas Lumley).
| • License: | ||
| • Stability: | ||
| • Requirements: | ||
| • Latest Version: | ||
| • Installation: | ||
| • Starting up: | ||
| • Current Features: | ||
| • New Features: | ||
| • Reporting Bugs: | ||
| • Mailing Lists: | ||
| • Authors: |
Next: Stability, Previous: General Information, Up: General Information
The source and documentation of ESS 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.
ESS 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 in the file COPYING in the same directory as this file for more details.
Next: Requirements, Previous: License, Up: General Information
All recent released versions are meant to be release-quality versions. While some new features are being introduced, we are cleaning up and improving the interface. We know that there are many remaining opportunities for documentation improvements, but all contributors are volunteers and time is precious. Patches or suggested fixes with bug reports are much appreciated!
Next: Latest Version, Previous: Stability, Up: General Information
ESS is most likely to work with current/recent versions of the following statistical packages: R/S-PLUS, SAS, Stata, OpenBUGS and JAGS.
ESS supports current, and recent, stable versions of GNU Emacs (currently, specifically, the 23.x and 24.x series; alpha/beta/pre-release versions are NOT SUPPORTED). Non-Windows users beware: GNU Emacs 24.3 is preferable to 24.1 or 24.2: these broken builds suffer from bug 12463 http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12463 which will cause emacs and ESS to get progressively slower over time.
Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs.
To build the PDF documentation, you will need a version of TeX Live or texinfo that includes texi2dvi (BEWARE: recent TeX Live, and some texinfo RPMs, do NOT include texi2dvi).
Next: Installation, Previous: Requirements, Up: General Information
The latest released version of ESS is always available on the web at: ESS web page or StatLib
The latest development version of ESS is available via https://svn.R-project.org/ESS/, the ESS Subversion repository. If you have a Subversion client (see http://subversion.tigris.org/), you can download the sources using:
% svn checkout https://svn.r-project.org/ESS/trunk path
which will put the ESS files into directory path. Later, within that directory, ‘svn update’ will bring that directory up to date. Windows-based tools such as TortoiseSVN are also available for downloading the files. Alternatively, you can browse the sources with a web browser at: ESS SVN site. However, please use a subversion client instead to minimize the load when retrieving.
If you remove other versions of ESS from your emacs load-path, you can then use the development version by adding the following to .emacs:
(load "/path/to/ess-svn/lisp/ess-site.el")
Note that https is required, and that the SSL certificate for the Subversion server of the R project is
Certificate information: - Hostname: svn.r-project.org - Valid: from Jul 16 08:10:01 2004 GMT until Jul 14 08:10:01 2014 GMT - Issuer: Department of Mathematics, ETH Zurich, Zurich, Switzerland, CH - Fingerprint: c9:5d:eb:f9:f2:56:d1:04:ba:44:61:f8:64:6b:d9:33:3f:93:6e:ad
(currently, there is no “trusted certificate”). You can accept this certificate permanently and will not be asked about it anymore.
For development and experimentation on new features, there is now a GitHub branch for ESS, available at https://github.com/emacs-ess/ESS.
Next: Starting up, Previous: Latest Version, Up: General Information
Alternatively you can use svn or git to fetch the most
recent development version to your local machine with:
svn checkout https://svn.r-project.org/ESS/trunk /path/to/ESS
or
git clone https://github.com/emacs-ess/ESS.git /path/to/ESS
cd /path/to/ESS/ make
Without this step, info, pdf and html documentation and reference card will not be available.
make install. You might need administrative privileges:
make install
The files are installed into /usr/share/emacs directory. For this step to
run correctly on Mac OS X, you will need to adjust the PREFIX
path in Makeconf. The necessary code and instructions are
commented in that file.
make install step from above, just add
(require 'ess-site)
to your ~/.emacs file. Otherwise, you should add /path/to/ESS/lisp/ to your emacs load path and then load ESS with the following lines in your ~/.emacs:
(add-to-list 'load-path "/path/to/ESS/lisp/") (load "ess-site")
M-x ess-version.
Note for Windows and Mac OS X users: The most straightforward way to install Emacs on your machine is by downloading all-in-one Emacs binary by Vincent Goulet.
Note for XEmacs users: Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs.
Next: Current Features, Previous: Installation, Up: General Information
To start an S session on Unix or on Windows when you use the Cygwin bash shell, simply type M-x S RET.
To start an S session on Windows when you use the MSDOS prompt shell, simply type M-x S+6-msdos RET.
Next: New Features, Previous: Starting up, Up: General Information
Next: Reporting Bugs, Previous: Current Features, Up: General Information
Changes / Selected Bug Fixes in 13.09-1:
~/.config/ESSR/ directory on the remote machine
inferior-ess-pager
ess-execute is now bound to C-c C-e C-e in ess-extra-map.
ess-execute
head and tail methods were replaced by htsummary in
ess-R-describe-object-at-point-commands
ess-transcript-clean-region etc. correctly treat
multiline statements, i.e., no longer forgets the lines typically
preceded by ’+’
ess-sas-edit-keys-toggle default returns to nil
prettify-symbols-mode:
contribution from Rudiger Sonderfeld https://github.com/emacs-ess/ESS/pull/65
ess-roxy-preview-HTML is now on C-c C-o C-w and
ess-roxy-preview-text is now on C-c C-o C-t
make install was simplified and should work
out of the box on most *nix systems
Changes/New Features in 13.09:
ess-developer-packages. The
old behavior (activation on per-process basis) is still available on
M-x ess-developer in a process buffer.
devtools package. New command
ess-developer-load-package calls load_all on the package
containing current file. ess-developer-add-package now offers IDO
menu completions with available loading methods, currently
library, and load_all. Loading command can be customized
with ess-developer-load-on-add-commands.
M-x ess-version now reports full loading path
and recognizes git and ELPA versions.
font-lock-warning-face as they should be, (for quite some time
these keywords have been hijacked by compilation mode fontification).
ess-help-reuse-window custom
variable.
ess-function-call-face inherits from
font-lock-function-name-face rather than font-lock-builtin-face.
ess-inject-source now accepts function-and-buffer option.
ess-rep-regexp should no longer inf.loop (rarely!),
and hence M-x ess-fix-miscellaneous should neither.
Changes/New Features in 13.05:
gretl (both editing and
sub-process interaction). A contribution of Ahmadou Dicko.
ess-tracebug is active).
ess-show-traceback and
C-c ~ is bound to ess-show-call-stack.
ess-swv-processing-command to control
weaving and tangling.
ess-default-style has been changed
(from DEFAULT) to RRR. Use something like
(setq ess-default-style 'DEFAULT) or
(setq ess-indent-level 2) in your ~/.emacs equivalent
before loading ESS, if you do not like this new “incompatible”
default style.
ess-use-tracebug’s default has been changed to
t. Set it to nil if you want to keep the previous behavior.
ess-debug-minor-mode and
ess-debug-minor-mode-map.
ess-tracebug-map is an alias to
ess-dev-map C-c C-t.
ess-bp-toggle-state (C-c C-t o)
can now be used during the debug session to toggle breakpoints on the fly
(suggestion by Ross Boylan).
ess-debug-flag-for-debugging and
ess-debug-unflag-for-debugging work correctly from the debugging
contexts. These commands also recognize non-exported functions for the
packages listed in ess-developer-packages (C-c C-t C-a).
ess-use-eldoc) has
become more sophisticated, and hence also more intruding in the interface
between the Statistics softare, e.g., R, and the user.
Note that you can turn off ElDoc, by placing (setq ess-use-eldoc nil)
in your ~/.emacs file, prior to loading ESS,
SAS-mode-hook appears!
ess-sas-edit-keys-toggle now defaults to t
since sas-indent-line is still broken, i.e. TAB is now
bound to ess-sas-tab-to-tab-stop by default
Changes/Bug Fixes in 12.09-2:
ess-switch-to-end-of-proc-buffer variable that controls
whether C-c C-z switches to the end of process buffer. The
default is t. You can use prefix argument to C-c C-z to
toggle this variable.
ess-eval-linewise that was causing emacs
to hang during R debugging with ess-eval-visibly equal to
t.
ess-eval-linewise that was causing emacs to recenter
the prompt in visible window
ess-switch-process that was causing
*new* selection to fail.
ess-local-process-name bug in R-dired.
ess-swv-PDF doesn’t ask for a command to run if
there is only one command in ess-swv-pdflatex-commands.
ess-swv-weave gained an universal argument to
allow for an interactive choice between available weavers (sweave,
knitr).
ess-eval-*-and-step functions go to next empty
line at eob, instead of staying at the last line.
Changes/New Features in 12.09-1:
ess-doc-map bound to C-c C-d; ess-extra-map bound
to C-c C-e; ess-dump-object-into-edit-buffer was moved on
C-c C-e C-d
ess-dev-map (including ess-tracebug and ess-developer)
moved on C-c C-t
C-c C-y is deprecated in favor of C-c C-z C-z
ess-describe-object-at-point
bound to C-c C-d C-e (repeat C-e or e to cycle). It
was inspired by Erik Iverson’s ess-R-object-tooltip. Customize
ess-describe-at-point-method to use tooltip instead of an
electric buffer.
ess-build-tags-for-directory
bound to C-c C-e C-t for building dialect specific tag
tables. After building tags use M-. to navigate to
function and objects definitions. By default C-c C-e C-t builds
tags based on imenu regular expressions and also include other common
languages .c, .o, .cpp etc. But it relies on external find
and etags commands. If ess-build-tags-command is defined
(for R), the inferior process is asked to build tags instead.
ess-switch-process offers *new* alternative
to start a new process instead of switching to one of the currently
running processes.
M-x rename-buffer command to
conveniently rename your process buffers.
proc stands for the
internal process name and dir stands for the directory where the
process was started in. The default is *proc*. For customization see
ess-gen-proc-buffer-name-function.
ess-eval-visibly-p is deprecated in favor of ess-eval-visibly.
nowait.
In addition to old nil and t values,
ess-eval-visibly accepts nowait for a visible evaluation
with no waiting for the process. See ess-eval-visibly for details
on evaluation patterns.
ess-switch-to-inferior-or-script-buffer command bound to C-c C-z
in both script and process buffers. If invoked form process buffer it
switches to the most recent buffer of the same dialect. It is a single
key command.
ess-roxy-re for fontification
of cases where the number of leading # differs from
ess-roxy-str.
ess-display-demos command bound to C-c C-d o and C-c C-d C-o
ess-help-web-search command bound to C-c C-d w and C-c C-d C-w
to facilitate interactive search of web resources. Implemented for R,
Stata and Julia. See also ess-help-web-search-command.
ess-swv-processor for the default processor.
noweb-* to ess-noweb-*.
ess-eval-chunk-and-step and ess-eval-chunk
bound to M-n C-c and M-n C-M-x to mirror standard ess
commands in C-c map.
ess-ac-R-argument-suffix to customize the insertion of trailing
"=". Defaults to “ = “.
Bug Fixes in 12.09-1:
comint-previous-prompt C-c C-p no longer stops on secondary prompt “+”.
options("editor") is now initialized to emacsclient
instead of the previous gnuclient. The user may need to add the
line (server-start) to the emacs initialization
file. emacsclient has been included with emacs since GNU Emacs
22.1.
ess-swv-stangle and ess-swv-sweave
functions.
R code injection.
It now happens only once at the start of the session.
Changes/New Features in 12.09:
ess-directory-containing-R) to tell ESS where
to look for the Rterm.exe executables. The name of the variable
and the values it can take are both in beta and subject to change. Prior
to this variable, ESS searched only in the default installation
directory. Setting this variable now tells ESS how to find
Rterm.exe executables when they are installed somewhere else.
M-x julia.
Full interaction interface, imenu and basic error referencing are available.
noweb-mode and noweb-font-lock-mode have
been renamed to ess-noweb-mode and
ess-noweb-font-lock-mode to avoid conflicts with the “real” noweb-mode.
ess-noweb interface.
ess-eval-region-*- functions:
ess-eval-region-or-function-or-paragraph
ess-eval-region-or-function-or-paragraph-and-step
ess-eval-region-or-line-and-step
Each of these functions first evaluates the region whenever the region is active.
ess-eval-*-and-step family of functions are now smarter,
and don’t step to end of buffer or end of chunk code (@) when at
the end of the code.
ess-handy-commands function is bound to C-c h
ess-blink-region to nil to deactivate; ess-blink-delay
gives the duration of the blink. Evaluated region is “blinked” in
highlight face.
ESS font-lock operates with predefined keywords. Default keywords are
listed in ess-R-font-lock-keywords and
inferior-R-font-lock-keywords, which see. The user can easily
customize those by adding new keywords. These variables can also be
interactively accessed and saved through ESS/Font-lock submenu.
Several new fontification keywords have been added. Most notably the keywords for highlighting of function calls, numbers and operators.
ess-use-auto-complete to
nil to deactivate.
ac-auto-start characters.
ac-source-filename to it.
ac-source-R now concatenates “ = “ to function arguments.
ess-developer and ess-tracebug commands are available by default
in ess-dev-map which is bound to C-c d in ESS and iESS maps.
eldoc truncates long lines whenever eldoc-echo-area-use-multiline-p
is non-nil (the default). Set this variable to t if you insist on multiline eldoc.
See also ess-eldoc-abbreviation-style.
plot and print to eliminated the
undesirable delay on first request.
comint-highlight-prompt face.
Sys.sleep(5) no longer stall emacs.
ess-X-post-run-hooks, which
are run at the end of subprocess initialization.
ess-arg-function-offset-new-line is now a list for all
the ESS indentation styles, which results in the following indentation
after an open “(”:
a <- some.function(other.function(
arg1,
arg2)
ess-sas-rtf-portrait and ess-sas-rtf-landscape.
Changes/Bug Fixes in 12.04-3:
M-x ess-version shows the svn revision even after make install
make target lisp, to build the lisp-only part, i.e., not building the docs.
Changes/New Features in 12.04-1:
inferior-STA-start-file.
inferior-STA-program-name is now “stata”
and can be customized.
Bug Fixes in 12.04-1:
ess-tracebug error handling.
ess-eldoc help string filtering
and improved argument caching.
M-x ess-version should work better.
Changes/New Features in 12.04:
ess-mode
no longer completes by default. If you want smart TAB completion
in R and S scripts, similarly to iESS behavior, set the variable
ess-tab-complete-in-script to t. Also see
ess-first-tab-never-complete for how to customize where first
TAB is allowed to complete.
ess-arg-function-offset-new-line
introduced in ESS(12.03) now accepts a list with the first element a
number to indicate that the offset should be computed from the indent of
the previous line. For example setting it to ’(2) results in:
a <- some.function(
arg1,
arg2)
Changes/New Features in 12.03:
ess-arg-function-offset-new-line
controlling for the indentation of lines immediately following open
’(’. This is useful to shift backwards function arguments after a long
function call expression:
a <- some.function(
arg1,
arg2)
instead of the old
a <- some.function(
arg1,
arg2)
If ’(’ is not followed by new line the behavior is unchanged:
a <- some.function(arg1,
arg2)
This variable should be set as part of indentation style lists, or in ess-mode hook.
yank(C-y) command accepts
double argument C-u C-u to paste commands only. It deletes any
lines not beginning with a prompt, and then removes the prompt from
those lines that remain. Useful to paste code from emails,
documentation, inferior ESS buffers or transcript files.
ess-use-eldoc, ess-eldoc-show-on-symbol,
ess-eldoc-abbreviation-style variables for how to change the default
behavior. Note: skeleton-pair-insert-maybe prohibits eldoc
display, on ( insertion.
ess-mode now indents and completes,
if there is nothing to indent. Set
ess-first-tab-never-completes-p to t to make TAB
never complete on first invocation. Completion mechanism is similar to
the completion in the inferior-ess-mode – a filename expansion
is tried, if not found ESS completes the symbol by querying the
process.
completion-at-point. Also in accordance with emacs conventions,
ESS doesn’t bind M-TAB for emacs 24 or higher. M-TAB calls the
default complete-symbol.
Auto
Completion mode http://cx4a.org/software/auto-complete . Three AC
sources ac-source-R-args, ac-source-R-objects and
ac-source-R are provided. The last one combines the previous two
and makes them play nicely together. Set ess-use-auto-complete to
t to start using it. Refer to documentation string of
ac-use-auto-complete for further information.
ess-funname.start, ess-function-arguments,
ess-get-object-at-point. Eldoc and auto-completion integration
are using this system.
ess-switch-to-end-of-ESS(C-c C-z),
and ess-switch-to-ESS(C-c C-y): Automatically start the
process whenever needed.
roxy knows about previewing text version of the
documentation. Bound to C-c C-e t.
ess-tracebug is now part of ESS:
New Features:
ess-tracebug-inject-source-p controls this behavior - if t,
always inject source reference, if 'function, inject only for
functions (this is the default), if nil, never inject.
During the source injection the value of ess-eval-visibly is
ignored.
ess-developer to evaluate R
code directly in the package environment and namespace. It can be
toggled on and off with C-c d t. When ess-developer is on
all ESS evaluation commands are redefined to evaluate code in
appropriate environments. Add package names to the list of your
development packages with C-d a, and remove with C-d
r. Source the current file with C-d s.Evaluation function which
depend on `ess-eval-region' ask for the package to source the
code into, ess-eval-function and alternatives search for the
function name in the development packages’ environment and namespace and
insert the definition accordingly. See the documentation section
“Developing with ESS/ESS developer” for more details.
New Features:
ess-switch-to-end-of-ESS.
This is consistent with emacs behavior help and other special buffers (breaking change).
special-mode-map as sugested by Sam Steingold.
ess-display-index bound to
i in help mode map.
ess-display-vignettes bound to
v in help mode map.
ess-display-help-in-browser bound to
w in help mode map. It depends on R’s browser
option.
ess-help-pop-to-buffer: if non-nil
ESS help buffers are given focus on display. The default is
t (breaking change).
ess-help-kill-bogus-buffers now defaults to
t. Beware, there may be instances where the default is unsatisfactory
such as debugging and/or during R development. Thanks to Ross Boylan for
making the suggestion, Sam Steingold for reminding us of this variable and
Martin Maechler for the warning.
IDO completing read functionality
for all the interactive requests. It uses ido completion
mechanism whenever available, and falls back on classical
completing-read otherwise. You can set ess-use-ido to nil if you
don’t want the IDO completion. See the documentation string of
ess-use-ido for more information about IDO and ESS
configuration.
`ess-handy-commands'
list. If ess-R-smart-operators is t `ess-smart-comma
also inserts “ “ after comma.
R: Variable `ess-handy-commands'
stores an alist of useful commands which are called by ess-smart-comma in
the inferior buffer.
Currently containing:
ess-change-directory
ess-display-index
ess-display-help-on-object
ess-display-vignettes
ess-execute-objects
ess-execute-search
ess-execute-screen-options
ess-install.packages
ess-library
ess-setRepositories
ess-sos
Handy commands: ess-library, ess-install.packages, etc -
ask for item with completion and execute the correspond
command. ess-sos is a interface to findFn function in
package sos. If package sos is not found, ask user for
interactive install.
ess-tracebug and developer status of ess-developer in all
associated buffers.
ess-completing-read mechanism: ESS uses
ido completions whenever possible. Variable ess-use-ido
controls whether to use ido completion or not. Active by default.
inferior-ess-S-prompt to
customize prompt detection regular expression in the inferior ESS
buffers. You can customize this variable to enhance comint navigation
(comint-previous-prompt and comint-next-prompt) the
inferior buffers.
R completion retrieval
(ess-R-complete-object-name) was rewritten and is faster now.
ess-process-get and ess-process-set.
> . This could be overwritten by setting
inferor-ess-primary-prompt.
R: Saved command history:
ess-history-file now accepts t (default), nil, or a
file name. By setting it to nil no command line history is saved
anymore. ess-history-directory now allows to have the history
all saved in one “central” file.
ess-get-words-from-vector and ess-command.
Next: Mailing Lists, Previous: New Features, Up: General Information
Please send bug reports, suggestions etc. to ESS-bugs@stat.math.ethz.ch
The easiest way to do this is within Emacs by typing
M-x ess-submit-bug-report
This also gives the maintainers valuable information about your installation which may help us to identify or even fix the bug.
If Emacs reports an error, backtraces can help us debug the problem. Type "M-x set-variable RET debug-on-error RET t RET". Then run the command that causes the error and you should see a *Backtrace* buffer containing debug information; send us that buffer.
Note that comments, suggestions, words of praise and large cash donations are also more than welcome.
Next: Authors, Previous: Reporting Bugs, Up: General Information
There is a mailing list for discussions and announcements relating to ESS. Join the list by sending an e-mail with "subscribe ess-help" (or "help") in the body to ess-help-request@stat.math.ethz.ch; contributions to the list may be mailed to ess-help@stat.math.ethz.ch. Rest assured, this is a fairly low-volume mailing list.
The purposes of the mailing list include
Previous: Mailing Lists, Up: General Information