From d7973e808d54f1adf5224589c5cf770bb17453d2 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 26 Dec 2016 19:10:49 +0200 Subject: Document 'default-toplevel-value' and 'set-default-toplevel-value' * doc/lispref/variables.texi (Default Value): Document 'default-toplevel-value' and 'set-default-toplevel-value'. --- doc/lispref/variables.texi | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) 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 -- cgit v1.2.3