From: Lars Ingebrigtsen Date: Sat, 12 Mar 2022 21:32:08 +0000 (+0100) Subject: Return the same file from locate-file in nativecomp and non X-Git-Tag: emacs-29.0.90~1931^2~1173 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f8bb6cca331cc487c4b3c16f33fe05a28fbacf01;p=emacs.git 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). --- diff --git a/lisp/files.el b/lisp/files.el index a0501cffa1a..327375ddaa4 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -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)