# HG changeset patch # User Juri Linkov # Date 1261012694 0 # Node ID b38517de715f83b8c0a0d71e2e0f176d93fb3807 # Parent a1ae5e2d1200cc1f57341576dd23200615f13be7 Fix regression from 23.1 to allow multiple modes in Local Variables. * files.el (hack-local-variables-filter): While ignoring duplicates, don't take `mode' into account. (hack-local-variables-filter, hack-dir-local-variables): Don't remove duplicate `mode' from local-variables-alist (like `eval'). diff -r a1ae5e2d1200 -r b38517de715f lisp/ChangeLog --- a/lisp/ChangeLog Thu Dec 17 01:16:15 2009 +0000 +++ b/lisp/ChangeLog Thu Dec 17 01:18:14 2009 +0000 @@ -1,3 +1,12 @@ +2009-12-17 Juri Linkov + + Fix regression from 23.1 to allow multiple modes in Local Variables. + + * files.el (hack-local-variables-filter): While ignoring duplicates, + don't take `mode' into account. + (hack-local-variables-filter, hack-dir-local-variables): Don't + remove duplicate `mode' from local-variables-alist (like `eval'). + 2009-12-17 Juri Linkov Make `dired-diff' more safe. (Bug#5225) diff -r a1ae5e2d1200 -r b38517de715f lisp/files.el --- a/lisp/files.el Thu Dec 17 01:16:15 2009 +0000 +++ b/lisp/files.el Thu Dec 17 01:18:14 2009 +0000 @@ -2978,8 +2978,8 @@ (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) + ;; Ignore duplicates (except `mode') in the present list. + ((and (assq var all-vars) (not (eq var 'mode))) nil) ;; Accept known-safe variables. ((or (memq var '(mode unibyte coding)) (safe-local-variable-p var val)) @@ -2999,7 +2999,7 @@ (hack-local-variables-confirm all-vars unsafe-vars risky-vars dir-name)) (dolist (elt all-vars) - (unless (eq (car elt) 'eval) + (unless (memq (car elt) '(eval mode)) (unless dir-name (setq dir-local-variables-alist (assq-delete-all (car elt) dir-local-variables-alist))) @@ -3427,7 +3427,7 @@ (dir-locals-get-class-variables class) dir-name nil))) (when variables (dolist (elt variables) - (unless (eq (car elt) 'eval) + (unless (memq (car elt) '(eval mode)) (setq dir-local-variables-alist (assq-delete-all (car elt) dir-local-variables-alist))) (push elt dir-local-variables-alist))