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