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