(calc-save-modes): Add a lexical-binding cookie

* lisp/calc/calc-mode.el (calc-save-modes): Add a `lexical-binding`
cookie when it is safe.  Use `pcase-dolist` and `pp`.
This commit is contained in:
Stefan Monnier 2025-04-13 10:33:47 -04:00
parent e0c7b6e31e
commit 9dfd4c6bd3

View file

@ -290,22 +290,16 @@
(goto-char (point-max))
(insert "\n\n")
(forward-char -1))
(save-excursion
(goto-char (point-max))
(skip-chars-backward " \n\t ")
(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)