aboutsummaryrefslogtreecommitdiffstats
path: root/lispref
diff options
context:
space:
mode:
authorKim F. Storm2002-05-13 19:04:27 +0000
committerKim F. Storm2002-05-13 19:04:27 +0000
commitc152cd2a2015be5659746aea7e713499c65edbee (patch)
tree608b770ca1974da7da5846a567c6a1c39dfe8ec4 /lispref
parent4e792dbd39e6229446931c11803e3a40952236c3 (diff)
downloademacs-c152cd2a2015be5659746aea7e713499c65edbee.tar.gz
emacs-c152cd2a2015be5659746aea7e713499c65edbee.zip
(Intro to Buffer-Local): Updated warning and
example relating to changing buffer inside let.
Diffstat (limited to 'lispref')
-rw-r--r--lispref/variables.texi21
1 files changed, 11 insertions, 10 deletions
diff --git a/lispref/variables.texi b/lispref/variables.texi
index df816f85b68..d7a5929bcfb 100644
--- a/lispref/variables.texi
+++ b/lispref/variables.texi
@@ -1185,10 +1185,10 @@ be changed with @code{setq} in any buffer; the only way to change it is
1185with @code{setq-default}. 1185with @code{setq-default}.
1186 1186
1187 @strong{Warning:} When a variable has buffer-local values in one or 1187 @strong{Warning:} When a variable has buffer-local values in one or
1188more buffers, you can get Emacs very confused by binding the variable 1188more buffers, binding the variable with @code{let} and changing to a
1189with @code{let}, changing to a different current buffer in which a 1189different current buffer in which a different binding is in
1190different binding is in effect, and then exiting the @code{let}. This 1190effect, and then exiting the @code{let}, the variable may not be
1191can scramble the values of the buffer-local and default bindings. 1191restored to the value it had before the @code{let}.
1192 1192
1193 To preserve your sanity, avoid using a variable in that way. If you 1193 To preserve your sanity, avoid using a variable in that way. If you
1194use @code{save-excursion} around each piece of code that changes to a 1194use @code{save-excursion} around each piece of code that changes to a
@@ -1197,22 +1197,23 @@ different current buffer, you will not have this problem
1197 1197
1198@example 1198@example
1199@group 1199@group
1200(setq foo 'b) 1200(setq foo 'g)
1201(set-buffer "a") 1201(set-buffer "a")
1202(make-local-variable 'foo) 1202(make-local-variable 'foo)
1203@end group 1203@end group
1204(setq foo 'a) 1204(setq foo 'a)
1205(let ((foo 'temp)) 1205(let ((foo 'temp))
1206 ;; foo @result{} 'temp ; @r{let binding in buffer @samp{a}}
1206 (set-buffer "b") 1207 (set-buffer "b")
1208 ;; foo @result{} 'g ; @r{the global value since foo is not local in @samp{b}}
1207 @var{body}@dots{}) 1209 @var{body}@dots{})
1208@group 1210@group
1209foo @result{} 'a ; @r{The old buffer-local value from buffer @samp{a}} 1211foo @result{} 'a ; @r{we are still in buffer @samp{b}, but exiting the let}
1210 ; @r{is now the default value.} 1212 ; @r{restored the local value in buffer @samp{a}}
1211@end group 1213@end group
1212@group 1214@group
1213(set-buffer "a") 1215(set-buffer "a") ; @r{This can be seen here:}
1214foo @result{} 'temp ; @r{The local @code{let} value that should be gone} 1216foo @result{} 'a ; @r{we are back to the local value in buffer @samp{a}}
1215 ; @r{is now the buffer-local value in buffer @samp{a}.}
1216@end group 1217@end group
1217@end example 1218@end example
1218 1219