* lisp/emacs-lisp/macroexp.el (macroexp-file-name): Work in eval-buffer
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.
This commit is contained in:
parent
46b54e5bb4
commit
b7f67d432b
2 changed files with 6 additions and 2 deletions
|
@ -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))
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue