Commit f925e502 authored by Chong Yidong's avatar Chong Yidong
Browse files

* custom.texi (Specifying File Variables, Unsafe File Variables):

	New nodes, split from File Variables.  Document new file local
	variable behavior.
parent 5a6c1d87
2006-02-13 Chong Yidong <cyd@stupidchicken.com>
* custom.texi (Specifying File Variables, Unsafe File Variables):
New nodes, split from File Variables. Document new file local
variable behavior.
2006-02-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 2006-02-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* display.texi (Standard Faces): * display.texi (Standard Faces):
......
...@@ -1043,6 +1043,15 @@ file with Emacs. Visiting the file checks for local variable ...@@ -1043,6 +1043,15 @@ file with Emacs. Visiting the file checks for local variable
specifications; it automatically makes these variables local to the specifications; it automatically makes these variables local to the
buffer, and sets them to the values specified in the file. buffer, and sets them to the values specified in the file.
@menu
* Specifying File Variables:: Specifying file local variables.
* Unsafe File Variables:: Handling local variables that may not
be safe.
@end menu
@node Specifying File Variables
@subsubsection Specifying File Variables
There are two ways to specify local variable values: in the first There are two ways to specify local variable values: in the first
line, or with a local variables list. Here's how to specify them in the line, or with a local variables list. Here's how to specify them in the
first line: first line:
...@@ -1170,33 +1179,60 @@ list need not take the time to search the whole file. ...@@ -1170,33 +1179,60 @@ list need not take the time to search the whole file.
major mode of a buffer according to the file name and contents, major mode of a buffer according to the file name and contents,
including the local variables list if any. @xref{Choosing Modes}. including the local variables list if any. @xref{Choosing Modes}.
@node Unsafe File Variables
@subsubsection Unsafe File Variables
File variables create a certain amount of risk; when you visit
someone else's file, its variables could affect your Emacs in
arbitrary ways. A special risk is posed by the @code{eval}
``variable,'' which can potentially execute arbitrary code, and
certain actual variables such as @code{load-path}.
Therefore, whenever Emacs encounters file variables that are not
known to be safe, it displays the entire list of variables defined in
that file, and asks you for confirmation before setting them. You can
type @samp{y} or @samp{SPC} to apply the local variables list, or
@samp{n} to ignore it.
There is a set of file variables and values that are known to be
safe. For instance, it is safe to give @code{comment-column} or
@code{fill-column} any integer value. If a file specifies only safe
variable-value pairs, Emacs will not ask for confirmation before
setting them. You can also tell Emacs that a set of variable-value
pairs is safe, by entering @samp{!} at the file variables confirmation
prompt. In that case, Emacs will not ask for confirmation if it
encounters these variable-value pairs in the future. You can directly
edit the list of safe variable-value pairs by customizing
@samp{safe-local-variable-values} (@pxref{Easy Customization}).
Some variables, such as @code{load-path}, are considered
@dfn{risky}: there is seldom any reason to specify them as file
variables, and changing them can be dangerous. Even if you enter
@samp{!} at the confirmation prompt, Emacs will not save these values
for the future. Therefore, you will be prompted each time the
variable is encountered. If you really want to allow such a variable,
you can avoid the prompt by editing @samp{safe-local-variable-values}.
@findex enable-local-variables @findex enable-local-variables
The variable @code{enable-local-variables} controls whether to process The variable @code{enable-local-variables} allows you to change the
local variables in files, and thus gives you a chance to override them. way Emacs processes local variables. Its default value is @code{t},
Its default value is @code{t}, which means do process local variables in which means the behavior described above. If you set the value to
files. If you set the value to @code{nil}, Emacs simply ignores local @code{nil}, Emacs simply ignores local variables in files. Any other
variables in files. Any other value says to query you about each file value says to query you about each file that has local variables, even
that has local variables, showing you the local variable specifications if the variables are known to be safe.
so you can judge.
@findex enable-local-eval @findex enable-local-eval
The @code{eval} ``variable,'' and certain actual variables, create a The variable @code{enable-local-eval} controls whether Emacs
special risk; when you visit someone else's file, local variable processes @code{eval} variables. The three possibilities for the
specifications for these could affect your Emacs in arbitrary ways. variable's value are @code{t}, @code{nil}, and anything else, just as
Therefore, the variable @code{enable-local-eval} controls whether Emacs for @code{enable-local-variables}. The default is @code{maybe}, which
processes @code{eval} variables, as well variables with names that end is neither @code{t} nor @code{nil}, so normally Emacs does ask for
in @samp{-hook}, @samp{-hooks}, @samp{-function} or @samp{-functions}, confirmation about processes @code{eval} variables.
and certain other variables. The three possibilities for the variable's
value are @code{t}, @code{nil}, and anything else, just as for
@code{enable-local-variables}. The default is @code{maybe}, which is
neither @code{t} nor @code{nil}, so normally Emacs does ask for
confirmation about file settings for these variables.
@findex safe-local-eval-forms @findex safe-local-eval-forms
The @code{safe-local-eval-forms} is a customizable list of eval The @code{safe-local-eval-forms} is a customizable list of eval
forms which are safe to eval, so Emacs should not ask for forms which are safe to eval, so Emacs should not ask for
confirmation to evaluate these forms, even if confirmation to evaluate these forms.
@code{enable-local-variables} says to ask for confirmation in general.
@node Key Bindings @node Key Bindings
@section Customizing Key Bindings @section Customizing Key Bindings
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment