summaryrefslogtreecommitdiff
path: root/doc/lispref/variables.texi
diff options
context:
space:
mode:
authorChong Yidong <cyd@gnu.org>2012-11-07 13:22:10 +0800
committerChong Yidong <cyd@gnu.org>2012-11-07 13:22:10 +0800
commit7c08f8ba7246ddd20f70e8306f646ac981a64f5a (patch)
treea993781f3c7748d3862c69b94aed6b6ae9f254d1 /doc/lispref/variables.texi
parent2ee1d59f5bea4a206595d621dcb63477461b7155 (diff)
downloademacs-7c08f8ba7246ddd20f70e8306f646ac981a64f5a.tar.gz
Document setf-local, defvar-local, and some doc updates for setf.
* doc/lispref/edebug.texi (Specification List): setf is no longer CL-only. * doc/lispref/lists.texi (List Elements, List Variables): Clarify descriptions of push and pop for generalized variables. * doc/lispref/variables.texi (Creating Buffer-Local): Document setq-local and defvar-local. (Setting Generalized Variables): Arrange table alphabetically.
Diffstat (limited to 'doc/lispref/variables.texi')
-rw-r--r--doc/lispref/variables.texi33
1 files changed, 24 insertions, 9 deletions
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index fb98b3cd035..c8451527d4f 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1262,6 +1262,13 @@ needed if you use the @var{local} argument to @code{add-hook} or
@code{remove-hook}.
@end deffn
+@defmac setq-local variable value
+This macro creates a buffer-local binding in the current buffer for
+@var{variable}, and gives it the buffer-local value @var{value}. It
+is equivalent to calling @code{make-local-variable} followed by
+@code{setq}. @var{variable} should be an unquoted symbol.
+@end defmac
+
@deffn Command make-variable-buffer-local variable
This function marks @var{variable} (a symbol) automatically
buffer-local, so that any subsequent attempt to set it will make it
@@ -1297,6 +1304,14 @@ on having separate values in separate buffers, then using
@code{make-variable-buffer-local} can be the best solution.
@end deffn
+@defmac defvar-local variable value &optional docstring
+This macro defines @var{variable} as a variable with initial value
+@var{value} and @var{docstring}, and marks it as automatically
+buffer-local. It is equivalent to calling @code{defvar} followed by
+@code{make-variable-buffer-local}. @var{variable} should be an
+unquoted symbol.
+@end defmac
+
@defun local-variable-p variable &optional buffer
This returns @code{t} if @var{variable} is buffer-local in buffer
@var{buffer} (which defaults to the current buffer); otherwise,
@@ -1948,7 +1963,6 @@ Attempting to assign them any other value will result in an error:
@error{} Wrong type argument: integerp, 1000.0
@end example
-@c FIXME? Not sure this is the right place for this section.
@node Generalized Variables
@section Generalized Variables
@@ -1958,7 +1972,6 @@ a regular Lisp variable. But the @sc{car}s and @sc{cdr}s of lists, elements
of arrays, properties of symbols, and many other locations are also
places where Lisp values are stored.
-@c FIXME? Not sure this is a useful analogy...
Generalized variables are analogous to ``lvalues'' in the C
language, where @samp{x = a[i]} gets an element from an array
and @samp{a[i] = x} stores an element using the same notation.
@@ -2006,14 +2019,16 @@ so there is no performance penalty for using it in compiled code.
A call to any of the following standard Lisp functions:
@smallexample
-car cdr nth nthcdr
-caar cadr cdar cddr
-aref elt get gethash
-symbol-function symbol-value symbol-plist
+aref cddr symbol-function
+car elt symbol-plist
+caar get symbol-value
+cadr gethash
+cdr nth
+cdar nthcdr
@end smallexample
@item
-The following Emacs-specific functions are also @code{setf}-able:
+A call to any of the following Emacs-specific functions:
@smallexample
default-value process-get
@@ -2030,8 +2045,8 @@ process-filter
@end itemize
@noindent
-Using any forms other than these in the @var{place} argument to
-@code{setf} will signal an error.
+@code{setf} signals an error if you pass a @var{place} form that it
+does not know how to handle.
@c And for cl-lib's cl-getf.
Note that for @code{nthcdr}, the list argument of the function must