diff options
author | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-11-10 04:13:25 +0000 |
---|---|---|
committer | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-11-10 13:04:31 +0000 |
commit | 1e98f041acae7cee012b1b157d4aa3f80b226123 (patch) | |
tree | 06c834f1f4c8b733cda1dfd057cff74ea687323b /lisp/files.el | |
parent | 2e8488858c7b8df40610c1cd3038348fdc9bf3ed (diff) | |
download | emacs-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.el | 22 |
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 |