*** empty log message ***
[bpt/emacs.git] / lispref / variables.texi
CommitLineData
e6512bcf
RS
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
f9f59935 3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998 Free Software Foundation, Inc.
e6512bcf
RS
4@c See the file elisp.texi for copying conditions.
5@setfilename ../info/variables
6@node Variables, Functions, Control Structures, Top
7@chapter Variables
8@cindex variable
9
10 A @dfn{variable} is a name used in a program to stand for a value.
11Nearly all programming languages have variables of some sort. In the
12text of a Lisp program, variables are written using the syntax for
13symbols.
14
15 In Lisp, unlike most programming languages, programs are represented
16primarily as Lisp objects and only secondarily as text. The Lisp
17objects used for variables are symbols: the symbol name is the variable
18name, and the variable's value is stored in the value cell of the
19symbol. The use of a symbol as a variable is independent of its use as
20a function name. @xref{Symbol Components}.
21
22 The Lisp objects that constitute a Lisp program determine the textual
f57ddf67 23form of the program---it is simply the read syntax for those Lisp
e6512bcf
RS
24objects. This is why, for example, a variable in a textual Lisp program
25is written using the read syntax for the symbol that represents the
26variable.
27
28@menu
29* Global Variables:: Variable values that exist permanently, everywhere.
30* Constant Variables:: Certain "variables" have values that never change.
31* Local Variables:: Variable values that exist only temporarily.
32* Void Variables:: Symbols that lack values.
33* Defining Variables:: A definition says a symbol is used as a variable.
aa9b77f6
RS
34* Tips for Defining:: How to avoid bad results from quitting
35 within the code to initialize a variable.
e6512bcf
RS
36* Accessing Variables:: Examining values of variables whose names
37 are known only at run time.
38* Setting Variables:: Storing new values in variables.
39* Variable Scoping:: How Lisp chooses among local and global values.
40* Buffer-Local Variables:: Variable values in effect only in one buffer.
969fe9b5
RS
41* Frame-Local Variables:: Variable values in effect only in one frame.
42* Future Local Variables:: New kinds of local values we might add some day.
e6512bcf
RS
43@end menu
44
45@node Global Variables
46@section Global Variables
47@cindex global variable
48
49 The simplest way to use a variable is @dfn{globally}. This means that
50the variable has just one value at a time, and this value is in effect
51(at least for the moment) throughout the Lisp system. The value remains
52in effect until you specify a new one. When a new value replaces the
53old one, no trace of the old value remains in the variable.
54
55 You specify a value for a symbol with @code{setq}. For example,
56
57@example
58(setq x '(a b))
59@end example
60
61@noindent
62gives the variable @code{x} the value @code{(a b)}. Note that
63@code{setq} does not evaluate its first argument, the name of the
64variable, but it does evaluate the second argument, the new value.
65
66 Once the variable has a value, you can refer to it by using the symbol
67by itself as an expression. Thus,
68
69@example
70@group
71x @result{} (a b)
72@end group
73@end example
74
75@noindent
76assuming the @code{setq} form shown above has already been executed.
77
969fe9b5
RS
78 If you do set the same variable again, the new value replaces the old
79one:
e6512bcf
RS
80
81@example
82@group
83x
84 @result{} (a b)
85@end group
86@group
87(setq x 4)
88 @result{} 4
89@end group
90@group
91x
92 @result{} 4
93@end group
94@end example
95
96@node Constant Variables
8241495d 97@section Variables that Never Change
e6512bcf
RS
98@vindex nil
99@vindex t
100@kindex setting-constant
101
969fe9b5
RS
102 In Emacs Lisp, certain symbols normally evaluate to themselves. These
103include @code{nil} and @code{t}, as well as any symbol whose name starts
104with @samp{:}. These symbols cannot be rebound, nor can their values be
105changed. Any attempt to set or bind @code{nil} or @code{t} signals a
106@code{setting-constant} error. The same is true for a symbol whose name
8241495d
RS
107starts with @samp{:} (if it is interned in the standard obarray), except
108that you are allowed to set such a symbol to itself.
e6512bcf
RS
109
110@example
111@group
112nil @equiv{} 'nil
113 @result{} nil
114@end group
115@group
116(setq nil 500)
117@error{} Attempt to set constant symbol: nil
118@end group
119@end example
120
969fe9b5 121@defvar keyword-symbols-constant-flag
a9f0a989 122@tindex keyword-symbols-constant-flag
969fe9b5
RS
123If this variable is @code{nil}, you are allowed to set and bind symbols
124whose names start with @samp{:} as you wish. This is to make it
125possible to run old Lisp programs which do that.
126@end defvar
127
e6512bcf
RS
128@node Local Variables
129@section Local Variables
130@cindex binding local variables
131@cindex local variables
132@cindex local binding
133@cindex global binding
134
135 Global variables have values that last until explicitly superseded
136with new values. Sometimes it is useful to create variable values that
969fe9b5 137exist temporarily---only until a certain part of the program finishes.
e6512bcf
RS
138These values are called @dfn{local}, and the variables so used are
139called @dfn{local variables}.
140
141 For example, when a function is called, its argument variables receive
142new local values that last until the function exits. The @code{let}
143special form explicitly establishes new local values for specified
144variables; these last until exit from the @code{let} form.
145
146@cindex shadowing of variables
147 Establishing a local value saves away the previous value (or lack of
148one) of the variable. When the life span of the local value is over,
149the previous value is restored. In the mean time, we say that the
150previous value is @dfn{shadowed} and @dfn{not visible}. Both global and
151local values may be shadowed (@pxref{Scope}).
152
153 If you set a variable (such as with @code{setq}) while it is local,
154this replaces the local value; it does not alter the global value, or
969fe9b5 155previous local values, that are shadowed. To model this behavior, we
e6512bcf
RS
156speak of a @dfn{local binding} of the variable as well as a local value.
157
158 The local binding is a conceptual place that holds a local value.
159Entry to a function, or a special form such as @code{let}, creates the
160local binding; exit from the function or from the @code{let} removes the
161local binding. As long as the local binding lasts, the variable's value
162is stored within it. Use of @code{setq} or @code{set} while there is a
163local binding stores a different value into the local binding; it does
164not create a new binding.
165
166 We also speak of the @dfn{global binding}, which is where
167(conceptually) the global value is kept.
168
169@cindex current binding
170 A variable can have more than one local binding at a time (for
171example, if there are nested @code{let} forms that bind it). In such a
172case, the most recently created local binding that still exists is the
969fe9b5
RS
173@dfn{current binding} of the variable. (This rule is called
174@dfn{dynamic scoping}; see @ref{Variable Scoping}.) If there are no
175local bindings, the variable's global binding is its current binding.
176We sometimes call the current binding the @dfn{most-local existing
177binding}, for emphasis. Ordinary evaluation of a symbol always returns
178the value of its current binding.
e6512bcf
RS
179
180 The special forms @code{let} and @code{let*} exist to create
181local bindings.
182
183@defspec let (bindings@dots{}) forms@dots{}
f57ddf67 184This special form binds variables according to @var{bindings} and then
e6512bcf
RS
185evaluates all of the @var{forms} in textual order. The @code{let}-form
186returns the value of the last form in @var{forms}.
187
188Each of the @var{bindings} is either @w{(i) a} symbol, in which case
189that symbol is bound to @code{nil}; or @w{(ii) a} list of the form
190@code{(@var{symbol} @var{value-form})}, in which case @var{symbol} is
191bound to the result of evaluating @var{value-form}. If @var{value-form}
192is omitted, @code{nil} is used.
193
194All of the @var{value-form}s in @var{bindings} are evaluated in the
f9f59935
RS
195order they appear and @emph{before} binding any of the symbols to them.
196Here is an example of this: @code{Z} is bound to the old value of
197@code{Y}, which is 2, not the new value of @code{Y}, which is 1.
e6512bcf
RS
198
199@example
200@group
201(setq Y 2)
202 @result{} 2
203@end group
204@group
205(let ((Y 1)
206 (Z Y))
207 (list Y Z))
208 @result{} (1 2)
209@end group
210@end example
211@end defspec
212
213@defspec let* (bindings@dots{}) forms@dots{}
214This special form is like @code{let}, but it binds each variable right
215after computing its local value, before computing the local value for
216the next variable. Therefore, an expression in @var{bindings} can
217reasonably refer to the preceding symbols bound in this @code{let*}
218form. Compare the following example with the example above for
219@code{let}.
220
221@example
222@group
223(setq Y 2)
224 @result{} 2
225@end group
226@group
227(let* ((Y 1)
228 (Z Y)) ; @r{Use the just-established value of @code{Y}.}
229 (list Y Z))
230 @result{} (1 1)
231@end group
232@end example
233@end defspec
234
f57ddf67 235 Here is a complete list of the other facilities that create local
e6512bcf
RS
236bindings:
237
238@itemize @bullet
239@item
240Function calls (@pxref{Functions}).
241
242@item
243Macro calls (@pxref{Macros}).
244
245@item
246@code{condition-case} (@pxref{Errors}).
247@end itemize
248
bfe721d1 249 Variables can also have buffer-local bindings (@pxref{Buffer-Local
a9f0a989
RS
250Variables}) and frame-local bindings (@pxref{Frame-Local Variables}); a
251few variables have terminal-local bindings (@pxref{Multiple Displays}).
252These kinds of bindings work somewhat like ordinary local bindings, but
253they are localized depending on ``where'' you are in Emacs, rather than
254localized in time.
bfe721d1 255
e6512bcf
RS
256@defvar max-specpdl-size
257@cindex variable limit error
258@cindex evaluation error
259@cindex infinite recursion
a9f0a989 260This variable defines the limit on the total number of local variable
e6512bcf
RS
261bindings and @code{unwind-protect} cleanups (@pxref{Nonlocal Exits})
262that are allowed before signaling an error (with data @code{"Variable
263binding depth exceeds max-specpdl-size"}).
264
a9f0a989 265This limit, with the associated error when it is exceeded, is one way
e6512bcf 266that Lisp avoids infinite recursion on an ill-defined function.
a9f0a989 267@code{max-lisp-eval-depth} provides another limit on depth of nesting.
e6512bcf 268@xref{Eval}.
a9f0a989
RS
269
270The default value is 600. Entry to the Lisp debugger increases the
271value, if there is little room left, to make sure the debugger itself
272has room to execute.
e6512bcf
RS
273@end defvar
274
275@node Void Variables
276@section When a Variable is ``Void''
277@kindex void-variable
278@cindex void variable
279
280 If you have never given a symbol any value as a global variable, we
281say that that symbol's global value is @dfn{void}. In other words, the
282symbol's value cell does not have any Lisp object in it. If you try to
283evaluate the symbol, you get a @code{void-variable} error rather than
284a value.
285
286 Note that a value of @code{nil} is not the same as void. The symbol
287@code{nil} is a Lisp object and can be the value of a variable just as any
288other object can be; but it is @emph{a value}. A void variable does not
289have any value.
290
291 After you have given a variable a value, you can make it void once more
292using @code{makunbound}.
293
294@defun makunbound symbol
f9f59935 295This function makes the current variable binding of @var{symbol} void.
e6512bcf 296Subsequent attempts to use this symbol's value as a variable will signal
f9f59935 297the error @code{void-variable}, unless and until you set it again.
e6512bcf
RS
298
299@code{makunbound} returns @var{symbol}.
300
301@example
302@group
969fe9b5 303(makunbound 'x) ; @r{Make the global value of @code{x} void.}
e6512bcf
RS
304 @result{} x
305@end group
306@group
307x
308@error{} Symbol's value as variable is void: x
309@end group
310@end example
311
312If @var{symbol} is locally bound, @code{makunbound} affects the most
313local existing binding. This is the only way a symbol can have a void
314local binding, since all the constructs that create local bindings
315create them with values. In this case, the voidness lasts at most as
316long as the binding does; when the binding is removed due to exit from
969fe9b5
RS
317the construct that made it, the previous local or global binding is
318reexposed as usual, and the variable is no longer void unless the newly
319reexposed binding was void all along.
e6512bcf
RS
320
321@smallexample
322@group
323(setq x 1) ; @r{Put a value in the global binding.}
324 @result{} 1
325(let ((x 2)) ; @r{Locally bind it.}
326 (makunbound 'x) ; @r{Void the local binding.}
327 x)
328@error{} Symbol's value as variable is void: x
329@end group
330@group
331x ; @r{The global binding is unchanged.}
332 @result{} 1
333
334(let ((x 2)) ; @r{Locally bind it.}
335 (let ((x 3)) ; @r{And again.}
336 (makunbound 'x) ; @r{Void the innermost-local binding.}
337 x)) ; @r{And refer: it's void.}
338@error{} Symbol's value as variable is void: x
339@end group
340
341@group
342(let ((x 2))
343 (let ((x 3))
344 (makunbound 'x)) ; @r{Void inner binding, then remove it.}
345 x) ; @r{Now outer @code{let} binding is visible.}
346 @result{} 2
347@end group
348@end smallexample
349@end defun
350
351 A variable that has been made void with @code{makunbound} is
352indistinguishable from one that has never received a value and has
353always been void.
354
355 You can use the function @code{boundp} to test whether a variable is
356currently void.
357
358@defun boundp variable
359@code{boundp} returns @code{t} if @var{variable} (a symbol) is not void;
360more precisely, if its current binding is not void. It returns
361@code{nil} otherwise.
362
363@smallexample
364@group
365(boundp 'abracadabra) ; @r{Starts out void.}
366 @result{} nil
367@end group
368@group
369(let ((abracadabra 5)) ; @r{Locally bind it.}
370 (boundp 'abracadabra))
371 @result{} t
372@end group
373@group
374(boundp 'abracadabra) ; @r{Still globally void.}
375 @result{} nil
376@end group
377@group
378(setq abracadabra 5) ; @r{Make it globally nonvoid.}
379 @result{} 5
380@end group
381@group
382(boundp 'abracadabra)
383 @result{} t
384@end group
385@end smallexample
386@end defun
387
388@node Defining Variables
389@section Defining Global Variables
f57ddf67 390@cindex variable definition
e6512bcf
RS
391
392 You may announce your intention to use a symbol as a global variable
f57ddf67
RS
393with a @dfn{variable definition}: a special form, either @code{defconst}
394or @code{defvar}.
e6512bcf
RS
395
396 In Emacs Lisp, definitions serve three purposes. First, they inform
397people who read the code that certain symbols are @emph{intended} to be
398used a certain way (as variables). Second, they inform the Lisp system
399of these things, supplying a value and documentation. Third, they
400provide information to utilities such as @code{etags} and
401@code{make-docfile}, which create data bases of the functions and
402variables in a program.
403
404 The difference between @code{defconst} and @code{defvar} is primarily
f9f59935
RS
405a matter of intent, serving to inform human readers of whether the value
406should ever change. Emacs Lisp does not restrict the ways in which a
407variable can be used based on @code{defconst} or @code{defvar}
f57ddf67 408declarations. However, it does make a difference for initialization:
e6512bcf
RS
409@code{defconst} unconditionally initializes the variable, while
410@code{defvar} initializes it only if it is void.
411
f9f59935 412@ignore
e6512bcf
RS
413 One would expect user option variables to be defined with
414@code{defconst}, since programs do not change them. Unfortunately, this
415has bad results if the definition is in a library that is not preloaded:
416@code{defconst} would override any prior value when the library is
417loaded. Users would like to be able to set user options in their init
418files, and override the default values given in the definitions. For
419this reason, user options must be defined with @code{defvar}.
f9f59935 420@end ignore
e6512bcf
RS
421
422@defspec defvar symbol [value [doc-string]]
f9f59935
RS
423This special form defines @var{symbol} as a variable and can also
424initialize and document it. The definition informs a person reading
425your code that @var{symbol} is used as a variable that might be set or
426changed. Note that @var{symbol} is not evaluated; the symbol to be
e6512bcf
RS
427defined must appear explicitly in the @code{defvar}.
428
f9f59935
RS
429If @var{symbol} is void and @var{value} is specified, @code{defvar}
430evaluates it and sets @var{symbol} to the result. But if @var{symbol}
431already has a value (i.e., it is not void), @var{value} is not even
432evaluated, and @var{symbol}'s value remains unchanged. If @var{value}
433is omitted, the value of @var{symbol} is not changed in any case.
e6512bcf 434
a9f0a989
RS
435If @var{symbol} has a buffer-local binding in the current buffer,
436@code{defvar} operates on the default value, which is buffer-independent,
437not the current (buffer-local) binding. It sets the default value if
438the default value is void. @xref{Buffer-Local Variables}.
439
bfe721d1
KH
440When you evaluate a top-level @code{defvar} form with @kbd{C-M-x} in
441Emacs Lisp mode (@code{eval-defun}), a special feature of
a9f0a989
RS
442@code{eval-defun} arranges to set the variable unconditionally, without
443testing whether its value is void.
e6512bcf
RS
444
445If the @var{doc-string} argument appears, it specifies the documentation
446for the variable. (This opportunity to specify documentation is one of
447the main benefits of defining the variable.) The documentation is
448stored in the symbol's @code{variable-documentation} property. The
449Emacs help functions (@pxref{Documentation}) look for this property.
450
451If the first character of @var{doc-string} is @samp{*}, it means that
452this variable is considered a user option. This lets users set the
969fe9b5 453variable conveniently using the commands @code{set-variable} and
f9f59935 454@code{edit-options}. However, it is better to use @code{defcustom}
969fe9b5 455instead of @code{defvar} for user option variables, so you can specify
f9f59935 456customization information. @xref{Customization}.
e6512bcf 457
f9f59935
RS
458Here are some examples. This form defines @code{foo} but does not
459initialize it:
e6512bcf
RS
460
461@example
462@group
463(defvar foo)
464 @result{} foo
465@end group
466@end example
467
f9f59935
RS
468This example initializes the value of @code{bar} to @code{23}, and gives
469it a documentation string:
e6512bcf
RS
470
471@example
472@group
473(defvar bar 23
474 "The normal weight of a bar.")
475 @result{} bar
476@end group
477@end example
478
479The following form changes the documentation string for @code{bar},
480making it a user option, but does not change the value, since @code{bar}
f9f59935
RS
481already has a value. (The addition @code{(1+ nil)} would get an error
482if it were evaluated, but since it is not evaluated, there is no error.)
e6512bcf
RS
483
484@example
485@group
f9f59935 486(defvar bar (1+ nil)
e6512bcf
RS
487 "*The normal weight of a bar.")
488 @result{} bar
489@end group
490@group
491bar
492 @result{} 23
493@end group
494@end example
495
496Here is an equivalent expression for the @code{defvar} special form:
497
498@example
499@group
500(defvar @var{symbol} @var{value} @var{doc-string})
501@equiv{}
502(progn
503 (if (not (boundp '@var{symbol}))
504 (setq @var{symbol} @var{value}))
25ef19c5
RS
505 (if '@var{doc-string}
506 (put '@var{symbol} 'variable-documentation '@var{doc-string}))
e6512bcf
RS
507 '@var{symbol})
508@end group
509@end example
510
511The @code{defvar} form returns @var{symbol}, but it is normally used
512at top level in a file where its value does not matter.
513@end defspec
514
515@defspec defconst symbol [value [doc-string]]
516This special form defines @var{symbol} as a value and initializes it.
f9f59935
RS
517It informs a person reading your code that @var{symbol} has a standard
518global value, established here, that should not be changed by the user
519or by other programs. Note that @var{symbol} is not evaluated; the
e6512bcf
RS
520symbol to be defined must appear explicitly in the @code{defconst}.
521
f9f59935
RS
522@code{defconst} always evaluates @var{value}, and sets the value of
523@var{symbol} to the result if @var{value} is given. If @var{symbol}
a9f0a989
RS
524does have a buffer-local binding in the current buffer, @code{defconst}
525sets the default value, not the buffer-local value. (But you should not
526be making buffer-local bindings for a symbol that is defined with
527@code{defconst}.)
e6512bcf
RS
528
529Here, @code{pi} is a constant that presumably ought not to be changed
530by anyone (attempts by the Indiana State Legislature notwithstanding).
531As the second form illustrates, however, this is only advisory.
532
533@example
534@group
535(defconst pi 3.1415 "Pi to five places.")
536 @result{} pi
537@end group
538@group
539(setq pi 3)
540 @result{} pi
541@end group
542@group
543pi
544 @result{} 3
545@end group
546@end example
547@end defspec
548
549@defun user-variable-p variable
550@cindex user option
f57ddf67 551This function returns @code{t} if @var{variable} is a user option---a
e6512bcf
RS
552variable intended to be set by the user for customization---and
553@code{nil} otherwise. (Variables other than user options exist for the
554internal purposes of Lisp programs, and users need not know about them.)
555
556User option variables are distinguished from other variables by the
557first character of the @code{variable-documentation} property. If the
558property exists and is a string, and its first character is @samp{*},
559then the variable is a user option.
560@end defun
561
113613ea 562@kindex variable-interactive
e6512bcf 563 If a user option variable has a @code{variable-interactive} property,
bfe721d1
KH
564the @code{set-variable} command uses that value to control reading the
565new value for the variable. The property's value is used as if it were
8241495d
RS
566specified in @code{interactive} (@pxref{Using Interactive}). However,
567this feature is largely obsoleted by @code{defcustom}
568(@pxref{Customization}).
e6512bcf 569
b22f3a19 570 @strong{Warning:} If the @code{defconst} and @code{defvar} special
e6512bcf
RS
571forms are used while the variable has a local binding, they set the
572local binding's value; the global binding is not changed. This is not
573what we really want. To prevent it, use these special forms at top
574level in a file, where normally no local binding is in effect, and make
575sure to load the file before making a local binding for the variable.
576
aa9b77f6
RS
577@node Tips for Defining
578@section Tips for Defining Variables Robustly
579
580 When defining and initializing a variable that holds a complicated
581value (such as a keymap with bindings in it), it's best to put the
582entire computation of the value into the @code{defvar}, like this:
583
584@example
585(defvar my-mode-map
586 (let ((map (make-sparse-keymap)))
f9f59935 587 (define-key map "\C-c\C-a" 'my-command)
aa9b77f6
RS
588 @dots{}
589 map)
590 @var{docstring})
591@end example
592
593@noindent
594This method has several benefits. First, if the user quits while
595loading the file, the variable is either still uninitialized or
969fe9b5 596initialized properly, never in-between. If it is still uninitialized,
aa9b77f6
RS
597reloading the file will initialize it properly. Second, reloading the
598file once the variable is initialized will not alter it; that is
599important if the user has run hooks to alter part of the contents (such
600as, to rebind keys). Third, evaluating the @code{defvar} form with
601@kbd{C-M-x} @emph{will} reinitialize the map completely.
602
603 Putting so much code in the @code{defvar} form has one disadvantage:
604it puts the documentation string far away from the line which names the
605variable. Here's a safe way to avoid that:
606
607@example
608(defvar my-mode-map nil
609 @var{docstring})
8241495d 610(unless my-mode-map
aa9b77f6
RS
611 (let ((map (make-sparse-keymap)))
612 (define-key my-mode-map "\C-c\C-a" 'my-command)
613 @dots{}
614 (setq my-mode-map map)))
615@end example
616
617@noindent
618This has all the same advantages as putting the initialization inside
619the @code{defvar}, except that you must type @kbd{C-M-x} twice, once on
620each form, if you do want to reinitialize the variable.
621
622 But be careful not to write the code like this:
623
624@example
625(defvar my-mode-map nil
626 @var{docstring})
8241495d 627(unless my-mode-map
aa9b77f6
RS
628 (setq my-mode-map (make-sparse-keymap))
629 (define-key my-mode-map "\C-c\C-a" 'my-command)
630 @dots{})
631@end example
632
633@noindent
969fe9b5
RS
634This code sets the variable, then alters it, but it does so in more than
635one step. If the user quits just after the @code{setq}, that leaves the
636variable neither correctly initialized nor void nor @code{nil}. Once
637that happens, reloading the file will not initialize the variable; it
638will remain incomplete.
aa9b77f6 639
e6512bcf
RS
640@node Accessing Variables
641@section Accessing Variable Values
642
643 The usual way to reference a variable is to write the symbol which
644names it (@pxref{Symbol Forms}). This requires you to specify the
645variable name when you write the program. Usually that is exactly what
646you want to do. Occasionally you need to choose at run time which
647variable to reference; then you can use @code{symbol-value}.
648
649@defun symbol-value symbol
650This function returns the value of @var{symbol}. This is the value in
651the innermost local binding of the symbol, or its global value if it
652has no local bindings.
653
654@example
655@group
656(setq abracadabra 5)
657 @result{} 5
658@end group
659@group
660(setq foo 9)
661 @result{} 9
662@end group
663
664@group
665;; @r{Here the symbol @code{abracadabra}}
666;; @r{is the symbol whose value is examined.}
667(let ((abracadabra 'foo))
668 (symbol-value 'abracadabra))
669 @result{} foo
670@end group
671
672@group
673;; @r{Here the value of @code{abracadabra},}
674;; @r{which is @code{foo},}
675;; @r{is the symbol whose value is examined.}
676(let ((abracadabra 'foo))
677 (symbol-value abracadabra))
678 @result{} 9
679@end group
680
681@group
682(symbol-value 'abracadabra)
683 @result{} 5
684@end group
685@end example
686
969fe9b5
RS
687A @code{void-variable} error is signaled if the current binding of
688@var{symbol} is void.
e6512bcf
RS
689@end defun
690
691@node Setting Variables
692@section How to Alter a Variable Value
693
694 The usual way to change the value of a variable is with the special
695form @code{setq}. When you need to compute the choice of variable at
696run time, use the function @code{set}.
697
698@defspec setq [symbol form]@dots{}
699This special form is the most common method of changing a variable's
700value. Each @var{symbol} is given a new value, which is the result of
701evaluating the corresponding @var{form}. The most-local existing
702binding of the symbol is changed.
703
704@code{setq} does not evaluate @var{symbol}; it sets the symbol that you
705write. We say that this argument is @dfn{automatically quoted}. The
706@samp{q} in @code{setq} stands for ``quoted.''
707
708The value of the @code{setq} form is the value of the last @var{form}.
709
710@example
711@group
712(setq x (1+ 2))
713 @result{} 3
714@end group
715x ; @r{@code{x} now has a global value.}
716 @result{} 3
717@group
718(let ((x 5))
719 (setq x 6) ; @r{The local binding of @code{x} is set.}
720 x)
721 @result{} 6
722@end group
723x ; @r{The global value is unchanged.}
724 @result{} 3
725@end example
726
727Note that the first @var{form} is evaluated, then the first
728@var{symbol} is set, then the second @var{form} is evaluated, then the
729second @var{symbol} is set, and so on:
730
731@example
732@group
733(setq x 10 ; @r{Notice that @code{x} is set before}
734 y (1+ x)) ; @r{the value of @code{y} is computed.}
735 @result{} 11
736@end group
737@end example
738@end defspec
739
740@defun set symbol value
741This function sets @var{symbol}'s value to @var{value}, then returns
742@var{value}. Since @code{set} is a function, the expression written for
743@var{symbol} is evaluated to obtain the symbol to set.
744
745The most-local existing binding of the variable is the binding that is
f57ddf67 746set; shadowed bindings are not affected.
e6512bcf
RS
747
748@example
749@group
750(set one 1)
751@error{} Symbol's value as variable is void: one
752@end group
753@group
754(set 'one 1)
755 @result{} 1
756@end group
757@group
758(set 'two 'one)
759 @result{} one
760@end group
761@group
762(set two 2) ; @r{@code{two} evaluates to symbol @code{one}.}
763 @result{} 2
764@end group
765@group
766one ; @r{So it is @code{one} that was set.}
767 @result{} 2
768(let ((one 1)) ; @r{This binding of @code{one} is set,}
769 (set 'one 3) ; @r{not the global value.}
770 one)
771 @result{} 3
772@end group
773@group
774one
775 @result{} 2
776@end group
777@end example
778
f57ddf67
RS
779If @var{symbol} is not actually a symbol, a @code{wrong-type-argument}
780error is signaled.
781
782@example
783(set '(x y) 'z)
784@error{} Wrong type argument: symbolp, (x y)
785@end example
786
e6512bcf
RS
787Logically speaking, @code{set} is a more fundamental primitive than
788@code{setq}. Any use of @code{setq} can be trivially rewritten to use
789@code{set}; @code{setq} could even be defined as a macro, given the
790availability of @code{set}. However, @code{set} itself is rarely used;
f57ddf67
RS
791beginners hardly need to know about it. It is useful only for choosing
792at run time which variable to set. For example, the command
e6512bcf
RS
793@code{set-variable}, which reads a variable name from the user and then
794sets the variable, needs to use @code{set}.
795
796@cindex CL note---@code{set} local
797@quotation
f57ddf67 798@b{Common Lisp note:} In Common Lisp, @code{set} always changes the
f9f59935
RS
799symbol's ``special'' or dynamic value, ignoring any lexical bindings.
800In Emacs Lisp, all variables and all bindings are dynamic, so @code{set}
e6512bcf
RS
801always affects the most local existing binding.
802@end quotation
803@end defun
804
22697dac
KH
805 One other function for setting a variable is designed to add
806an element to a list if it is not already present in the list.
807
808@defun add-to-list symbol element
809This function sets the variable @var{symbol} by consing @var{element}
810onto the old value, if @var{element} is not already a member of that
bfe721d1
KH
811value. It returns the resulting list, whether updated or not. The
812value of @var{symbol} had better be a list already before the call.
813
814The argument @var{symbol} is not implicitly quoted; @code{add-to-list}
815is an ordinary function, like @code{set} and unlike @code{setq}. Quote
816the argument yourself if that is what you want.
969fe9b5 817@end defun
22697dac
KH
818
819Here's a scenario showing how to use @code{add-to-list}:
820
821@example
822(setq foo '(a b))
823 @result{} (a b)
824
825(add-to-list 'foo 'c) ;; @r{Add @code{c}.}
826 @result{} (c a b)
827
828(add-to-list 'foo 'b) ;; @r{No effect.}
829 @result{} (c a b)
830
831foo ;; @r{@code{foo} was changed.}
832 @result{} (c a b)
833@end example
22697dac
KH
834
835 An equivalent expression for @code{(add-to-list '@var{var}
836@var{value})} is this:
837
838@example
839(or (member @var{value} @var{var})
840 (setq @var{var} (cons @var{value} @var{var})))
841@end example
842
e6512bcf
RS
843@node Variable Scoping
844@section Scoping Rules for Variable Bindings
845
f9f59935 846 A given symbol @code{foo} can have several local variable bindings,
e6512bcf
RS
847established at different places in the Lisp program, as well as a global
848binding. The most recently established binding takes precedence over
849the others.
850
851@cindex scope
852@cindex extent
853@cindex dynamic scoping
854 Local bindings in Emacs Lisp have @dfn{indefinite scope} and
855@dfn{dynamic extent}. @dfn{Scope} refers to @emph{where} textually in
8241495d 856the source code the binding can be accessed. ``Indefinite scope'' means
e6512bcf
RS
857that any part of the program can potentially access the variable
858binding. @dfn{Extent} refers to @emph{when}, as the program is
8241495d 859executing, the binding exists. ``Dynamic extent'' means that the binding
e6512bcf
RS
860lasts as long as the activation of the construct that established it.
861
862 The combination of dynamic extent and indefinite scope is called
863@dfn{dynamic scoping}. By contrast, most programming languages use
864@dfn{lexical scoping}, in which references to a local variable must be
865located textually within the function or block that binds the variable.
866
867@cindex CL note---special variables
868@quotation
f9f59935
RS
869@b{Common Lisp note:} Variables declared ``special'' in Common Lisp are
870dynamically scoped, like all variables in Emacs Lisp.
e6512bcf
RS
871@end quotation
872
873@menu
874* Scope:: Scope means where in the program a value is visible.
875 Comparison with other languages.
876* Extent:: Extent means how long in time a value exists.
877* Impl of Scope:: Two ways to implement dynamic scoping.
878* Using Scoping:: How to use dynamic scoping carefully and avoid problems.
879@end menu
880
881@node Scope
882@subsection Scope
883
884 Emacs Lisp uses @dfn{indefinite scope} for local variable bindings.
885This means that any function anywhere in the program text might access a
886given binding of a variable. Consider the following function
887definitions:
888
889@example
890@group
891(defun binder (x) ; @r{@code{x} is bound in @code{binder}.}
892 (foo 5)) ; @r{@code{foo} is some other function.}
893@end group
894
895@group
f9f59935 896(defun user () ; @r{@code{x} is used ``free'' in @code{user}.}
e6512bcf
RS
897 (list x))
898@end group
899@end example
900
901 In a lexically scoped language, the binding of @code{x} in
902@code{binder} would never be accessible in @code{user}, because
903@code{user} is not textually contained within the function
8241495d 904@code{binder}. However, in dynamically-scoped Emacs Lisp, @code{user}
e6512bcf 905may or may not refer to the binding of @code{x} established in
8241495d 906@code{binder}, depending on the circumstances:
e6512bcf
RS
907
908@itemize @bullet
909@item
910If we call @code{user} directly without calling @code{binder} at all,
911then whatever binding of @code{x} is found, it cannot come from
912@code{binder}.
913
914@item
f9f59935 915If we define @code{foo} as follows and then call @code{binder}, then the
e6512bcf
RS
916binding made in @code{binder} will be seen in @code{user}:
917
918@example
919@group
920(defun foo (lose)
921 (user))
922@end group
923@end example
924
925@item
f9f59935
RS
926However, if we define @code{foo} as follows and then call @code{binder},
927then the binding made in @code{binder} @emph{will not} be seen in
928@code{user}:
e6512bcf
RS
929
930@example
931(defun foo (x)
932 (user))
933@end example
934
935@noindent
936Here, when @code{foo} is called by @code{binder}, it binds @code{x}.
937(The binding in @code{foo} is said to @dfn{shadow} the one made in
938@code{binder}.) Therefore, @code{user} will access the @code{x} bound
939by @code{foo} instead of the one bound by @code{binder}.
940@end itemize
941
f9f59935
RS
942Emacs Lisp uses dynamic scoping because simple implementations of
943lexical scoping are slow. In addition, every Lisp system needs to offer
944dynamic scoping at least as an option; if lexical scoping is the norm,
945there must be a way to specify dynamic scoping instead for a particular
946variable. It might not be a bad thing for Emacs to offer both, but
947implementing it with dynamic scoping only was much easier.
948
e6512bcf
RS
949@node Extent
950@subsection Extent
951
952 @dfn{Extent} refers to the time during program execution that a
953variable name is valid. In Emacs Lisp, a variable is valid only while
954the form that bound it is executing. This is called @dfn{dynamic
955extent}. ``Local'' or ``automatic'' variables in most languages,
956including C and Pascal, have dynamic extent.
957
958 One alternative to dynamic extent is @dfn{indefinite extent}. This
959means that a variable binding can live on past the exit from the form
960that made the binding. Common Lisp and Scheme, for example, support
961this, but Emacs Lisp does not.
962
963 To illustrate this, the function below, @code{make-add}, returns a
f9f59935
RS
964function that purports to add @var{n} to its own argument @var{m}. This
965would work in Common Lisp, but it does not do the job in Emacs Lisp,
966because after the call to @code{make-add} exits, the variable @code{n}
967is no longer bound to the actual argument 2.
e6512bcf
RS
968
969@example
970(defun make-add (n)
971 (function (lambda (m) (+ n m)))) ; @r{Return a function.}
972 @result{} make-add
973(fset 'add2 (make-add 2)) ; @r{Define function @code{add2}}
974 ; @r{with @code{(make-add 2)}.}
975 @result{} (lambda (m) (+ n m))
976(add2 4) ; @r{Try to add 2 to 4.}
977@error{} Symbol's value as variable is void: n
978@end example
979
980@cindex closures not available
981 Some Lisp dialects have ``closures'', objects that are like functions
982but record additional variable bindings. Emacs Lisp does not have
983closures.
984
985@node Impl of Scope
986@subsection Implementation of Dynamic Scoping
987@cindex deep binding
988
989 A simple sample implementation (which is not how Emacs Lisp actually
990works) may help you understand dynamic binding. This technique is
991called @dfn{deep binding} and was used in early Lisp systems.
992
969fe9b5
RS
993 Suppose there is a stack of bindings, which are variable-value pairs.
994At entry to a function or to a @code{let} form, we can push bindings
995onto the stack for the arguments or local variables created there. We
996can pop those bindings from the stack at exit from the binding
997construct.
e6512bcf
RS
998
999 We can find the value of a variable by searching the stack from top to
1000bottom for a binding for that variable; the value from that binding is
1001the value of the variable. To set the variable, we search for the
1002current binding, then store the new value into that binding.
1003
1004 As you can see, a function's bindings remain in effect as long as it
1005continues execution, even during its calls to other functions. That is
1006why we say the extent of the binding is dynamic. And any other function
1007can refer to the bindings, if it uses the same variables while the
1008bindings are in effect. That is why we say the scope is indefinite.
1009
1010@cindex shallow binding
1011 The actual implementation of variable scoping in GNU Emacs Lisp uses a
1012technique called @dfn{shallow binding}. Each variable has a standard
1013place in which its current value is always found---the value cell of the
1014symbol.
1015
1016 In shallow binding, setting the variable works by storing a value in
1017the value cell. Creating a new binding works by pushing the old value
f9f59935
RS
1018(belonging to a previous binding) onto a stack, and storing the new
1019local value in the value cell. Eliminating a binding works by popping
1020the old value off the stack, into the value cell.
e6512bcf
RS
1021
1022 We use shallow binding because it has the same results as deep
1023binding, but runs faster, since there is never a need to search for a
1024binding.
1025
1026@node Using Scoping
1027@subsection Proper Use of Dynamic Scoping
1028
1029 Binding a variable in one function and using it in another is a
1030powerful technique, but if used without restraint, it can make programs
1031hard to understand. There are two clean ways to use this technique:
1032
1033@itemize @bullet
1034@item
1035Use or bind the variable only in a few related functions, written close
1036together in one file. Such a variable is used for communication within
1037one program.
1038
1039You should write comments to inform other programmers that they can see
1040all uses of the variable before them, and to advise them not to add uses
1041elsewhere.
1042
1043@item
1044Give the variable a well-defined, documented meaning, and make all
1045appropriate functions refer to it (but not bind it or set it) wherever
1046that meaning is relevant. For example, the variable
1047@code{case-fold-search} is defined as ``non-@code{nil} means ignore case
1048when searching''; various search and replace functions refer to it
1049directly or through their subroutines, but do not bind or set it.
1050
1051Then you can bind the variable in other programs, knowing reliably what
1052the effect will be.
1053@end itemize
1054
bfe721d1
KH
1055 In either case, you should define the variable with @code{defvar}.
1056This helps other people understand your program by telling them to look
1057for inter-function usage. It also avoids a warning from the byte
1058compiler. Choose the variable's name to avoid name conflicts---don't
1059use short names like @code{x}.
1060
e6512bcf
RS
1061@node Buffer-Local Variables
1062@section Buffer-Local Variables
1063@cindex variables, buffer-local
1064@cindex buffer-local variables
1065
1066 Global and local variable bindings are found in most programming
8241495d 1067languages in one form or another. Emacs, however, also supports additional,
969fe9b5 1068unusual kinds of variable binding: @dfn{buffer-local} bindings, which
8241495d 1069apply only in one buffer, and @dfn{frame-local} bindings, which apply only in
969fe9b5
RS
1070one frame. Having different values for a variable in different buffers
1071and/or frames is an important customization method.
1072
1073 This section describes buffer-local bindings; for frame-local
1074bindings, see the following section, @ref{Frame-Local Variables}. (A few
1911e6e5 1075variables have bindings that are local to each terminal; see
969fe9b5 1076@ref{Multiple Displays}.)
e6512bcf
RS
1077
1078@menu
1079* Intro to Buffer-Local:: Introduction and concepts.
1080* Creating Buffer-Local:: Creating and destroying buffer-local bindings.
1081* Default Value:: The default value is seen in buffers
969fe9b5 1082 that don't have their own buffer-local values.
e6512bcf
RS
1083@end menu
1084
1085@node Intro to Buffer-Local
1086@subsection Introduction to Buffer-Local Variables
1087
1088 A buffer-local variable has a buffer-local binding associated with a
1089particular buffer. The binding is in effect when that buffer is
1090current; otherwise, it is not in effect. If you set the variable while
1091a buffer-local binding is in effect, the new value goes in that binding,
f9f59935
RS
1092so its other bindings are unchanged. This means that the change is
1093visible only in the buffer where you made it.
1094
1095 The variable's ordinary binding, which is not associated with any
1096specific buffer, is called the @dfn{default binding}. In most cases,
1097this is the global binding.
e6512bcf 1098
f9f59935
RS
1099 A variable can have buffer-local bindings in some buffers but not in
1100other buffers. The default binding is shared by all the buffers that
969fe9b5 1101don't have their own bindings for the variable. (This includes all
8241495d 1102newly-created buffers.) If you set the variable in a buffer that does
969fe9b5
RS
1103not have a buffer-local binding for it, this sets the default binding
1104(assuming there are no frame-local bindings to complicate the matter),
1105so the new value is visible in all the buffers that see the default
1106binding.
e6512bcf
RS
1107
1108 The most common use of buffer-local bindings is for major modes to change
1109variables that control the behavior of commands. For example, C mode and
1110Lisp mode both set the variable @code{paragraph-start} to specify that only
1111blank lines separate paragraphs. They do this by making the variable
1112buffer-local in the buffer that is being put into C mode or Lisp mode, and
969fe9b5 1113then setting it to the new value for that mode. @xref{Major Modes}.
e6512bcf
RS
1114
1115 The usual way to make a buffer-local binding is with
969fe9b5
RS
1116@code{make-local-variable}, which is what major mode commands typically
1117use. This affects just the current buffer; all other buffers (including
1118those yet to be created) will continue to share the default value unless
1119they are explicitly given their own buffer-local bindings.
e6512bcf
RS
1120
1121@cindex automatically buffer-local
1122 A more powerful operation is to mark the variable as
1123@dfn{automatically buffer-local} by calling
1124@code{make-variable-buffer-local}. You can think of this as making the
1125variable local in all buffers, even those yet to be created. More
1126precisely, the effect is that setting the variable automatically makes
1127the variable local to the current buffer if it is not already so. All
f9f59935 1128buffers start out by sharing the default value of the variable as usual,
969fe9b5 1129but setting the variable creates a buffer-local binding for the current
e6512bcf 1130buffer. The new value is stored in the buffer-local binding, leaving
969fe9b5
RS
1131the default binding untouched. This means that the default value cannot
1132be changed with @code{setq} in any buffer; the only way to change it is
1133with @code{setq-default}.
f9f59935
RS
1134
1135 @strong{Warning:} When a variable has buffer-local values in one or
1136more buffers, you can get Emacs very confused by binding the variable
1137with @code{let}, changing to a different current buffer in which a
1138different binding is in effect, and then exiting the @code{let}. This
1139can scramble the values of the buffer-local and default bindings.
1140
1141 To preserve your sanity, avoid using a variable in that way. If you
1142use @code{save-excursion} around each piece of code that changes to a
a9f0a989
RS
1143different current buffer, you will not have this problem
1144(@pxref{Excursions}). Here is an example of what to avoid:
e6512bcf
RS
1145
1146@example
1147@group
1148(setq foo 'b)
1149(set-buffer "a")
1150(make-local-variable 'foo)
1151@end group
1152(setq foo 'a)
1153(let ((foo 'temp))
1154 (set-buffer "b")
bfe721d1 1155 @var{body}@dots{})
e6512bcf
RS
1156@group
1157foo @result{} 'a ; @r{The old buffer-local value from buffer @samp{a}}
1158 ; @r{is now the default value.}
1159@end group
1160@group
1161(set-buffer "a")
f9f59935 1162foo @result{} 'temp ; @r{The local @code{let} value that should be gone}
e6512bcf
RS
1163 ; @r{is now the buffer-local value in buffer @samp{a}.}
1164@end group
1165@end example
1166
1167@noindent
1168But @code{save-excursion} as shown here avoids the problem:
1169
1170@example
1171@group
1172(let ((foo 'temp))
1173 (save-excursion
1174 (set-buffer "b")
1175 @var{body}@dots{}))
1176@end group
1177@end example
1178
1179 Note that references to @code{foo} in @var{body} access the
1180buffer-local binding of buffer @samp{b}.
1181
1182 When a file specifies local variable values, these become buffer-local
969fe9b5
RS
1183values when you visit the file. @xref{File Variables,,, emacs, The
1184GNU Emacs Manual}.
e6512bcf
RS
1185
1186@node Creating Buffer-Local
1187@subsection Creating and Deleting Buffer-Local Bindings
1188
1189@deffn Command make-local-variable variable
1190This function creates a buffer-local binding in the current buffer for
1191@var{variable} (a symbol). Other buffers are not affected. The value
1192returned is @var{variable}.
1193
1194@c Emacs 19 feature
1195The buffer-local value of @var{variable} starts out as the same value
1196@var{variable} previously had. If @var{variable} was void, it remains
1197void.
1198
1199@example
1200@group
1201;; @r{In buffer @samp{b1}:}
1202(setq foo 5) ; @r{Affects all buffers.}
1203 @result{} 5
1204@end group
1205@group
1206(make-local-variable 'foo) ; @r{Now it is local in @samp{b1}.}
1207 @result{} foo
1208@end group
1209@group
1210foo ; @r{That did not change}
1211 @result{} 5 ; @r{the value.}
1212@end group
1213@group
1214(setq foo 6) ; @r{Change the value}
1215 @result{} 6 ; @r{in @samp{b1}.}
1216@end group
1217@group
1218foo
1219 @result{} 6
1220@end group
1221
1222@group
1223;; @r{In buffer @samp{b2}, the value hasn't changed.}
1224(save-excursion
1225 (set-buffer "b2")
1226 foo)
1227 @result{} 5
1228@end group
1229@end example
e8505179
RS
1230
1231Making a variable buffer-local within a @code{let}-binding for that
969fe9b5
RS
1232variable does not work reliably, unless the buffer in which you do this
1233is not current either on entry to or exit from the @code{let}. This is
1234because @code{let} does not distinguish between different kinds of
1235bindings; it knows only which variable the binding was made for.
22697dac 1236
bfe721d1
KH
1237If the variable is terminal-local, this function signals an error. Such
1238variables cannot have buffer-local bindings as well. @xref{Multiple
1239Displays}.
1240
8241495d 1241@strong{Note:} Do not use @code{make-local-variable} for a hook
22697dac 1242variable. Instead, use @code{make-local-hook}. @xref{Hooks}.
e6512bcf
RS
1243@end deffn
1244
1245@deffn Command make-variable-buffer-local variable
1246This function marks @var{variable} (a symbol) automatically
1247buffer-local, so that any subsequent attempt to set it will make it
1248local to the current buffer at the time.
1249
969fe9b5
RS
1250A peculiar wrinkle of this feature is that binding the variable (with
1251@code{let} or other binding constructs) does not create a buffer-local
1252binding for it. Only setting the variable (with @code{set} or
1253@code{setq}) does so.
ab4b1835 1254
969fe9b5 1255The value returned is @var{variable}.
ab4b1835 1256
969fe9b5
RS
1257@strong{Warning:} Don't assume that you should use
1258@code{make-variable-buffer-local} for user-option variables, simply
1259because users @emph{might} want to customize them differently in
1260different buffers. Users can make any variable local, when they wish
1261to. It is better to leave the choice to them.
1262
1263The time to use @code{make-variable-buffer-local} is when it is crucial
1264that no two buffers ever share the same binding. For example, when a
1265variable is used for internal purposes in a Lisp program which depends
1266on having separate values in separate buffers, then using
1267@code{make-variable-buffer-local} can be the best solution.
e6512bcf
RS
1268@end deffn
1269
bfe721d1
KH
1270@defun local-variable-p variable &optional buffer
1271This returns @code{t} if @var{variable} is buffer-local in buffer
1272@var{buffer} (which defaults to the current buffer); otherwise,
1273@code{nil}.
1274@end defun
1275
e6512bcf
RS
1276@defun buffer-local-variables &optional buffer
1277This function returns a list describing the buffer-local variables in
969fe9b5
RS
1278buffer @var{buffer}. (If @var{buffer} is omitted, the current buffer is
1279used.) It returns an association list (@pxref{Association Lists}) in
1280which each element contains one buffer-local variable and its value.
1281However, when a variable's buffer-local binding in @var{buffer} is void,
1282then the variable appears directly in the resulting list.
e6512bcf
RS
1283
1284@example
1285@group
1286(make-local-variable 'foobar)
1287(makunbound 'foobar)
1288(make-local-variable 'bind-me)
1289(setq bind-me 69)
1290@end group
1291(setq lcl (buffer-local-variables))
1292 ;; @r{First, built-in variables local in all buffers:}
1293@result{} ((mark-active . nil)
a9f0a989 1294 (buffer-undo-list . nil)
e6512bcf
RS
1295 (mode-name . "Fundamental")
1296 @dots{}
1297@group
f9f59935
RS
1298 ;; @r{Next, non-built-in buffer-local variables.}
1299 ;; @r{This one is buffer-local and void:}
e6512bcf 1300 foobar
f9f59935 1301 ;; @r{This one is buffer-local and nonvoid:}
e6512bcf
RS
1302 (bind-me . 69))
1303@end group
1304@end example
1305
1306Note that storing new values into the @sc{cdr}s of cons cells in this
f9f59935 1307list does @emph{not} change the buffer-local values of the variables.
e6512bcf
RS
1308@end defun
1309
1310@deffn Command kill-local-variable variable
1311This function deletes the buffer-local binding (if any) for
1312@var{variable} (a symbol) in the current buffer. As a result, the
f9f59935
RS
1313default binding of @var{variable} becomes visible in this buffer. This
1314typically results in a change in the value of @var{variable}, since the
1315default value is usually different from the buffer-local value just
1316eliminated.
e6512bcf 1317
f9f59935
RS
1318If you kill the buffer-local binding of a variable that automatically
1319becomes buffer-local when set, this makes the default value visible in
1320the current buffer. However, if you set the variable again, that will
1321once again create a buffer-local binding for it.
e6512bcf
RS
1322
1323@code{kill-local-variable} returns @var{variable}.
f57ddf67
RS
1324
1325This function is a command because it is sometimes useful to kill one
1326buffer-local variable interactively, just as it is useful to create
1327buffer-local variables interactively.
e6512bcf
RS
1328@end deffn
1329
1330@defun kill-all-local-variables
1331This function eliminates all the buffer-local variable bindings of the
1332current buffer except for variables marked as ``permanent''. As a
1333result, the buffer will see the default values of most variables.
1334
1335This function also resets certain other information pertaining to the
1336buffer: it sets the local keymap to @code{nil}, the syntax table to the
a9f0a989
RS
1337value of @code{(standard-syntax-table)}, the case table to
1338@code{(standard-case-table)}, and the abbrev table to the value of
1339@code{fundamental-mode-abbrev-table}.
e6512bcf 1340
f9f59935 1341The very first thing this function does is run the normal hook
969fe9b5 1342@code{change-major-mode-hook} (see below).
f9f59935 1343
e6512bcf
RS
1344Every major mode command begins by calling this function, which has the
1345effect of switching to Fundamental mode and erasing most of the effects
1346of the previous major mode. To ensure that this does its job, the
1347variables that major modes set should not be marked permanent.
1348
1349@code{kill-all-local-variables} returns @code{nil}.
1350@end defun
1351
969fe9b5
RS
1352@defvar change-major-mode-hook
1353The function @code{kill-all-local-variables} runs this normal hook
1354before it does anything else. This gives major modes a way to arrange
1355for something special to be done if the user switches to a different
1356major mode. For best results, make this variable buffer-local, so that
1357it will disappear after doing its job and will not interfere with the
1358subsequent major mode. @xref{Hooks}.
1359@end defvar
1360
e6512bcf
RS
1361@c Emacs 19 feature
1362@cindex permanent local variable
f9f59935
RS
1363A buffer-local variable is @dfn{permanent} if the variable name (a
1364symbol) has a @code{permanent-local} property that is non-@code{nil}.
1365Permanent locals are appropriate for data pertaining to where the file
1366came from or how to save it, rather than with how to edit the contents.
e6512bcf
RS
1367
1368@node Default Value
1369@subsection The Default Value of a Buffer-Local Variable
1370@cindex default value
1371
1372 The global value of a variable with buffer-local bindings is also
1373called the @dfn{default} value, because it is the value that is in
969fe9b5
RS
1374effect whenever neither the current buffer nor the selected frame has
1375its own binding for the variable.
e6512bcf
RS
1376
1377 The functions @code{default-value} and @code{setq-default} access and
1378change a variable's default value regardless of whether the current
1379buffer has a buffer-local binding. For example, you could use
1380@code{setq-default} to change the default setting of
1381@code{paragraph-start} for most buffers; and this would work even when
f57ddf67 1382you are in a C or Lisp mode buffer that has a buffer-local value for
e6512bcf
RS
1383this variable.
1384
1385@c Emacs 19 feature
1386 The special forms @code{defvar} and @code{defconst} also set the
f9f59935 1387default value (if they set the variable at all), rather than any
969fe9b5 1388buffer-local or frame-local value.
e6512bcf
RS
1389
1390@defun default-value symbol
1391This function returns @var{symbol}'s default value. This is the value
969fe9b5
RS
1392that is seen in buffers and frames that do not have their own values for
1393this variable. If @var{symbol} is not buffer-local, this is equivalent
1394to @code{symbol-value} (@pxref{Accessing Variables}).
e6512bcf
RS
1395@end defun
1396
1397@c Emacs 19 feature
f57ddf67
RS
1398@defun default-boundp symbol
1399The function @code{default-boundp} tells you whether @var{symbol}'s
e6512bcf
RS
1400default value is nonvoid. If @code{(default-boundp 'foo)} returns
1401@code{nil}, then @code{(default-value 'foo)} would get an error.
1402
1403@code{default-boundp} is to @code{default-value} as @code{boundp} is to
1404@code{symbol-value}.
1405@end defun
1406
a9f0a989
RS
1407@defspec setq-default [symbol form]@dots{}
1408This special form gives each @var{symbol} a new default value, which is
1409the result of evaluating the corresponding @var{form}. It does not
1410evaluate @var{symbol}, but does evaluate @var{form}. The value of the
1411@code{setq-default} form is the value of the last @var{form}.
e6512bcf
RS
1412
1413If a @var{symbol} is not buffer-local for the current buffer, and is not
1414marked automatically buffer-local, @code{setq-default} has the same
1415effect as @code{setq}. If @var{symbol} is buffer-local for the current
1416buffer, then this changes the value that other buffers will see (as long
1417as they don't have a buffer-local value), but not the value that the
1418current buffer sees.
1419
1420@example
1421@group
1422;; @r{In buffer @samp{foo}:}
969fe9b5
RS
1423(make-local-variable 'buffer-local)
1424 @result{} buffer-local
e6512bcf
RS
1425@end group
1426@group
969fe9b5 1427(setq buffer-local 'value-in-foo)
e6512bcf
RS
1428 @result{} value-in-foo
1429@end group
1430@group
969fe9b5 1431(setq-default buffer-local 'new-default)
e6512bcf
RS
1432 @result{} new-default
1433@end group
1434@group
969fe9b5 1435buffer-local
e6512bcf
RS
1436 @result{} value-in-foo
1437@end group
1438@group
969fe9b5 1439(default-value 'buffer-local)
e6512bcf
RS
1440 @result{} new-default
1441@end group
1442
1443@group
1444;; @r{In (the new) buffer @samp{bar}:}
969fe9b5 1445buffer-local
e6512bcf
RS
1446 @result{} new-default
1447@end group
1448@group
969fe9b5 1449(default-value 'buffer-local)
e6512bcf
RS
1450 @result{} new-default
1451@end group
1452@group
969fe9b5 1453(setq buffer-local 'another-default)
e6512bcf
RS
1454 @result{} another-default
1455@end group
1456@group
969fe9b5 1457(default-value 'buffer-local)
e6512bcf
RS
1458 @result{} another-default
1459@end group
1460
1461@group
1462;; @r{Back in buffer @samp{foo}:}
969fe9b5 1463buffer-local
e6512bcf 1464 @result{} value-in-foo
969fe9b5 1465(default-value 'buffer-local)
e6512bcf
RS
1466 @result{} another-default
1467@end group
1468@end example
1469@end defspec
1470
1471@defun set-default symbol value
1472This function is like @code{setq-default}, except that @var{symbol} is
f9f59935 1473an ordinary evaluated argument.
e6512bcf
RS
1474
1475@example
1476@group
1477(set-default (car '(a b c)) 23)
1478 @result{} 23
1479@end group
1480@group
1481(default-value 'a)
1482 @result{} 23
1483@end group
1484@end example
1485@end defun
969fe9b5
RS
1486
1487@node Frame-Local Variables
1488@section Frame-Local Variables
1489
1490 Just as variables can have buffer-local bindings, they can also have
1491frame-local bindings. These bindings belong to one frame, and are in
1492effect when that frame is selected. Frame-local bindings are actually
1493frame parameters: you create a frame-local binding in a specific frame
1494by calling @code{modify-frame-parameters} and specifying the variable
1495name as the parameter name.
1496
1497 To enable frame-local bindings for a certain variable, call the function
1498@code{make-variable-frame-local}.
1499
a9f0a989 1500@deffn Command make-variable-frame-local variable
969fe9b5
RS
1501Enable the use of frame-local bindings for @var{variable}. This does
1502not in itself create any frame-local bindings for the variable; however,
1503if some frame already has a value for @var{variable} as a frame
1504parameter, that value automatically becomes a frame-local binding.
1505
a9f0a989
RS
1506If the variable is terminal-local, this function signals an error,
1507because such variables cannot have frame-local bindings as well.
1508@xref{Multiple Displays}. A few variables that are implemented
1509specially in Emacs can be (and usually are) buffer-local, but can never
1510be frame-local.
1511@end deffn
969fe9b5
RS
1512
1513 Buffer-local bindings take precedence over frame-local bindings. Thus,
1514consider a variable @code{foo}: if the current buffer has a buffer-local
1515binding for @code{foo}, that binding is active; otherwise, if the
1516selected frame has a frame-local binding for @code{foo}, that binding is
1517active; otherwise, the default binding of @code{foo} is active.
1518
1519 Here is an example. First we prepare a few bindings for @code{foo}:
1520
1521@example
1522(setq f1 (selected-frame))
1523(make-variable-frame-local 'foo)
1524
1525;; @r{Make a buffer-local binding for @code{foo} in @samp{b1}.}
1526(set-buffer (get-buffer-create "b1"))
1527(make-local-variable 'foo)
1528(setq foo '(b 1))
1529
1530;; @r{Make a frame-local binding for @code{foo} in a new frame.}
1531;; @r{Store that frame in @code{f2}.}
1532(setq f2 (make-frame))
1533(modify-frame-parameters f2 '((foo . (f 2))))
1534@end example
1535
1536 Now we examine @code{foo} in various contexts. Whenever the
1537buffer @samp{b1} is current, its buffer-local binding is in effect,
1538regardless of the selected frame:
1539
1540@example
1541(select-frame f1)
1542(set-buffer (get-buffer-create "b1"))
1543foo
1544 @result{} (b 1)
1545
1546(select-frame f2)
1547(set-buffer (get-buffer-create "b1"))
1548foo
1549 @result{} (b 1)
1550@end example
1551
1552@noindent
1553Otherwise, the frame gets a chance to provide the binding; when frame
1554@code{f2} is selected, its frame-local binding is in effect:
1555
1556@example
1557(select-frame f2)
1558(set-buffer (get-buffer "*scratch*"))
1559foo
1560 @result{} (f 2)
1561@end example
1562
1563@noindent
1564When neither the current buffer nor the selected frame provides
1565a binding, the default binding is used:
1566
1567@example
1568(select-frame f1)
1569(set-buffer (get-buffer "*scratch*"))
1570foo
1571 @result{} nil
1572@end example
1573
1574@noindent
1575When the active binding of a variable is a frame-local binding, setting
1576the variable changes that binding. You can observe the result with
1577@code{frame-parameters}:
1578
1579@example
1580(select-frame f2)
1581(set-buffer (get-buffer "*scratch*"))
1582(setq foo 'nobody)
1583(assq 'foo (frame-parameters f2))
1584 @result{} (foo . nobody)
1585@end example
1586
1587@node Future Local Variables
1588@section Possible Future Local Variables
1589
1590 We have considered the idea of bindings that are local to a category
1591of frames---for example, all color frames, or all frames with dark
1592backgrounds. We have not implemented them because it is not clear that
1593this feature is really useful. You can get more or less the same
1594results by adding a function to @code{after-make-frame-hook}, set up to
1595define a particular frame parameter according to the appropriate
1596conditions for each frame.
1597
1598 It would also be possible to implement window-local bindings. We
1599don't know of many situations where they would be useful, and it seems
1600that indirect buffers (@pxref{Indirect Buffers}) with buffer-local
1601bindings offer a way to handle these situations more robustly.
1602
1603 If sufficient application is found for either of these two kinds of
1604local bindings, we will provide it in a subsequent Emacs version.
1605
1606