Fix for another bit of bug#8095, re dir-locals.
authorGlenn Morris <rgm@gnu.org>
Thu, 24 Feb 2011 08:26:25 +0000 (00:26 -0800)
committerGlenn Morris <rgm@gnu.org>
Thu, 24 Feb 2011 08:26:25 +0000 (00:26 -0800)
* lisp/help-fns.el (describe-variable): Return consistent results when a
dir-local from a file came from the cache or did not.
If a dir-local has no associated file, say it came from a "directory".

lisp/ChangeLog
lisp/help-fns.el

index cb0708a..05bddd0 100644 (file)
@@ -1,11 +1,15 @@
 2011-02-24  Glenn Morris  <rgm@gnu.org>
 
+       * help-fns.el (describe-variable): Return consistent results when a
+       dir-local from a file came from the cache or did not.  (Bug#8095)
+       If a dir-local has no associated file, say it came from a "directory".
+
        * files.el (hack-dir-local-variables): Fix setting of `dir-name'.
        (hack-local-variables-confirm, hack-local-variables-filter): Doc fix.
 
        * files.el (dir-locals-find-file): Doc fix.
        Fix the check for cache elements that have no associated file,
-       and the mtime check for those that do.
+       and the mtime check for those that do.  (Bug#8095)
 
        * dired-x.el (dired-hack-local-variables):
        Handle interrupts during hacking local variables.  (Bug#5216)
index 1cd5526..38e331d 100644 (file)
@@ -748,15 +748,21 @@ it is displayed along with the global value."
                (setq extra-line t)
                (if (member (cons variable val) dir-local-variables-alist)
                    (let ((file (and (buffer-file-name)
-                                    (not (file-remote-p (buffer-file-name)))
-                                    (dir-locals-find-file (buffer-file-name)))))
+                                      (not (file-remote-p (buffer-file-name)))
+                                      (dir-locals-find-file
+                                       (buffer-file-name))))
+                          (type "file"))
                      (princ "  This variable is a directory local variable")
                      (when file
-                       (princ (concat "\n  from the file \""
-                                      (if (consp file)
-                                          (car file)
-                                        file)
-                                      "\"")))
+                        (if (consp file) ; result from cache
+                            ;; If the cache element has an mtime, we
+                            ;; assume it came from a file.
+                            (if (nth 2 file)
+                                (setq file (expand-file-name
+                                            dir-locals-file (car file)))
+                              ;; Otherwise, assume it was set directly.
+                              (setq type "directory")))
+                       (princ (format "\n  from the %s \"%s\"" type file)))
                      (princ ".\n"))
                  (princ "  This variable is a file local variable.\n")))