]> git.eshelyaron.com Git - emacs.git/commitdiff
Improved `eval` documentation
authorMattias Engdegård <mattiase@acm.org>
Mon, 23 Oct 2023 09:12:33 +0000 (11:12 +0200)
committerMattias Engdegård <mattiase@acm.org>
Mon, 23 Oct 2023 12:48:42 +0000 (14:48 +0200)
Prompted by Michael Heerdegen.

* src/eval.c (Feval):
* doc/lispref/eval.texi (Eval):
Be more precise about the LEXICAL argument.

doc/lispref/eval.texi
src/eval.c

index ea35d4d38c7a9322eabc8e324f47c900d1d57572..8af0ee49d026b94aef749610a97bff0870c890ed 100644 (file)
@@ -740,16 +740,17 @@ type of the @var{form} object determines how it is evaluated.
 @xref{Forms}.
 
 The argument @var{lexical} specifies the scoping rule for local
-variables (@pxref{Variable Scoping}).  If it is omitted or @code{nil},
-that means to evaluate @var{form} using the default dynamic scoping
-rule.  If it is @code{t}, that means to use the lexical scoping rule.
+variables (@pxref{Variable Scoping}).  If it is @code{t}, that means
+to evaluate @var{form} using lexical scoping; this is the recommended
+value.  If it is omitted or @code{nil}, that means to use the old
+dynamic-only variable scoping rule.
 
 The value of @var{lexical} can also be a non-empty list specifying a
 particular @dfn{lexical environment} for lexical bindings; however,
 this feature is only useful for specialized purposes, such as in Emacs
 Lisp debuggers.  Each member of the list is either a cons cell which
 represents a lexical symbol-value pair, or a symbol representing a
-dynamically bound variable.
+(special) variable that would use dynamic scoping if bound.
 
 Since @code{eval} is a function, the argument expression that appears
 in a call to @code{eval} is evaluated twice: once as preparation before
index 9268b65aa852212d178c91f99249c6cb547c108c..f5397e9fb72737cddeb4c3a77aa244b67a1860b8 100644 (file)
@@ -2364,9 +2364,13 @@ static Lisp_Object list_of_t;  /* Never-modified constant containing (t).  */
 
 DEFUN ("eval", Feval, Seval, 1, 2, 0,
        doc: /* Evaluate FORM and return its value.
-If LEXICAL is t, evaluate using lexical scoping.
-LEXICAL can also be an actual lexical environment, in the form of an
-alist mapping symbols to their value.  */)
+If LEXICAL is `t', evaluate using lexical binding by default.
+This is the recommended value.
+
+If absent or `nil', use dynamic scoping only.
+
+LEXICAL can also represent an actual lexical environment; see the Info
+node `(elisp)Eval' for details.  */)
   (Lisp_Object form, Lisp_Object lexical)
 {
   specpdl_ref count = SPECPDL_INDEX ();