]> git.eshelyaron.com Git - emacs.git/commitdiff
(calc-save-modes): Add a `lexical-binding` cookie
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 13 Apr 2025 14:33:47 +0000 (10:33 -0400)
committerEshel Yaron <me@eshelyaron.com>
Sun, 13 Apr 2025 21:02:06 +0000 (23:02 +0200)
* lisp/calc/calc-mode.el (calc-save-modes): Add a `lexical-binding`
cookie when it is safe.  Use `pcase-dolist` and `pp`.

(cherry picked from commit 9dfd4c6bd3140585392a428201088e9f019b0071)

lisp/calc/calc-mode.el

index 2da2a930672703318f135e30811f3482106dc6ff..aee81ee41d287d6de9fb4f26f774a100fa0037b1 100644 (file)
        (goto-char (point-max))
        (insert "\n\n")
        (forward-char -1))
+     (save-excursion
+       (goto-char (point-max))
+       (skip-chars-backward " \n\t\f")
+       (when (bobp)
+         (insert ";;; -*- mode: emacs-lisp; lexical-binding:t -*-\n")))
      (insert ";;; Mode settings stored by Calc on " (current-time-string) "\n")
-     (let ((list calc-mode-var-list))
-       (while list
-        (let* ((v (car (car list)))
-               (def (nth 1 (car list)))
-               (val (car vals)))
-          (or (equal val def)
-              (progn
-                (insert "(setq " (symbol-name v) " ")
-                (if (and (or (listp val)
-                             (symbolp val))
-                         (not (memq val '(nil t))))
-                    (insert "'"))
-                (insert (prin1-to-string val) ")\n"))))
-        (setq list (cdr list)
-              vals (cdr vals))))
+     (pcase-dolist (`(,v ,def) calc-mode-var-list)
+       (let* ((val (pop vals)))
+        (or (equal val def)
+            (pp `(setq ,v ,(macroexp-quote val)) (current-buffer)))))
      (run-hooks 'calc-mode-save-hook)
      (insert ";;; End of mode settings\n")
      (save-buffer)