From: Luc Teirlinck Date: Sun, 15 May 2005 17:33:59 +0000 (+0000) Subject: Reorder nodes. X-Git-Tag: ttn-vms-21-2-B4~276 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0b2892c66e677ebe818d2c60ec28cee9ebd143de;p=emacs.git Reorder nodes. (Variables): Update menu. --- diff --git a/lispref/variables.texi b/lispref/variables.texi index 6040a4c09ae..27f0f4a7029 100644 --- a/lispref/variables.texi +++ b/lispref/variables.texi @@ -42,8 +42,8 @@ variable. * Buffer-Local Variables:: Variable values in effect only in one buffer. * Frame-Local Variables:: Variable values in effect only in one frame. * Future Local Variables:: New kinds of local values we might add some day. -* Variable Aliases:: Variables that are aliases for other variables. * File Local Variables:: Handling local variable lists in files. +* Variable Aliases:: Variables that are aliases for other variables. * Variables with Restricted Values:: Non-constant variables whose value can @emph{not} be an arbitrary Lisp object. @end menu @@ -1688,6 +1688,92 @@ bindings offer a way to handle these situations more robustly. If sufficient application is found for either of these two kinds of local bindings, we will provide it in a subsequent Emacs version. +@node File Local Variables +@section File Local Variables + + This section describes the functions and variables that affect +processing of file local variables. @xref{File variables, , +Local Variables in Files, emacs, The GNU Emacs Manual}, for basic +information about file local variables. + +@defopt enable-local-variables +This variable controls whether to process file local variables. A +value of @code{t} means process them unconditionally; @code{nil} means +ignore them; anything else means ask the user what to do for each +file. The default value is @code{t}. +@end defopt + +@defun hack-local-variables &optional mode-only +This function parses, and binds or evaluates as appropriate, any local +variables specified by the contents of the current buffer. The variable +@code{enable-local-variables} has its effect here. However, this +function does not look for the @samp{mode:} local variable in the +@w{@samp{-*-}} line. @code{set-auto-mode} does that, also taking +@code{enable-local-variables} into account (@pxref{Auto Major Mode}). + +If the optional argument @var{mode-only} is non-@code{nil}, then all +this function does is return @code{t} if the @w{@samp{-*-}} line or +the local variables list specifies a mode and @code{nil} otherwise. +It does not set the mode nor any other file local variable. +@end defun + + If a file local variable could specify a function that would +be called later, or an expression that would be executed later, simply +visiting a file could take over your Emacs. To prevent this, Emacs +takes care not to allow to set such file local variables. + + For one thing, any variable whose name ends in @samp{-command}, +@samp{-frame-alist}, @samp{-function}, @samp{-functions}, +@samp{-hook}, @samp{-hooks}, @samp{-form}, @samp{-forms}, @samp{-map}, +@samp{-map-alist}, @samp{-mode-alist}, @samp{-program}, or +@samp{-predicate} cannot be given a file local value. In general, +you should use such a name whenever it is appropriate for the +variable's meaning. The variables @samp{font-lock-keywords}, +@samp{font-lock-keywords-[0-9]}, and +@samp{font-lock-syntactic-keywords} cannot be given file local values either. +These rules can be overridden by giving the variable's +name a non-@code{nil} @code{safe-local-variable} property. If one +gives it a @code{safe-local-variable} property of @code{t}, then one +can give the variable any file local value. One can also give any +symbol, including the above, a @code{safe-local-variable} property +that is a function taking exactly one argument. In that case, giving +a variable with that name a file local value is only allowed if the +function returns non-@code{nil} when called with that value as +argument. + + In addition, any variable whose name has a non-@code{nil} +@code{risky-local-variable} property is also ignored. So are all +variables listed in @code{ignored-local-variables}: + +@defvar ignored-local-variables +This variable holds a list of variables that should not be given local +values by files. Any value specified for one of these variables is +ignored. +@end defvar + +@defun risky-local-variable-p sym &optional val +If @var{val} is non-@code{nil}, returns non-@code{nil} if giving +@var{sym} a file local value of @var{val} would be risky, for any of +the reasons stated above. If @var{val} is @code{nil} or omitted, only +returns @code{nil} if @var{sym} can be safely assigned any file local +value whatsoever. +@end defun + + The @samp{Eval:} ``variable'' is also a potential loophole, so Emacs +normally asks for confirmation before handling it. + +@defopt enable-local-eval +This variable controls processing of @samp{Eval:} in @samp{-*-} lines +or local variables +lists in files being visited. A value of @code{t} means process them +unconditionally; @code{nil} means ignore them; anything else means ask +the user what to do for each file. The default value is @code{maybe}. +@end defopt + + Text properties are also potential loopholes, since their values +could include functions to call. So Emacs discards all text +properties from string values specified for file local variables. + @node Variable Aliases @section Variable Aliases @@ -1780,92 +1866,6 @@ foo @result{} 0 @end example -@node File Local Variables -@section File Local Variables - - This section describes the functions and variables that affect -processing of file local variables. @xref{File variables, , -Local Variables in Files, emacs, The GNU Emacs Manual}, for basic -information about file local variables. - -@defopt enable-local-variables -This variable controls whether to process file local variables. A -value of @code{t} means process them unconditionally; @code{nil} means -ignore them; anything else means ask the user what to do for each -file. The default value is @code{t}. -@end defopt - -@defun hack-local-variables &optional mode-only -This function parses, and binds or evaluates as appropriate, any local -variables specified by the contents of the current buffer. The variable -@code{enable-local-variables} has its effect here. However, this -function does not look for the @samp{mode:} local variable in the -@w{@samp{-*-}} line. @code{set-auto-mode} does that, also taking -@code{enable-local-variables} into account (@pxref{Auto Major Mode}). - -If the optional argument @var{mode-only} is non-@code{nil}, then all -this function does is return @code{t} if the @w{@samp{-*-}} line or -the local variables list specifies a mode and @code{nil} otherwise. -It does not set the mode nor any other file local variable. -@end defun - - If a file local variable could specify a function that would -be called later, or an expression that would be executed later, simply -visiting a file could take over your Emacs. To prevent this, Emacs -takes care not to allow to set such file local variables. - - For one thing, any variable whose name ends in @samp{-command}, -@samp{-frame-alist}, @samp{-function}, @samp{-functions}, -@samp{-hook}, @samp{-hooks}, @samp{-form}, @samp{-forms}, @samp{-map}, -@samp{-map-alist}, @samp{-mode-alist}, @samp{-program}, or -@samp{-predicate} cannot be given a file local value. In general, -you should use such a name whenever it is appropriate for the -variable's meaning. The variables @samp{font-lock-keywords}, -@samp{font-lock-keywords-[0-9]}, and -@samp{font-lock-syntactic-keywords} cannot be given file local values either. -These rules can be overridden by giving the variable's -name a non-@code{nil} @code{safe-local-variable} property. If one -gives it a @code{safe-local-variable} property of @code{t}, then one -can give the variable any file local value. One can also give any -symbol, including the above, a @code{safe-local-variable} property -that is a function taking exactly one argument. In that case, giving -a variable with that name a file local value is only allowed if the -function returns non-@code{nil} when called with that value as -argument. - - In addition, any variable whose name has a non-@code{nil} -@code{risky-local-variable} property is also ignored. So are all -variables listed in @code{ignored-local-variables}: - -@defvar ignored-local-variables -This variable holds a list of variables that should not be given local -values by files. Any value specified for one of these variables is -ignored. -@end defvar - -@defun risky-local-variable-p sym &optional val -If @var{val} is non-@code{nil}, returns non-@code{nil} if giving -@var{sym} a file local value of @var{val} would be risky, for any of -the reasons stated above. If @var{val} is @code{nil} or omitted, only -returns @code{nil} if @var{sym} can be safely assigned any file local -value whatsoever. -@end defun - - The @samp{Eval:} ``variable'' is also a potential loophole, so Emacs -normally asks for confirmation before handling it. - -@defopt enable-local-eval -This variable controls processing of @samp{Eval:} in @samp{-*-} lines -or local variables -lists in files being visited. A value of @code{t} means process them -unconditionally; @code{nil} means ignore them; anything else means ask -the user what to do for each file. The default value is @code{maybe}. -@end defopt - - Text properties are also potential loopholes, since their values -could include functions to call. So Emacs discards all text -properties from string values specified for file local variables. - @node Variables with Restricted Values @section Variables with Restricted Values