-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}:
+visiting a file could take over your Emacs. Emacs takes several
+measures to prevent this.
+
+@cindex safe local variable
+ You can specify safe values for a variable with a
+@code{safe-local-variable} property. If the property is @code{t},
+setting that variable in a file is always considered safe, regardless
+of the value used. If the property is a function of one argument,
+then any value is safe if the function returns non-@code{nil} given
+that value. Many commonly encountered file variables standardly have
+@code{safe-local-variable} properties, including @code{fill-column},
+@code{fill-prefix}, and @code{indent-tabs-mode}.
+
+@defopt safe-local-variable-values
+This variable provides another way to mark some variable values as
+safe. It is a list of cons cells @code{(@var{var} . @var{val})},
+where @var{var} is a variable name and @var{val} is a value which is
+safe for that variable.
+
+When Emacs asks the user whether or not to obey a set of file local
+variable specifications, the user can choose to mark them as safe.
+Doing so adds those variable/value pairs to
+@code{safe-local-variable-values}, and saves it to the user's custom
+file.
+@end defopt
+
+@defun safe-local-variable-p sym val
+This function returns non-@code{nil} if it is safe to give @var{sym}
+the value @var{val}, based on the above criteria.
+@end defun
+
+@cindex risky local variable
+ Some variables are considered @dfn{risky}. A variable whose name
+ends in any of @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} is considered risky. The
+variables @samp{font-lock-keywords}, @samp{font-lock-keywords}
+followed by a digit, and @samp{font-lock-syntactic-keywords} are also
+considered risky. Finally, any variable whose name has a
+non-@code{nil} @code{risky-local-variable} property is considered
+risky.
+
+@defun risky-local-variable-p sym
+This function returns non-@code{nil} if @var{sym} is a risky variable,
+based on the above criteria.
+@end defun
+
+ If a variable is risky, it will not be entered automatically into
+@code{safe-local-variable-values} as described above. Therefore,
+Emacs will always query before setting a risky variable, unless the
+user explicitly allows the setting by customizing
+@code{safe-local-variable-values} directly.