Commit 1e98f041 authored by Artur Malabarba's avatar Artur Malabarba
Browse files

* 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).
parent 2e848885
......@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment