Return the same file from locate-file in nativecomp and non

* lisp/files.el (locate-file): Return the .elc file (if it exists)
in nativecomp, too, to mimic the behaviour from non-nativecomp
builds (bug#51308).
This commit is contained in:
Lars Ingebrigtsen 2022-03-12 22:32:08 +01:00
parent 84f59f7585
commit f8bb6cca33

View file

@ -989,7 +989,16 @@ one or more of those symbols."
(if (memq 'readable predicate) 4 0))))
(let ((file (locate-file-internal filename path suffixes predicate)))
(if (and file (string-match "\\.eln\\'" file))
(gethash (file-name-nondirectory file) comp-eln-to-el-h)
;; This is all a bit of a mess. We pass in a list of suffixes
;; that doesn't include .eln, but with a nativecomp emacs, we
;; get the .eln file back. We then map that to the .el file.
;; But `load-history' has the .elc file, so that's the file we
;; return here (if it exists).
(let* ((el (gethash (file-name-nondirectory file) comp-eln-to-el-h))
(elc (replace-regexp-in-string "\\.el\\'" ".elc" el)))
(if (file-exists-p elc)
elc
el))
file)))
(defun locate-file-completion-table (dirs suffixes string pred action)