]> git.eshelyaron.com Git - emacs.git/commitdiff
Return the same file from locate-file in nativecomp and non
authorLars Ingebrigtsen <larsi@gnus.org>
Sat, 12 Mar 2022 21:32:08 +0000 (22:32 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 12 Mar 2022 21:32:08 +0000 (22:32 +0100)
* 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).

lisp/files.el

index a0501cffa1a209fb470c504bdf679e0fc215b546..327375ddaa468689c6fae2c93b79dd06858c4a55 100644 (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)