Mercurial > emacs
changeset 103981:79bd2c1abfc5
* files.el (hack-local-variables-filter): Rewrite.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sun, 19 Jul 2009 01:05:17 +0000 |
parents | 60489d78df5a |
children | bffadf81bdd5 |
files | lisp/ChangeLog lisp/files.el |
diffstat | 2 files changed, 45 insertions(+), 49 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sun Jul 19 00:47:47 2009 +0000 +++ b/lisp/ChangeLog Sun Jul 19 01:05:17 2009 +0000 @@ -1,3 +1,7 @@ +2009-07-19 Chong Yidong <cyd@stupidchicken.com> + + * files.el (hack-local-variables-filter): Rewrite. + 2009-07-19 Glenn Morris <rgm@gnu.org> * progmodes/verilog-mode.el (verilog-error-regexp-add-xemacs):
--- a/lisp/files.el Sun Jul 19 00:47:47 2009 +0000 +++ b/lisp/files.el Sun Jul 19 01:05:17 2009 +0000 @@ -2931,55 +2931,47 @@ `file-local-variables-alist', without applying them. DIR-NAME is a directory name if these settings come from directory-local variables, or nil otherwise." - ;; Strip any variables that are in `ignored-local-variables'. - (dolist (ignored ignored-local-variables) - (setq variables (assq-delete-all ignored variables))) - ;; If `enable-local-eval' is nil, strip eval "variables". - (if (null enable-local-eval) - (setq variables (assq-delete-all 'eval variables))) - (setq variables (nreverse variables)) - (when variables - ;; Find those variables that we may want to save to - ;; `safe-local-variable-values'. - (let (risky-vars unsafe-vars) - (dolist (elt variables) - (let ((var (car elt)) - (val (cdr elt))) - ;; Don't query about the fake variables. - (or (memq var '(mode unibyte coding)) - (and (eq var 'eval) - (or (eq enable-local-eval t) - (hack-one-local-variable-eval-safep - (eval (quote val))))) - (safe-local-variable-p var val) - (and (risky-local-variable-p var val) - (push elt risky-vars)) - (push elt unsafe-vars)))) - (if (eq enable-local-variables :safe) - ;; If caller wants only safe variables, store only these. - (dolist (elt variables) - (unless (or (member elt unsafe-vars) - (member elt risky-vars)) - (let ((var (car elt))) - (unless (eq var 'eval) - (setq file-local-variables-alist - (assq-delete-all var file-local-variables-alist))) - (push elt file-local-variables-alist)))) - ;; Query, unless all are known safe or the user wants no - ;; querying. - (if (or (and (eq enable-local-variables t) - (null unsafe-vars) - (null risky-vars)) - (eq enable-local-variables :all) - (hack-local-variables-confirm - variables unsafe-vars risky-vars dir-name)) - (dolist (elt variables) - (let ((var (car elt))) - (unless (eq var 'eval) - (setq file-local-variables-alist - (assq-delete-all var file-local-variables-alist))) - (push elt file-local-variables-alist)))))))) - + ;; Find those variables that we may want to save to + ;; `safe-local-variable-values'. + (let (all-vars risky-vars unsafe-vars) + (dolist (elt variables) + (let ((var (car elt)) + (val (cdr elt))) + (cond ((memq var ignored-local-variables) + ;; Ignore any variable in `ignored-local-variables'. + nil) + ;; Obey `enable-local-eval'. + ((eq var 'eval) + (when enable-local-eval + (push elt all-vars) + (or (eq enable-local-eval t) + (hack-one-local-variable-eval-safep (eval (quote val))) + (push elt unsafe-vars)))) + ;; Ignore duplicates in the present list. + ((assq var all-vars) nil) + ;; Accept known-safe variables. + ((or (memq var '(mode unibyte coding)) + (safe-local-variable-p var val)) + (push elt all-vars)) + ;; The variable is either risky or unsafe: + ((not (eq enable-local-variables :safe)) + (push elt all-vars) + (if (risky-local-variable-p var val) + (push elt risky-vars) + (push elt unsafe-vars)))))) + (and all-vars + ;; Query, unless all vars are safe or user wants no querying. + (or (and (eq enable-local-variables t) + (null unsafe-vars) + (null risky-vars)) + (eq enable-local-variables :all) + (hack-local-variables-confirm all-vars unsafe-vars + risky-vars dir-name)) + (dolist (elt all-vars) + (unless (eq (car elt) 'eval) + (setq file-local-variables-alist + (assq-delete-all (car elt) file-local-variables-alist))) + (push elt file-local-variables-alist))))) (defun hack-local-variables (&optional mode-only) "Parse and put into effect this buffer's local variables spec.