Function: internal--get-default-lexical-binding
internal--get-default-lexical-binding is a byte-compiled function
defined in files.el.gz.
Signature
(internal--get-default-lexical-binding FROM)
Source Code
;; Defined in /usr/src/emacs/lisp/files.el.gz
(defun internal--get-default-lexical-binding (from)
(let ((mib (lambda (node) (buttonize node (lambda (_) (info node))
nil "mouse-2: Jump to Info node"))))
(or (and (bufferp from) (zerop (buffer-size from)))
(and (stringp from)
(eql 0 (file-attribute-size (file-attributes from))))
(let ((source
(if (not (and (bufferp from)
(string-match-p "\\` \\*load\\*\\(-[0-9]+\\)?\\'"
(buffer-name from))
load-file-name))
from
(abbreviate-file-name load-file-name))))
(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)
;; 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
;; But not if this particular warning is disabled.
(unless (equal warning-inhibit-types
'((files missing-lexbind-cookie)))
(message "Missing `lexical-binding' cookie in %S" source))))))
(default-toplevel-value 'lexical-binding)))