-@c -*-coding: iso-latin-1-*-
+@c -*-coding: utf-8-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990-1994, 2001-2012 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 2001-2015 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
-@node Introduction, Lisp Data Types, Top, Top
-@comment node-name, next, previous, up
+@node Introduction
@chapter Introduction
Most of the GNU Emacs text editor is written in the programming
language called Emacs Lisp. You can write new code in Emacs Lisp and
install it as an extension to the editor. However, Emacs Lisp is more
-than a mere ``extension language''; it is a full computer programming
+than a mere extension language; it is a full computer programming
language in its own right. You can use it as you would any other
programming language.
* Lisp History:: Emacs Lisp is descended from Maclisp.
* Conventions:: How the manual is formatted.
* Version Info:: Which Emacs version is running?
-* Acknowledgements:: The authors, editors, and sponsors of this manual.
+* Acknowledgments:: The authors, editors, and sponsors of this manual.
@end menu
@node Caveats
@cindex Common Lisp
Dozens of Lisp implementations have been built over the years, each
with its own idiosyncrasies. Many of them were inspired by Maclisp,
-which was written in the 1960s at MIT's Project MAC. Eventually the
+which was written in the 1960s at MIT's Project MAC@. Eventually the
implementers of the descendants of Maclisp came together and developed a
standard for Lisp systems, called Common Lisp. In the meantime, Gerry
Sussman and Guy Steele at MIT developed a simplified but very powerful
@pindex cl
A certain amount of Common Lisp emulation is available via the
-@file{cl} library. @xref{Top,, Overview, cl, Common Lisp Extensions}.
+@file{cl-lib} library. @xref{Top,, Overview, cl, Common Lisp Extensions}.
Emacs Lisp is not at all influenced by Scheme; but the GNU project has
an implementation of Scheme, called Guile. We use it in all new GNU
printer'' refer to those routines in Lisp that convert textual
representations of Lisp objects into actual Lisp objects, and vice
versa. @xref{Printed Representation}, for more details. You, the
-person reading this manual, are thought of as ``the programmer'' and are
-addressed as ``you''. ``The user'' is the person who uses Lisp
+person reading this manual, are thought of as the programmer and are
+addressed as ``you''. The user is the person who uses Lisp
programs, including those you write.
@cindex typographic conventions
@result{} c
@end example
- Sometimes to help describe one form we show another form that
+ To help describe one form, we sometimes show another form that
produces identical results. The exact equivalence of two forms is
indicated with @samp{@equiv{}}.
@cindex buffer text notation
Some examples describe modifications to the contents of a buffer, by
-showing the ``before'' and ``after'' versions of the text. These
+showing the before and after versions of the text. These
examples show the contents of the buffer in question between two lines
of dashes containing the buffer name. In addition, @samp{@point{}}
indicates the location of point. (The symbol for point, of course, is
The keyword @code{&rest} (which must be followed by a single
argument name) indicates that any number of arguments can follow. The
-single argument name following @code{&rest} will receive, as its
+single argument name following @code{&rest} receives, as its
value, a list of all the remaining arguments passed to the function.
Do not write @code{&rest} when you call the function.
@end example
@end defun
- Any argument whose name contains the name of a type (e.g.,
-@var{integer}, @var{integer1} or @var{buffer}) is expected to be of that
-type. A plural of a type (such as @var{buffers}) often means a list of
-objects of that type. Arguments named @var{object} may be of any type.
-(@xref{Lisp Data Types}, for a list of Emacs object types.) Arguments
-with other sorts of names (e.g., @var{new-file}) are discussed
-specifically in the description of the function. In some sections,
-features common to the arguments of several functions are described at
-the beginning.
+ By convention, any argument whose name contains the name of a type
+(e.g., @var{integer}, @var{integer1} or @var{buffer}) is expected to
+be of that type. A plural of a type (such as @var{buffers}) often
+means a list of objects of that type. An argument named @var{object}
+may be of any type. (For a list of Emacs object types, @pxref{Lisp
+Data Types}.) An argument with any other sort of name
+(e.g., @var{new-file}) is specific to the function; if the function
+has a documentation string, the type of the argument should be
+described there (@pxref{Documentation}).
- @xref{Lambda Expressions}, for a more complete description of optional
-and rest arguments.
+ @xref{Lambda Expressions}, for a more complete description of
+arguments modified by @code{&optional} and @code{&rest}.
Command, macro, and special form descriptions have the same format,
-but the word `Function' is replaced by `Command', `Macro', or `Special
-Form', respectively. Commands are simply functions that may be called
-interactively; macros process their arguments differently from functions
-(the arguments are not evaluated), but are presented the same way.
+but the word @samp{Function} is replaced by @samp{Command},
+@samp{Macro}, or @samp{Special Form}, respectively. Commands are
+simply functions that may be called interactively; macros process
+their arguments differently from functions (the arguments are not
+evaluated), but are presented the same way.
The descriptions of macros and special forms use a more complex
notation to specify optional and repeated arguments, because they can
arguments are grouped into additional levels of list structure. Here
is an example:
-@defspec count-loop (@var{var} [@var{from} @var{to} [@var{inc}]]) @var{body}@dots{}
+@defspec count-loop (var [from to [inc]]) body@dots{}
This imaginary special form implements a loop that executes the
@var{body} forms and then increments the variable @var{var} on each
iteration. On the first iteration, the variable has the value
@cindex variable descriptions
@cindex option descriptions
- A @dfn{variable} is a name that can hold a value. Although nearly
-all variables can be set by the user, certain variables exist
-specifically so that users can change them; these are called @dfn{user
-options}. Ordinary variables and user options are described using a
-format like that for functions except that there are no arguments.
+ A @dfn{variable} is a name that can be @dfn{bound} (or @dfn{set}) to
+an object. The object to which a variable is bound is called a
+@dfn{value}; we say also that variable holds that value.
+Although nearly all variables can be set by the user, certain
+variables exist specifically so that users can change them; these are
+called @dfn{user options}. Ordinary variables and user options are
+described using a format like that for functions, except that there
+are no arguments.
Here is a description of the imaginary @code{electric-future-map}
-variable.@refill
+variable.
@defvar electric-future-map
The value of this variable is a full keymap used by Electric Command
have not yet thought about executing.
@end defvar
- User option descriptions have the same format, but `Variable' is
-replaced by `User Option'.
+ User option descriptions have the same format, but @samp{Variable}
+is replaced by @samp{User Option}.
@node Version Info
@section Version Information
@smallexample
@group
(emacs-version)
- @result{} "GNU Emacs 23.1 (i686-pc-linux-gnu, GTK+ Version 2.14.4)
- of 2009-06-01 on cyd.mit.edu"
+ @result{} "GNU Emacs 24.5.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.16)
+ of 2015-06-01"
@end group
@end smallexample
@defvar emacs-build-time
The value of this variable indicates the time at which Emacs was
-built. It is a list of three integers, like the value of
+built. It is a list of four integers, like the value of
@code{current-time} (@pxref{Time of Day}).
@example
@group
emacs-build-time
- @result{} (18846 52016 156039)
+ @result{} (20614 63694 515336 438000)
@end group
@end example
@end defvar
The value of this variable is the version of Emacs being run. It is a
string such as @code{"23.1.1"}. The last number in this string is not
really part of the Emacs release version number; it is incremented
-each time you build Emacs in any given directory. A value with four
+each time Emacs is built in any given directory. A value with four
numeric components, such as @code{"22.0.91.1"}, indicates an
unreleased test version.
@end defvar
23.1, the value is 1.
@end defvar
-@node Acknowledgements
-@section Acknowledgements
+@node Acknowledgments
+@section Acknowledgments
This manual was originally written by Robert Krawitz, Bil Lewis, Dan
LaLiberte, Richard@tie{}M. Stallman and Chris Welty, the volunteers of
Harder, George Hartzell, Nathan Hess, Masayuki Ida, Dan Jacobson, Jak
Kirman, Bob Knighten, Frederick M. Korz, Joe Lammens, Glenn M. Lewis,
K. Richard Magill, Brian Marick, Roland McGrath, Stefan Monnier, Skip
-Montanaro, John Gardiner Myers, Thomas A. Peterson, Francesco Potorti,
+Montanaro, John Gardiner Myers, Thomas A. Peterson, Francesco Potortì,
Friedrich Pukelsheim, Arnold D. Robbins, Raul Rockwell, Jason Rumney,
-Per Starbäck, Shinichirou Sugou, Kimmo Suominen, Edward Tharp, Bill
+Per Starbäck, Shinichirou Sugou, Kimmo Suominen, Edward Tharp, Bill
Trost, Rickard Westman, Jean White, Eduard Wiebe, Matthew Wilding,
Carl Witty, Dale Worley, Rusty Wright, and David D. Zuhn.
For a more complete list of contributors, please see the relevant
-ChangeLog file in the Emacs sources.
+change log entries in the Emacs source repository.