summaryrefslogtreecommitdiff
path: root/lisp/files.el
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2015-11-10 04:13:25 +0000
committerArtur Malabarba <bruce.connor.am@gmail.com>2015-11-10 13:04:31 +0000
commit1e98f041acae7cee012b1b157d4aa3f80b226123 (patch)
tree06c834f1f4c8b733cda1dfd057cff74ea687323b /lisp/files.el
parent2e8488858c7b8df40610c1cd3038348fdc9bf3ed (diff)
downloademacs-1e98f041acae7cee012b1b157d4aa3f80b226123.tar.gz
* lisp/files.el (dir-locals-find-file): Don't stop at unreadable files
`locate-dominating-file' will now keep looking if the files it finds in a given directory are unreadable (or not files).
Diffstat (limited to 'lisp/files.el')
-rw-r--r--lisp/files.el22
1 files changed, 6 insertions, 16 deletions
diff --git a/lisp/files.el b/lisp/files.el
index e8ee9490d33..58ed35730fe 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3751,26 +3751,16 @@ wildcards, then the return value is not a proper filename, it is
an absolute version of `dir-locals-file' which is guaranteed to
expand to at least one file."
(setq file (expand-file-name file))
- (let* ((dir-locals-file-name (if (eq system-type 'ms-dos)
- (dosified-file-name dir-locals-file)
- dir-locals-file))
- (locals-dir (locate-dominating-file
- (file-name-directory file)
- (lambda (dir)
- (let ((default-directory dir))
- (file-expand-wildcards dir-locals-file-name 'full)))))
+ (let* ((locals-dir (locate-dominating-file (file-name-directory file)
+ #'dir-locals--all-files))
locals-file dir-elt)
;; `locate-dominating-file' may have abbreviated the name.
(when locals-dir
(setq locals-dir (expand-file-name locals-dir))
- (setq locals-file (expand-file-name dir-locals-file-name locals-dir)))
- ;; Let dir-locals-read-from-file inform us via demoted-errors
- ;; about unreadable files, etc.
- ;; Maybe we'd want to keep searching though - that is
- ;; a locate-dominating-file issue.
-;;; (or (not (file-readable-p locals-file))
-;;; (not (file-regular-p locals-file)))
-;;; (setq locals-file nil))
+ (setq locals-file (expand-file-name (if (eq system-type 'ms-dos)
+ (dosified-file-name dir-locals-file)
+ dir-locals-file)
+ locals-dir)))
;; Find the best cached value in `dir-locals-directory-cache'.
(dolist (elt dir-locals-directory-cache)
(when (and (string-prefix-p (car elt) file