load-file-name))
from
(abbreviate-file-name load-file-name))))
- (display-warning
- '(files missing-lexbind-cookie)
- (format-message "Missing `lexical-binding' cookie in %S.
+ (condition-case nil
+ (display-warning
+ `(files missing-lexbind-cookie
+ ,(if (bufferp source) 'eval-buffer source))
+ (format-message "Missing `lexical-binding' cookie in %S.
You can add one with `M-x %s RET'.
See `%s' and `%s'
for more information."
- source
- (buttonize "elisp-enable-lexical-binding"
- (lambda (_)
- (pop-to-buffer
- (if (bufferp source) source
- (find-file-noselect source)))
- (call-interactively
- #'elisp-enable-lexical-binding))
- nil "mouse-2: Add cookie")
- (funcall mib "(elisp)Selecting Lisp Dialect")
- (funcall mib "(elisp)Converting to Lexical Binding"))
- :warning)))
+ source
+ (buttonize "elisp-enable-lexical-binding"
+ (lambda (_)
+ (pop-to-buffer
+ (if (bufferp source) source
+ (find-file-noselect source)))
+ (call-interactively
+ #'elisp-enable-lexical-binding))
+ nil "mouse-2: Add cookie")
+ (funcall mib "(elisp)Selecting Lisp Dialect")
+ (funcall mib "(elisp)Converting to Lexical Binding"))
+ :warning)
+ ;; In various corner-case situations, `display-warning' may
+ ;; fail (e.g. not yet defined, or can't be (auto)loaded),
+ ;; so use a simple fallback that won't get in the way.
+ (error
+ (message "Missing `lexical-binding' cookie in %S" source)))))
(default-toplevel-value 'lexical-binding)))
(setq internal--get-default-lexical-binding-function