1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-04 11:00:45 -08:00

* lisp/files.el (safe-local-variable-p): Gracefully handle errors.

* lisp/emacs-lisp/bytecomp.el (byte-compile-warnings): Simplify the
safety predicate.
This commit is contained in:
Stefan Monnier 2010-11-11 17:19:01 -05:00
parent 7bea8c7a92
commit acef0722fc
3 changed files with 13 additions and 14 deletions

View file

@ -1,5 +1,10 @@
2010-11-11 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/bytecomp.el (byte-compile-warnings): Simplify the
safety predicate.
* files.el (safe-local-variable-p): Gracefully handle errors.
* emacs-lisp/smie.el (smie-rule-parent, smie-indent--rule):
Use smie-indent-virtual when indenting relative to an opener.
(smie-rule-separator): Use smie-rule-parent.

View file

@ -294,21 +294,12 @@ suppress. For example, (not mapcar) will suppress warnings about mapcar."
(set :menu-tag "Some"
,@(mapcar (lambda (x) `(const ,x))
byte-compile-warning-types))))
;;;###autoload(put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p)
;;;###autoload
(defun byte-compile-warnings-safe-p (x)
"Return non-nil if X is valid as a value of `byte-compile-warnings'."
(or (booleanp x)
(and (listp x)
(if (eq (car x) 'not) (setq x (cdr x))
t)
(equal (mapcar
(lambda (e)
(when (memq e byte-compile-warning-types)
e))
x)
x))))
(put 'byte-compile-warnings 'safe-local-variable
(lambda (v)
(or (symbolp v)
(null (delq nil (mapcar (lambda (x) (not (symbolp x))) v))))))
(defun byte-compile-warning-enabled-p (warning)
"Return non-nil if WARNING is enabled, according to `byte-compile-warnings'."

View file

@ -3134,7 +3134,10 @@ It is safe if any of these conditions are met:
evaluates to a non-nil value with VAL as an argument."
(or (member (cons sym val) safe-local-variable-values)
(let ((safep (get sym 'safe-local-variable)))
(and (functionp safep) (funcall safep val)))))
(and (functionp safep)
;; If the function signals an error, that means it
;; can't assure us that the value is safe.
(with-demoted-errors (funcall safep val))))))
(defun risky-local-variable-p (sym &optional ignored)
"Non-nil if SYM could be dangerous as a file-local variable.