emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp ChangeLog files.el


From: Chong Yidong
Subject: [Emacs-diffs] emacs/lisp ChangeLog files.el
Date: Sun, 19 Jul 2009 01:05:22 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Chong Yidong <cyd>      09/07/19 01:05:22

Modified files:
        lisp           : ChangeLog files.el 

Log message:
        * files.el (hack-local-variables-filter): Rewrite.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.15832&r2=1.15833
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/files.el?cvsroot=emacs&r1=1.1057&r2=1.1058

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.15832
retrieving revision 1.15833
diff -u -b -r1.15832 -r1.15833
--- ChangeLog   19 Jul 2009 00:47:47 -0000      1.15832
+++ ChangeLog   19 Jul 2009 01:05:17 -0000      1.15833
@@ -1,3 +1,7 @@
+2009-07-19  Chong Yidong  <address@hidden>
+
+       * files.el (hack-local-variables-filter): Rewrite.
+
 2009-07-19  Glenn Morris  <address@hidden>
 
        * progmodes/verilog-mode.el (verilog-error-regexp-add-xemacs):

Index: files.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/files.el,v
retrieving revision 1.1057
retrieving revision 1.1058
diff -u -b -r1.1057 -r1.1058
--- files.el    18 Jul 2009 20:41:32 -0000      1.1057
+++ files.el    19 Jul 2009 01:05:21 -0000      1.1058
@@ -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)
+  (let (all-vars 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)
+       (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)))))
-             (safe-local-variable-p var val)
-             (and (risky-local-variable-p var val)
-                  (push elt risky-vars))
+                    (hack-one-local-variable-eval-safep (eval (quote val)))
              (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)
+             ;; 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
-                variables unsafe-vars risky-vars dir-name))
-           (dolist (elt variables)
-             (let ((var (car elt)))
-               (unless (eq var 'eval)
+            (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 var file-local-variables-alist)))
-               (push elt 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.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]