aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorPaul Eggert2017-01-01 01:02:47 -0800
committerPaul Eggert2017-01-01 01:02:47 -0800
commit61848d2da32bb889d714fcddcb7dfd6dfa1b502d (patch)
treebec14e4a5ad9051ad310273db7fcc1d2164488b7 /doc
parentbbb683f04aa0960422b12af5ef79679344fac19c (diff)
parent697167b5432a89db009238cf5cbddc61e69ad339 (diff)
downloademacs-61848d2da32bb889d714fcddcb7dfd6dfa1b502d.tar.gz
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')
-rw-r--r--doc/lispref/variables.texi51
-rw-r--r--doc/misc/cl.texi5
-rw-r--r--doc/misc/ediff.texi11
3 files changed, 64 insertions, 3 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
223 @result{} (1 2) 223 @result{} (1 2)
224@end group 224@end group
225@end example 225@end example
226
227On the other hand, the order of @emph{bindings} is unspecified: in the
228following example, either 1 or 2 might be printed.
229
230@example
231(let ((x 1)
232 (x 2))
233 (print x))
234@end example
235
236Therefore, avoid binding a variable more than once in a single
237@code{let} form.
226@end defspec 238@end defspec
227 239
228@defspec let* (bindings@dots{}) forms@dots{} 240@defspec let* (bindings@dots{}) forms@dots{}
@@ -1630,6 +1642,45 @@ an ordinary evaluated argument.
1630@end example 1642@end example
1631@end defun 1643@end defun
1632 1644
1645 A variable can be let-bound (@pxref{Local Variables}) to a value.
1646This makes its global value shadowed by the binding;
1647@code{default-value} will then return the value from that binding, not
1648the global value, and @code{set-default} will be prevented from
1649setting the global value (it will change the let-bound value instead).
1650The following two functions allow to reference the global value even
1651if it's shadowed by a let-binding.
1652
1653@cindex top-level default value
1654@defun default-toplevel-value symbol
1655This function returns the @dfn{top-level} default value of
1656@var{symbol}, which is its value outside of any let-binding.
1657@end defun
1658
1659@example
1660@group
1661(defvar variable 'global-value)
1662 @result{} variable
1663@end group
1664@group
1665(let ((variable 'let-binding))
1666 (default-value 'variable))
1667 @result{} let-binding
1668@end group
1669@group
1670(let ((variable 'let-binding))
1671 (default-toplevel-value 'variable))
1672 @result{} global-value
1673@end group
1674@end example
1675
1676@defun set-default-toplevel-value symbol value
1677This function sets the top-level default value of @var{symbol} to the
1678specified @var{value}. This comes in handy when you want to set the
1679global value of @var{symbol} regardless of whether your code runs in
1680the context of @var{symbol}'s let-binding.
1681@end defun
1682
1683
1633@node File Local Variables 1684@node File Local Variables
1634@section File Local Variables 1685@section File Local Variables
1635@cindex file local variables 1686@cindex file local variables
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index 4f15cf53d4a..5af41a4465e 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -1179,6 +1179,11 @@ behavior. (@code{point} and @code{point-marker} are equivalent
1179as @code{setf} places; each will accept either an integer or a 1179as @code{setf} places; each will accept either an integer or a
1180marker as the stored value.) 1180marker as the stored value.)
1181 1181
1182Like in the case of @code{let}, the @var{value} forms are evaluated in
1183the order they appear, but the order of bindings is unspecified.
1184Therefore, avoid binding the same @var{place} more than once in a
1185single @code{cl-letf} form.
1186
1182Since generalized variables look like lists, @code{let}'s shorthand 1187Since generalized variables look like lists, @code{let}'s shorthand
1183of using @samp{foo} for @samp{(foo nil)} as a @var{binding} would 1188of using @samp{foo} for @samp{(foo nil)} as a @var{binding} would
1184be ambiguous in @code{cl-letf} and is not allowed. 1189be ambiguous in @code{cl-letf} and is not allowed.
diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi
index 376aaeea46e..896a6041e86 100644
--- a/doc/misc/ediff.texi
+++ b/doc/misc/ediff.texi
@@ -1247,9 +1247,14 @@ merged (see @code{ediff-cleanup-hook}, below).
1247@vindex ediff-cleanup-hook 1247@vindex ediff-cleanup-hook
1248This hook is run just before @code{ediff-quit-hook}. This is a good 1248This hook is run just before @code{ediff-quit-hook}. This is a good
1249place to do various cleanups, such as deleting the variant buffers. 1249place to do various cleanups, such as deleting the variant buffers.
1250Ediff provides a function, @code{ediff-janitor}, as one such possible 1250Ediff provides a helper function, @code{ediff-janitor}, that you can
1251hook, which you can add to @code{ediff-cleanup-hook} with 1251invoke from a private hook function. For example:
1252@code{add-hook}. 1252
1253@example
1254(defun my-ediff-janitor ()
1255 (ediff-janitor nil nil))
1256(add-hook 'ediff-cleanup-hook #'my-ediff-janitor)
1257@end example
1253 1258
1254@findex ediff-janitor 1259@findex ediff-janitor
1255This function kills buffers A, B, and, possibly, C, if these buffers aren't 1260This function kills buffers A, B, and, possibly, C, if these buffers aren't