diff options
author | Richard M. Stallman <rms@gnu.org> | 2002-10-23 17:38:44 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2002-10-23 17:38:44 +0000 |
commit | 472514b72d9aa1db35fde6670c8be6eb957590a4 (patch) | |
tree | 0ee119a7d5f61684779a2fdbdd79a666770993ac /lisp/files.el | |
parent | e99833cab6c4098a4916af3d7beefad59ceb4012 (diff) | |
download | emacs-472514b72d9aa1db35fde6670c8be6eb957590a4.tar.gz |
(risky-local-variable-p): New function.
(compile-command): Use `stringp' for `safe-local-variable' prop.
(hack-one-local-variable): Use `risky-local-variable-p'.
Diffstat (limited to 'lisp/files.el')
-rw-r--r-- | lisp/files.el | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/lisp/files.el b/lisp/files.el index 9da9bd87875..be6cdfeb9b7 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -2057,16 +2057,21 @@ is specified, returning t if it is specified." (put 'mode-line-position 'risky-local-variable t) (put 'display-time-string 'risky-local-variable t) -;; This one is safe because the user gets to check it before it is used. -(put 'compile-command 'safe-local-variable t) - -(defun risky-local-variable-p (sym) - "Returns non-nil if SYM could be dangerous as a file-local variable." - (or (memq sym ignored-local-variables) - (get sym 'risky-local-variable) - (and (string-match "-hooks?$\\|-functions?$\\|-forms?$\\|-program$\\|-command$\\|-predicate$\\|font-lock-keywords$\\|font-lock-keywords-[0-9]+$\\|font-lock-syntactic-keywords$\\|-frame-alist$\\|-mode-alist$\\|-map$\\|-map-alist$" - (symbol-name sym)) - (not (get sym 'safe-local-variable))))) +;; This case is safe because the user gets to check it before it is used. +(put 'compile-command 'safe-local-variable 'stringp) + +(defun risky-local-variable-p (sym val) + "Non-nil if SYM could be dangerous as a file-local variable with value VAL." + (let ((safep (get sym 'safe-local-variable))) + (or (memq sym ignored-local-variables) + (get sym 'risky-local-variable) + (and (string-match "-hooks?$\\|-functions?$\\|-forms?$\\|-program$\\|-command$\\|-predicate$\\|font-lock-keywords$\\|font-lock-keywords-[0-9]+$\\|font-lock-syntactic-keywords$\\|-frame-alist$\\|-mode-alist$\\|-map$\\|-map-alist$" + (symbol-name sym)) + (not safep)) + ;; If the safe-local-variable property isn't t or nil, + ;; then it must return non-nil on the proposed value to be safe. + (and (not (memq safep '(t nil))) + (not (funcall safep val)))))) (defcustom safe-local-eval-forms nil "*Expressions that are considered \"safe\" in an `eval:' local variable. @@ -2134,7 +2139,7 @@ is considered risky." nil) ;; "Setting" eval means either eval it or do nothing. ;; Likewise for setting hook variables. - ((risky-local-variable-p var) + ((risky-local-variable-p var val) ;; Permit evalling a put of a harmless property. ;; if the args do nothing tricky. (if (or (and (eq var 'eval) @@ -2157,7 +2162,7 @@ is considered risky." (save-excursion (eval val)) (make-local-variable var) (set var val)) - (message "Ignoring `eval:' in the local variables list"))) + (message "Ignoring risky spec in the local variables list"))) ;; Ordinary variable, really set it. (t (make-local-variable var) ;; Make sure the string has no text properties. |