]> git.eshelyaron.com Git - emacs.git/commitdiff
Inhibit flymake lexical cookie warning in *scratch* (bug#70068)
authorMattias EngdegÄrd <mattiase@acm.org>
Mon, 8 Apr 2024 17:07:19 +0000 (19:07 +0200)
committerEshel Yaron <me@eshelyaron.com>
Wed, 10 Apr 2024 20:30:08 +0000 (22:30 +0200)
Add a hack to prevent flymake from complaining about a missing lexical
cookie when enabled in *scratch*.

* lisp/emacs-lisp/bytecomp.el
(bytecomp--inhibit-lexical-cookie-warning): New variable.
(byte-compile-file): Use it to gate the warning.
* lisp/progmodes/elisp-mode.el (elisp-flymake-byte-compile):
Set the inhibitor when spawning a check in lisp-interaction-mode.

(cherry picked from commit cda5155c618d774810ce5e044efe1101846054ac)

lisp/emacs-lisp/bytecomp.el
lisp/progmodes/elisp-mode.el

index 5cff86784f07b2368e065b48666e8f0bf9f5c2f1..fb3278c08abd8bbe1570bb6bc8cdccc22baab507 100644 (file)
@@ -2149,6 +2149,8 @@ If compilation is needed, this functions returns the result of
                 (cons tempfile target-file))
         (rename-file tempfile target-file t)))))
 
+(defvar bytecomp--inhibit-lexical-cookie-warning nil)
+
 ;;;###autoload
 (defun byte-compile-file (filename &optional load)
   "Compile a file of Lisp code named FILENAME into a file of byte code.
@@ -2234,7 +2236,8 @@ See also `emacs-lisp-byte-compile-and-load'."
         (setq buffer-read-only nil
               filename buffer-file-name))
       ;; Don't inherit lexical-binding from caller (bug#12938).
-      (unless (local-variable-p 'lexical-binding)
+      (unless (or (local-variable-p 'lexical-binding)
+                  bytecomp--inhibit-lexical-cookie-warning)
         (let ((byte-compile-current-buffer (current-buffer)))
           (displaying-byte-compile-warnings
            (byte-compile-warn-x
index 1da1a9cddd72bd23bb37494c5030acbed99b1eab..c99c34c9c0ffce0c1726cf41969d2d6d517a30ea 100644 (file)
@@ -2168,6 +2168,8 @@ directory of the buffer being compiled, and nothing else.")
                                   (dolist (path x t) (unless (stringp path)
                                                        (throw 'tag nil)))))))
 
+(defvar bytecomp--inhibit-lexical-cookie-warning)
+
 ;;;###autoload
 (defun elisp-flymake-byte-compile (report-fn &rest _args)
   "A Flymake backend for elisp byte compilation.
@@ -2183,7 +2185,13 @@ current buffer state and calls REPORT-FN when done."
     (save-restriction
       (widen)
       (write-region (point-min) (point-max) temp-file nil 'nomessage))
-    (let* ((output-buffer (generate-new-buffer " *elisp-flymake-byte-compile*")))
+    (let* ((output-buffer (generate-new-buffer " *elisp-flymake-byte-compile*"))
+           ;; Hack: suppress warning about missing lexical cookie in
+           ;; *scratch* buffers.
+           (warning-suppression-opt
+            (and (derived-mode-p 'lisp-interaction-mode)
+                 '("--eval"
+                   "(setq bytecomp--inhibit-lexical-cookie-warning t)"))))
       (setq
        elisp-flymake--byte-compile-process
        (make-process
@@ -2195,6 +2203,7 @@ current buffer state and calls REPORT-FN when done."
                    ;; "--eval" "(setq load-prefer-newer t)" ; for testing
                    ,@(mapcan (lambda (path) (list "-L" path))
                              elisp-flymake-byte-compile-load-path)
+                   ,@warning-suppression-opt
                    "-f" "elisp-flymake--batch-compile-for-flymake"
                    ,temp-file)
         :connection-type 'pipe