Function: package-menu--perform-transaction

package-menu--perform-transaction is a byte-compiled function defined in package.el.gz.

Signature

(package-menu--perform-transaction INSTALL-LIST DELETE-LIST)

Documentation

Install packages in INSTALL-LIST and delete DELETE-LIST.

Return nil if there were no errors; non-nil otherwise.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/package.el.gz
(defun package-menu--perform-transaction (install-list delete-list)
  "Install packages in INSTALL-LIST and delete DELETE-LIST.
Return nil if there were no errors; non-nil otherwise."
  (let ((errors nil))
    (if install-list
        (let ((status-format (format ":Installing %%d/%d"
                                     (length install-list)))
              (i 0)
              (package-menu--transaction-status))
          (dolist (pkg install-list)
            (setq package-menu--transaction-status
                  (format status-format (cl-incf i)))
            (force-mode-line-update)
            (redisplay 'force)
            ;; Don't mark as selected, `package-menu-execute' already
            ;; does that.
            (package-install pkg 'dont-select))))
    (let ((package-menu--transaction-status ":Deleting"))
      (force-mode-line-update)
      (redisplay 'force)
      (dolist (elt (package--sort-by-dependence delete-list))
        (condition-case-unless-debug err
            (let ((inhibit-message (or inhibit-message package-menu-async)))
              (package-delete elt nil 'nosave))
          (error
           (push (package-desc-full-name elt) errors)
           (message "Error trying to delete `%s': %S"
                    (package-desc-full-name elt) err)))))
    errors))