Commit b8f82dc1 authored by Glenn Morris's avatar Glenn Morris
Browse files

Deprecate using "mode:" to enable minor modes (bug#8613)

* lisp/files.el (hack-one-local-variable-eval-safep):
Consider "eval: (foo-mode)" to be safe.

* doc/emacs/custom.texi (Specifying File Variables):
Deprecate using mode: for minor modes.

* etc/NEWS: Mention this.

* lisp/doc-view.el, lisp/net/soap-client.el:
Change "mode:" minor-mode file local variables to use "eval:".
parent 4f99f44b
2011-05-10 Glenn Morris <rgm@gnu.org>
* custom.texi (Specifying File Variables):
Deprecate using mode: for minor modes.
2011-05-07 Glenn Morris <rgm@gnu.org>
* cal-xtra.texi (Sexp Diary Entries): Mention diary-hebrew-birthday.
......
......@@ -1085,9 +1085,8 @@ first line:
You can specify any number of variable/value pairs in this way, each
pair with a colon and semicolon as shown above. The special
variable/value pair @code{mode: @var{modename};}, if present,
specifies a major or minor mode; if you use this to specify a major
mode, it should come first in the line. The @var{value}s are used
literally, and not evaluated.
specifies a major mode, and should come first in the line. The
@var{value}s are used literally, and not evaluated.
@findex add-file-local-variable-prop-line
@findex delete-file-local-variable-prop-line
......@@ -1186,7 +1185,7 @@ list:
@itemize
@item
@code{mode} enables the specified major or minor mode.
@code{mode} enables the specified major mode.
@item
@code{eval} evaluates the specified Lisp expression (the value
......@@ -1213,10 +1212,11 @@ variables as part of their initialization.
You can use the @code{mode} ``variable'' to enable minor modes as
well as the major modes; in fact, you can use it more than once, first
to set the major mode and then to enable minor modes which are
specific to particular buffers.
specific to particular buffers. Using @code{mode} for minor modes
is deprecated, though---instead, use @code{eval: (minor-mode)}.
Often, however, it is a mistake to enable minor modes this way.
Most minor modes, like Auto Fill mode, represent individual user
Often, however, it is a mistake to enable minor modes in file local
variables. Most minor modes, like Auto Fill mode, represent individual user
preferences. If you want to use a minor mode, it is better to set up
major mode hooks with your init file to turn that minor mode on for
yourself alone (@pxref{Init File}), instead of using a local variable
......
......@@ -267,6 +267,10 @@ default, all themes included in Emacs are treated as safe.
** The user option `remote-file-name-inhibit-cache' controls whether
the remote file-name cache is used for read access.
+++
** The use of a "mode: minor" specification in a file local variables section
to enable a minor-mode is deprecated. Instead, use "eval: (minor-mode)".
** The standalone programs lib-src/digest-doc and sorted-doc have been
replaced with Lisp commands `doc-file-to-man' and `doc-file-to-info'.
......
2011-05-10 Glenn Morris <rgm@gnu.org>
Stefan Monnier <monnier@iro.umontreal.ca>
* files.el (hack-one-local-variable-eval-safep):
Consider "eval: (foo-mode)" to be safe. (Bug#8613)
2011-05-10 Glenn Morris <rgm@gnu.org>
* calendar/diary-lib.el (diary-list-entries-hook)
......
......@@ -1549,7 +1549,7 @@ See the command `doc-view-mode' for more information on this mode."
(provide 'doc-view)
;; Local Variables:
;; mode: outline-minor
;; eval: (outline-minor-mode)
;; End:
;;; doc-view.el ends here
......@@ -3327,6 +3327,10 @@ It is dangerous if either of these conditions are met:
;; Certain functions can be allowed with safe arguments
;; or can specify verification functions to try.
(and (symbolp (car exp))
;; Allow (minor)-modes calls with no arguments.
;; This obsoletes the use of "mode:" for such things. (Bug#8613)
(or (and (null (cdr exp))
(string-match "-mode\\'" (symbol-name (car exp))))
(let ((prop (get (car exp) 'safe-local-eval-function)))
(cond ((eq prop t)
(let ((ok t))
......@@ -3341,7 +3345,7 @@ It is dangerous if either of these conditions are met:
(dolist (function prop)
(if (funcall function exp)
(setq ok t)))
ok)))))))
ok))))))))
(defun hack-one-local-variable (var val)
"Set local variable VAR with value VAL.
......
......@@ -1745,7 +1745,7 @@ operations in a WSDL document."
;;; Local Variables:
;;; mode: outline-minor
;;; eval: (outline-minor-mode)
;;; outline-regexp: ";;;;+"
;;; End:
......
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