@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998 Free Software Foundation, Inc.
+@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 2002, 2003, 2004,
+@c 2005, 2006 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../info/eval
@node Evaluation, Control Structures, Symbols, Top
perform symbol function indirection explicitly.
@c Emacs 19 feature
+@defun indirect-function function &optional noerror
@anchor{Definition of indirect-function}
-@defun indirect-function function
This function returns the meaning of @var{function} as a function. If
@var{function} is a symbol, then it finds @var{function}'s function
definition and starts over with that value. If @var{function} is not a
symbol, then it returns @var{function} itself.
-This function signals a @code{void-function} error if the final
-symbol is unbound and a @code{cyclic-function-indirection} error if
-there is a loop in the chain of symbols.
+This function signals a @code{void-function} error if the final symbol
+is unbound and optional argument @var{noerror} is @code{nil} or
+omitted. Otherwise, if @var{noerror} is non-@code{nil}, it returns
+@code{nil} if the final symbol is unbound.
+
+It signals a @code{cyclic-function-indirection} error if there is a
+loop in the chain of symbols.
Here is how you could define @code{indirect-function} in Lisp:
@code{max-lisp-eval-depth} (see below).
@end defun
-@anchor{Definition of eval-region}
@deffn Command eval-region start end &optional stream read-function
+@anchor{Definition of eval-region}
This function evaluates the forms in the current buffer in the region
defined by the positions @var{start} and @var{end}. It reads forms from
the region and calls @code{eval} on them until the end of the region is
@code{eval-current-buffer} is an alias for this command.
@end deffn
-@anchor{Definition of max-lisp-eval-depth}
@defvar max-lisp-eval-depth
+@anchor{Definition of max-lisp-eval-depth}
This variable defines the maximum depth allowed in calls to @code{eval},
@code{apply}, and @code{funcall} before an error is signaled (with error
message @code{"Lisp nesting exceeds max-lisp-eval-depth"}).