[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] scratch/auctex-lexbind e17f0fc 10/11: Prefer lexical closures ove
From: |
Stefan Monnier |
Subject: |
[elpa] scratch/auctex-lexbind e17f0fc 10/11: Prefer lexical closures over hand-built lambda forms |
Date: |
Tue, 23 Mar 2021 11:34:01 -0400 (EDT) |
branch: scratch/auctex-lexbind
commit e17f0fc4d22640a999e72b54be318881d27e6235
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
Prefer lexical closures over hand-built lambda forms
now that we have lexical-binding, we can use closures, which have the
advantage over `(lambda ...) of allowing the byte-compiler to compile
the code, and also makes it possible to Edebug it.
* preview.el (preview-gs-close, preview-gs-flag-error)
(preview-scale-from-face, preview-gs-flag-error)
(preview-scale-from-face, preview-disabled-string)
(preview-buffer-restore, preview-place-preview)
(preview-reinstate-preview, preview-cache-preamble)
(preview-generate-preview, preview-report-bug):
* toolbar-x.el (toolbarx-emacs-mount-popup-menu):
* tex.el (TeX-mode-specific-command-menu): Replace `(lambda...) with
closures.
---
preview.el | 133 ++++++++++++++++++++++++++++++-----------------------------
tex.el | 4 +-
toolbar-x.el | 26 ++++++------
3 files changed, 83 insertions(+), 80 deletions(-)
diff --git a/preview.el b/preview.el
index 3e74882..293dc6f 100644
--- a/preview.el
+++ b/preview.el
@@ -1030,13 +1030,11 @@ The usual PROCESS and COMMAND arguments for
(file-error nil)))
(preview-gs-restart))
(setq TeX-sentinel-function
- `(lambda (process command)
- (,(if preview-parsed-pdfoutput
- #'preview-pdf2dsc-sentinel
- #'preview-gs-dvips-sentinel)
- process
- command
- t))))
+ (let ((fun (if preview-parsed-pdfoutput
+ #'preview-pdf2dsc-sentinel
+ #'preview-gs-dvips-sentinel)))
+ (lambda (process command)
+ (funcall fun process command t)))))
(TeX-synchronous-sentinel "Preview-DviPS" (cdr preview-gs-file)
process))
;; pathological case: no previews although we sure thought so.
@@ -1320,9 +1318,8 @@ Try \\[ps-run-start] \\[ps-run-buffer] and \
(file-relative-name
(car (nth 1 filenames)))))
(ps-open
- `(lambda() (interactive "@")
- (preview-mouse-open-error
- ,(concat
+ (let ((str
+ (concat
(mapconcat #'shell-quote-argument
(append (list
preview-gs-command
@@ -1332,7 +1329,8 @@ Try \\[ps-run-start] \\[ps-run-buffer] and \
"\nGS>"
preview-gs-init-string
(aref (overlay-get ov 'queued) 1)
- err))))
+ err)))
+ (lambda () (interactive "@") (preview-mouse-open-error str))))
(str
(preview-make-clickable
nil
@@ -1340,20 +1338,20 @@ Try \\[ps-run-start] \\[ps-run-buffer] and \
"%s views error message
%s more options"
ps-open
- `(lambda() (interactive)
- (popup-menu
- '("PostScript error"
- ["View error" ,ps-open]
- ["View source"
- (lambda () (interactive "@")
- ,(if preview-ps-file
- `(preview-mouse-open-eps
- ,(if (consp (car file))
- (nth 1 (car file))
- (car file))
- ,(nth 0 (aref preview-gs-dsc
- (aref (overlay-get ov 'queued) 2))))
- `(preview-mouse-open-eps ,file)))]))))))
+ (let ((args
+ (if preview-ps-file
+ (list
+ (if (consp (car file)) (nth 1 (car file)) (car file))
+ (nth 0 (aref preview-gs-dsc
+ (aref (overlay-get ov 'queued) 2))))
+ (list file))))
+ (lambda () (interactive)
+ (popup-menu
+ `("PostScript error"
+ ["View error" ,ps-open]
+ ["View source" ,(lambda () (interactive "@")
+ (apply #'preview-mouse-open-eps
+ args))])))))))
(overlay-put ov 'strings (cons str str))
(preview-toggle ov)))
@@ -1535,10 +1533,10 @@ had let your document be parsed by AucTeX."
This calculates the scale of EPS images from a document assumed
to have a default font size given by function `preview-document-pt'
so that they match the reference face in height."
- `(lambda nil
- (/ ,(/ (preview-inherited-face-attribute 'preview-reference-face :height
- 'default) 10.0)
- (preview-document-pt))))
+ (let ((d (/ (preview-inherited-face-attribute 'preview-reference-face :height
+ 'default)
+ 10.0)))
+ (lambda () (/ d (preview-document-pt)))))
(defvar preview-min-spec)
@@ -2183,7 +2181,7 @@ active (`transient-mark-mode'), it is run through
`preview-region'."
"\
%s regenerates preview
%s more options"
- `(lambda() (interactive) (preview-regenerate ,ov)))
+ (lambda () (interactive) (preview-regenerate ov)))
;; icon on separate line only for stuff starting on its own line
(with-current-buffer (overlay-buffer ov)
(save-excursion
@@ -2374,10 +2372,12 @@ Remove them if they have expired."
This delay is so that minor modes changing buffer positions
\(like `x-symbol-mode' does) will not wreak havoc.
BUFFER-MISC is the appropriate data to be used."
- (add-hook 'desktop-delay-hook `(lambda ()
- (with-current-buffer ,(current-buffer)
- (preview-buffer-restore-internal
- ',buffer-misc)))))
+ (add-hook 'desktop-delay-hook
+ (let ((buf (current-buffer)))
+ (lambda ()
+ (with-current-buffer buf
+ (preview-buffer-restore-internal
+ buffer-misc))))))
(defun desktop-buffer-preview (file-name _buffer-name misc)
"Hook function for restoring persistent previews into a buffer."
@@ -2578,10 +2578,10 @@ to the close hook."
(overlay-put ov 'preview-map
(preview-make-clickable
nil nil nil
- `(lambda(event) (interactive "e")
- (preview-toggle ,ov 'toggle event))
- `(lambda(event) (interactive "e")
- (preview-context-menu ,ov event))))
+ (lambda (event) (interactive "e")
+ (preview-toggle ov 'toggle event))
+ (lambda (event) (interactive "e")
+ (preview-context-menu ov event))))
(overlay-put ov 'timestamp tempdir)
(when (cdr counters)
(overlay-put ov 'preview-counters counters)
@@ -2671,10 +2671,10 @@ if any."
(overlay-put ov 'preview-map
(preview-make-clickable
nil nil nil
- `(lambda(event) (interactive "e")
- (preview-toggle ,ov 'toggle event))
- `(lambda(event) (interactive "e")
- (preview-context-menu ,ov event))))
+ (lambda (event) (interactive "e")
+ (preview-toggle ov 'toggle event))
+ (lambda (event) (interactive "e")
+ (preview-context-menu ov event))))
(when counters
(overlay-put
ov 'preview-counters
@@ -3996,19 +3996,19 @@ If FORMAT-CONS is non-nil, a previous format may get
reused."
(prog1 (preview-generate-preview master command)
(add-hook 'kill-emacs-hook #'preview-cleanout-tempfiles t)
(setq TeX-sentinel-function
- `(lambda (process string)
- (condition-case err
- (progn
- (if (and (eq (process-status process) 'exit)
- (zerop (process-exit-status process)))
- (preview-watch-preamble
- ',master-file
- ',command
- ',format-cons)
- (preview-format-kill ',format-cons))
- (delete-file ',dump-file))
- (error (preview-log-error err "Dumping" process)))
- (preview-reraise-error process)))))))
+ (lambda (process _status)
+ (condition-case err
+ (progn
+ (if (and (eq (process-status process) 'exit)
+ (zerop (process-exit-status process)))
+ (preview-watch-preamble
+ master-file
+ command
+ format-cons)
+ (preview-format-kill format-cons))
+ (delete-file ',dump-file))
+ (error (preview-log-error err "Dumping" process)))
+ (preview-reraise-error process)))))))
(defun preview-cache-preamble-off (&optional old-format)
"Clear the pregenerated format file.
@@ -4150,16 +4150,18 @@ It returns the started process."
(let* (TeX-current-process-region-p)
(setq process (preview-cache-preamble dumped-cons))
(if process
+ ;; FIXME: Use `add-function'.
(setq TeX-sentinel-function
- `(lambda (process string)
- (funcall ,TeX-sentinel-function process string)
- (TeX-inline-preview-internal
- ,command ,file
- ',pr-file ,commandbuff
- ',dumped-cons
- ',master
- ',geometry
- (buffer-string)))))))
+ (let ((prev-fun TeX-sentinel-function))
+ (lambda (process string)
+ (funcall prev-fun process string)
+ (TeX-inline-preview-internal
+ command file
+ pr-file commandbuff
+ dumped-cons
+ master
+ geometry
+ (buffer-string))))))))
(or process
(TeX-inline-preview-internal command file
pr-file commandbuff
@@ -4278,7 +4280,8 @@ If not a regular release, the date of the last change.")
preview-undump-replacements
preview-auto-cache-preamble
preview-TeX-style-dir)
- `(lambda () (preview-dump-state ,(current-buffer)))
+ (let ((buf (current-buffer)))
+ (lambda () (preview-dump-state buf)))
(lambda ()
(insert (format "\nOutput from running `%s -h':\n"
preview-gs-command))
diff --git a/tex.el b/tex.el
index 214fa41..39cca4d 100644
--- a/tex.el
+++ b/tex.el
@@ -5013,8 +5013,8 @@ Brace insertion is only done if point is in a math
construct and
(defun TeX-mode-specific-command-menu (mode)
"Return a Command menu specific to the major MODE."
(list TeX-command-menu-name
- :filter `(lambda (&rest ignored)
- (TeX-mode-specific-command-menu-entries ',mode))
+ :filter (lambda (&rest _ignored)
+ (TeX-mode-specific-command-menu-entries mode))
"Bug."))
(defun TeX-mode-specific-command-menu-entries (mode)
diff --git a/toolbar-x.el b/toolbar-x.el
index 4e87d41..a1e15a3 100644
--- a/toolbar-x.el
+++ b/toolbar-x.el
@@ -299,18 +299,18 @@ inside Emacs. See documentation of that function for
more."
(setq used-symbols (cons key used-symbols)))
(define-key-after keymap (vector key)
`(menu-item ,i
- ,(append
- `(lambda nil (interactive)
- ,(if (eq real-type 'radio)
- `(setq ,var ,count)
- `(if (memq ,count ,var)
- (setq ,var (delete ,count ,var))
- (setq ,var (sort (cons ,count ,var) #'<))))
- (toolbarx-refresh))
- (when (eq real-save 'always)
- `((customize-save-variable
- (quote ,var) ,var)))
- `(,var))
+ ,(let ((count count))
+ (lambda () (interactive)
+ (set var
+ (if (eq real-type 'radio)
+ count
+ (if (memq count (symbol-value var))
+ (delete count (symbol-value var))
+ (sort (cons count (symbol-value var)) #'<))))
+ (toolbarx-refresh)
+ (when (eq real-save 'always)
+ (customize-save-variable var (symbol-value var)))
+ (symbol-value var)))
:button ,(if (eq real-type 'radio)
`(:radio eq ,var ,count)
`(:toggle memq ,count ,var))))
@@ -329,7 +329,7 @@ inside Emacs. See documentation of that function for more."
(lambda nil (interactive)
(customize-save-variable (quote ,var) ,var)))))
;; returns a `lambda'-expression
- `(lambda nil (interactive) (popup-menu (quote ,keymap)))))
+ (lambda () (interactive) (popup-menu keymap))))
(defun toolbarx-mount-popup-menu (strings var type &optional title save)
"Return a command that show a popup menu.
- [elpa] scratch/auctex-lexbind ed12676 06/11: Remove some XEmacs and old-Emacs code, (continued)
- [elpa] scratch/auctex-lexbind ed12676 06/11: Remove some XEmacs and old-Emacs code, Stefan Monnier, 2021/03/23
- [elpa] scratch/auctex-lexbind 78c09ee 04/11: Remove some redundant `:group` arguments, Stefan Monnier, 2021/03/23
- [elpa] scratch/auctex-lexbind 25e7150 07/11: Miscellaneous minor changes, Stefan Monnier, 2021/03/23
- [elpa] scratch/auctex-lexbind 4b0e9eb 09/11: Activate lexical-binding everywhere, Stefan Monnier, 2021/03/23
- [elpa] scratch/auctex-lexbind 124b604 08/11: Expose the body of advice to the compiler, Stefan Monnier, 2021/03/23
- [elpa] scratch/auctex-lexbind 5005740 11/11: Use UTF-8 for all ELisp files, Stefan Monnier, 2021/03/23
- [elpa] scratch/auctex-lexbind 60c12f8 02/11: * font-latex.el (font-latex-make-built-in-keywords): Make it a macro, Stefan Monnier, 2021/03/23
- [elpa] scratch/auctex-lexbind ee87fa5 01/11: * font-latex.el (font-latex-make-built-in-keywords): Reorder defs, Stefan Monnier, 2021/03/23
- [elpa] scratch/auctex-lexbind 333ae25 05/11: Don't quote `lambda`, Stefan Monnier, 2021/03/23
- [elpa] scratch/auctex-lexbind 6e60f03 03/11: Use #' rather than ' to quote functions, Stefan Monnier, 2021/03/23
- [elpa] scratch/auctex-lexbind e17f0fc 10/11: Prefer lexical closures over hand-built lambda forms,
Stefan Monnier <=