summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2009-07-18 21:02:52 +0000
committerAlan Mackenzie <acm@muc.de>2009-07-18 21:02:52 +0000
commit4abec4e36855c4cdc5943ea6690d96df76214166 (patch)
treec86dc5b2e034dd9a12a29e4bcce76550172c520b
parent9dae80a8105a3fc0bb05ec761cc4b63909e24f7c (diff)
downloademacs-4abec4e36855c4cdc5943ea6690d96df76214166.tar.gz
(hack-local-variables-filter): Remove entries with duplicate keys from
`file-local-variables-alist'.
-rw-r--r--lisp/files.el14
1 files changed, 12 insertions, 2 deletions
diff --git a/lisp/files.el b/lisp/files.el
index a58580a8bf7..b2f8e1a2829 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2960,7 +2960,11 @@ DIR-NAME is a directory name if these settings come from
(dolist (elt variables)
(unless (or (member elt unsafe-vars)
(member elt risky-vars))
- (push elt file-local-variables-alist)))
+ (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)
@@ -2970,7 +2974,12 @@ DIR-NAME is a directory name if these settings come from
(hack-local-variables-confirm
variables unsafe-vars risky-vars dir-name))
(dolist (elt variables)
- (push elt file-local-variables-alist)))))))
+ (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))))))))
+
(defun hack-local-variables (&optional mode-only)
"Parse and put into effect this buffer's local variables spec.
@@ -3073,6 +3082,7 @@ is specified, returning t if it is specified."
(enable-local-variables
(hack-local-variables-filter result nil)
(when file-local-variables-alist
+ ;; Any 'evals must run in the Right sequence.
(setq file-local-variables-alist
(nreverse file-local-variables-alist))
(run-hooks 'before-hack-local-variables-hook)