diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2017-01-01 01:02:47 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2017-01-01 01:02:47 -0800 |
commit | 61848d2da32bb889d714fcddcb7dfd6dfa1b502d (patch) | |
tree | bec14e4a5ad9051ad310273db7fcc1d2164488b7 /doc/lispref/variables.texi | |
parent | bbb683f04aa0960422b12af5ef79679344fac19c (diff) | |
parent | 697167b5432a89db009238cf5cbddc61e69ad339 (diff) | |
download | emacs-61848d2da32bb889d714fcddcb7dfd6dfa1b502d.tar.gz emacs-61848d2da32bb889d714fcddcb7dfd6dfa1b502d.tar.bz2 emacs-61848d2da32bb889d714fcddcb7dfd6dfa1b502d.zip |
Merge from origin/emacs-25
697167b ; Improve wording of previous change in variables.texi
d7973e8 Document 'default-toplevel-value' and 'set-default-toplevel-v...
8b71826 Don't modify minibuffer variables globally
5b5e036 Revert to pre-25.1 behavior in ffap
19994a1 * lisp/ffap.el: Fix obsolete comment referencing ffap-bug.
3ace730 Attempt to fix 64-bit AIX build
f69bd79 Clarify usage of 'ediff-cleanup-hook' (Bug#24675)
c04ac8a Document that variable binding order is unspecified
272554a * lisp/desktop.el (desktop-buffers-not-to-save): Doc fix.
08de101 Fix M-x hints on Mac port
86a297a Work around reporting a dpi change in apply_xft_settings
cf1f985 ; lisp/skeleton.el (skeleton-insert): Fix typo in last change
9e1209d Amend the version number of CC Mode 5.33 -> 5.32.99. Don't m...
88cdf14 Improve skeleton docstrings
Diffstat (limited to 'doc/lispref/variables.texi')
-rw-r--r-- | doc/lispref/variables.texi | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index d9096dac018..4936f7a921a 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -223,6 +223,18 @@ Here is an example of this: @code{z} is bound to the old value of @result{} (1 2) @end group @end example + +On the other hand, the order of @emph{bindings} is unspecified: in the +following example, either 1 or 2 might be printed. + +@example +(let ((x 1) + (x 2)) + (print x)) +@end example + +Therefore, avoid binding a variable more than once in a single +@code{let} form. @end defspec @defspec let* (bindings@dots{}) forms@dots{} @@ -1630,6 +1642,45 @@ an ordinary evaluated argument. @end example @end defun + A variable can be let-bound (@pxref{Local Variables}) to a value. +This makes its global value shadowed by the binding; +@code{default-value} will then return the value from that binding, not +the global value, and @code{set-default} will be prevented from +setting the global value (it will change the let-bound value instead). +The following two functions allow to reference the global value even +if it's shadowed by a let-binding. + +@cindex top-level default value +@defun default-toplevel-value symbol +This function returns the @dfn{top-level} default value of +@var{symbol}, which is its value outside of any let-binding. +@end defun + +@example +@group +(defvar variable 'global-value) + @result{} variable +@end group +@group +(let ((variable 'let-binding)) + (default-value 'variable)) + @result{} let-binding +@end group +@group +(let ((variable 'let-binding)) + (default-toplevel-value 'variable)) + @result{} global-value +@end group +@end example + +@defun set-default-toplevel-value symbol value +This function sets the top-level default value of @var{symbol} to the +specified @var{value}. This comes in handy when you want to set the +global value of @var{symbol} regardless of whether your code runs in +the context of @var{symbol}'s let-binding. +@end defun + + @node File Local Variables @section File Local Variables @cindex file local variables |