summaryrefslogtreecommitdiff
path: root/lisp/files.el
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2015-11-10 13:14:49 +0000
committerArtur Malabarba <bruce.connor.am@gmail.com>2015-11-10 13:14:49 +0000
commit77cebbc1e77edf23bc2c23a218b56d9d6ad68e74 (patch)
tree023d4981cc5047b9c744a55a2bb5116004a7755d /lisp/files.el
parent4d82aa3abdad1871b99f0a9e56fe54ec497bd290 (diff)
downloademacs-77cebbc1e77edf23bc2c23a218b56d9d6ad68e74.tar.gz
* lisp/files.el (dir-locals-read-from-file): Better handle errors
Diffstat (limited to 'lisp/files.el')
-rw-r--r--lisp/files.el15
1 files changed, 11 insertions, 4 deletions
diff --git a/lisp/files.el b/lisp/files.el
index 58ed35730fe..efba15ea15f 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3808,6 +3808,7 @@ is found. Returns the new class name."
(class-name (intern dir-name))
(files (dir-locals--all-files file))
(read-circle nil)
+ (success nil)
(variables))
(with-demoted-errors "Error reading dir-locals: %S"
(dolist (file files)
@@ -3818,13 +3819,19 @@ is found. Returns the new class name."
(map-merge-with 'list (lambda (a b) (map-merge 'list a b))
variables
(read (current-buffer))))
- (end-of-file nil)))))
+ (end-of-file nil))))
+ (setq success t))
(dir-locals-set-class-variables class-name variables)
(dir-locals-set-directory-class
dir-name class-name
- (seconds-to-time (apply #'max (mapcar (lambda (file)
- (time-to-seconds (nth 5 (file-attributes file))))
- files))))
+ (seconds-to-time
+ (if success
+ (apply #'max (mapcar (lambda (file)
+ (time-to-seconds (nth 5 (file-attributes file))))
+ files))
+ ;; If there was a problem, use the values we could get but
+ ;; don't let the cache prevent future reads.
+ 0)))
class-name))
(defcustom enable-remote-dir-locals nil