Merge from emacs-23; up to 2010-06-09T17:54:28Z!albinus@detlef.
[bpt/emacs.git] / lisp / emacs-lisp / cl-extra.el
index 12dafe2..7468a02 100644 (file)
@@ -766,21 +766,15 @@ This also does some trivial optimizations to make the form prettier."
                                (eq (car-safe (car body)) 'interactive))
                       (push (list 'quote (pop body)) decls))
                     (put (car (last cl-closure-vars)) 'used t)
-                    (append
-                     (list 'list '(quote lambda) '(quote (&rest --cl-rest--)))
-                     (sublis sub (nreverse decls))
-                     (list
-                      (list* 'list '(quote apply)
-                             (list 'quote
-                                    (list 'function
-                                          (list* 'lambda
-                                                 (append new (cadadr form))
-                                                 (sublis sub body))))
-                             (nconc (mapcar (function
-                                             (lambda (x)
-                                               (list 'list '(quote quote) x)))
-                                            cl-closure-vars)
-                                    '((quote --cl-rest--)))))))
+                     `(list 'lambda '(&rest --cl-rest--)
+                            ,@(sublis sub (nreverse decls))
+                            (list 'apply
+                                  (list 'quote
+                                        #'(lambda ,(append new (cadadr form))
+                                            ,@(sublis sub body)))
+                                  ,@(nconc (mapcar (lambda (x) `(list 'quote ,x))
+                                                   cl-closure-vars)
+                                           '((quote --cl-rest--))))))
                 (list (car form) (list* 'lambda (cadadr form) body))))
           (let ((found (assq (cadr form) env)))
             (if (and found (ignore-errors