]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/macroexp.el (macroexp-file-name): Work in `eval-buffer`
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 24 Feb 2021 22:16:00 +0000 (17:16 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 24 Feb 2021 22:16:00 +0000 (17:16 -0500)
Rely on `current-load-list` instead of `load-file-name`.

* lisp/emacs-lisp/bytecomp.el (byte-compile-close-variables):
Change the var we override accordingly.

lisp/emacs-lisp/bytecomp.el
lisp/emacs-lisp/macroexp.el

index 26fab31b961d77473222894f074176a1c89ff9a2..7aae8c0c6a4d357f31bd25d17af539cc087c9a86 100644 (file)
@@ -1731,7 +1731,7 @@ It is too wide if it has any lines longer than the largest of
          ;; This is used in `macroexp-file-name' to make sure that
          ;; loading file A which does (byte-compile-file B) won't
          ;; cause macro calls in B to think they come from A.
-         (load-file-name nil)
+         (current-load-list (list nil))
          )
      ,@body))
 
index a6b0985e6c7e52e7bb33a69b3cff07ce41c0d709..d52aee5a4adacb396d90c8975b2bad0ef1a0d877 100644 (file)
@@ -127,7 +127,11 @@ A non-nil result is expected to be reliable when called from a macro in order
 to find the file in which the macro's call was found, and it should be
 reliable as well when used at the top-level of a file.
 Other uses risk returning non-nil value that point to the wrong file."
-  (or load-file-name (bound-and-true-p byte-compile-current-file)))
+  ;; `eval-buffer' binds `current-load-list' but not `load-file-name',
+  ;; so prefer using it over using `load-file-name'.
+  (let ((file (car (last current-load-list))))
+    (or (if (stringp file) file)
+        (bound-and-true-p byte-compile-current-file))))
 
 (defvar macroexp--warned (make-hash-table :test #'equal :weakness 'key))