emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 9e002ef9c00 4/4: Modernise text about using dynamic variables


From: Mattias Engdegård
Subject: master 9e002ef9c00 4/4: Modernise text about using dynamic variables
Date: Mon, 23 Oct 2023 08:50:26 -0400 (EDT)

branch: master
commit 9e002ef9c00448965dab6f55626c74f423a2863c
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>

    Modernise text about using dynamic variables
    
    * doc/lispref/variables.texi (Dynamic Binding Tips):
    Give more useful advice.
---
 doc/lispref/variables.texi | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 3b271526923..f575b188fc6 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1242,17 +1242,18 @@ the old value off the stack, and puts it in the value 
cell.
   Dynamic binding is a powerful feature, as it allows programs to
 refer to variables that are not defined within their local textual
 scope.  However, if used without restraint, this can also make
-programs hard to understand.  There are two clean ways to use this
-technique:
+programs hard to understand.
+
+First, choose the variable's name to avoid name conflicts
+(@pxref{Coding Conventions}).
 
 @itemize @bullet
 @item
-If a variable has no global definition, use it as a local variable
-only within a binding construct, such as the body of the @code{let}
-form where the variable was bound.  If this convention is followed
-consistently throughout a program, the value of the variable will not
-affect, nor be affected by, any uses of the same variable symbol
-elsewhere in the program.
+If the variable is only used when locally bound to a value, declare it
+special using a @code{defvar} form without an initial value, and never
+assign to it unless it is already bound.  This way, any attempt to
+refer to the variable when unbound will result in a
+@code{void-variable} error.
 
 @item
 Otherwise, define the variable with @code{defvar}, @code{defconst}
@@ -1260,8 +1261,7 @@ Otherwise, define the variable with @code{defvar}, 
@code{defconst}
 Definitions}).  Usually, the definition should be at top-level in an
 Emacs Lisp file.  As far as possible, it should include a
 documentation string which explains the meaning and purpose of the
-variable.  You should also choose the variable's name to avoid name
-conflicts (@pxref{Coding Conventions}).
+variable.
 
 Then you can bind the variable anywhere in a program, knowing reliably
 what the effect will be.  Wherever you encounter the variable, it will



reply via email to

[Prev in Thread] Current Thread [Next in Thread]