summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2016-12-26 19:10:49 +0200
committerEli Zaretskii <eliz@gnu.org>2016-12-26 19:10:49 +0200
commitd7973e808d54f1adf5224589c5cf770bb17453d2 (patch)
tree07bdabeaafff0cf5c674f2c0d6cd2d809e1d204d
parent8b7182626e3dac556d1fc38a1193e7d5e386488e (diff)
downloademacs-d7973e808d54f1adf5224589c5cf770bb17453d2.tar.gz
Document 'default-toplevel-value' and 'set-default-toplevel-value'
* doc/lispref/variables.texi (Default Value): Document 'default-toplevel-value' and 'set-default-toplevel-value'.
-rw-r--r--doc/lispref/variables.texi38
1 files changed, 38 insertions, 0 deletions
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index ba31f856369..e231cbdfec1 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1580,6 +1580,44 @@ an ordinary evaluated argument.
@end example
@end defun
+ A variable can be let-bound (@pxref{Local Variables}) to a
+non-default value; in that case, @code{default-value} will return the
+value from that binding, not the global value, and @code{set-default}
+will be prevented from setting the global value. The following two
+functions allow to reference the global value even if it's masked 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