Function: oclosure--copy

oclosure--copy is a byte-compiled function defined in oclosure.el.gz.

Signature

(oclosure--copy OCLOSURE MUTLIST &rest ARGS)

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/oclosure.el.gz
(defun oclosure--copy (oclosure mutlist &rest args)
  (cl-assert (closurep oclosure))
  (if (byte-code-function-p oclosure)
      (apply #'make-closure oclosure
             (if (null mutlist)
                 args
               (mapcar (lambda (arg) (if (pop mutlist) (list arg) arg)) args)))
    (cl-assert (consp (aref oclosure 1)))
    (cl-assert (null (aref oclosure 3)))
    (cl-assert (symbolp (aref oclosure 4)))
    (let ((env (aref oclosure 2)))
      (make-interpreted-closure
       (aref oclosure 0)
       (aref oclosure 1)
       (named-let loop ((env env) (args args))
         (if (null args) env
           (cons (cons (caar env) (car args))
                 (loop (cdr env) (cdr args)))))
       (aref oclosure 4)
       (if (> (length oclosure) 5)
           `(interactive ,(aref oclosure 5)))))))