1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-03 11:33:37 +00:00

(cl-transform-lambda): Preserve the match-data.

This commit is contained in:
Stefan Monnier 2007-08-16 04:24:57 +00:00
parent 596047b3e7
commit 4d78a860b9
2 changed files with 17 additions and 9 deletions

View File

@ -1,3 +1,7 @@
2007-08-16 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/cl-macs.el (cl-transform-lambda): Preserve the match-data.
2007-08-16 Glenn Morris <rgm@gnu.org>
* ps-print.el (ps-font-size): Doc fix.

View File

@ -266,15 +266,19 @@ its argument list allows full Common Lisp conventions."
(nconc (nreverse simple-args)
(list '&rest (car (pop bind-lets))))
(nconc (let ((hdr (nreverse header)))
(require 'help-fns)
(cons (help-add-fundoc-usage
(if (stringp (car hdr)) (pop hdr))
;; orig-args can contain &cl-defs (an internal CL
;; thingy that I do not understand), so remove it.
(let ((x (memq '&cl-defs orig-args)))
(if (null x) orig-args
(delq (car x) (remq (cadr x) orig-args)))))
hdr))
;; Macro expansion can take place in the middle of
;; apparently harmless computation, so it should not
;; touch the match-data.
(save-match-data
(require 'help-fns)
(cons (help-add-fundoc-usage
(if (stringp (car hdr)) (pop hdr))
;; orig-args can contain &cl-defs (an internal
;; CL thingy I don't understand), so remove it.
(let ((x (memq '&cl-defs orig-args)))
(if (null x) orig-args
(delq (car x) (remq (cadr x) orig-args)))))
hdr)))
(list (nconc (list 'let* bind-lets)
(nreverse bind-forms) body)))))))