diff options
| author | Artur Malabarba | 2015-05-21 09:58:45 +0100 |
|---|---|---|
| committer | Artur Malabarba | 2015-05-21 09:59:45 +0100 |
| commit | 60c1ea3d209308b08bc66585044cae8d1df56def (patch) | |
| tree | 65293b8ecd1c90809afd01e7e62175ee526d5cdd | |
| parent | 35514815fa34a5ecf14ffd9f96d8b9ddb905e142 (diff) | |
| download | emacs-60c1ea3d209308b08bc66585044cae8d1df56def.tar.gz emacs-60c1ea3d209308b08bc66585044cae8d1df56def.zip | |
* lisp/emacs-lisp/package.el: Mode-line progress report
(package-menu--transaction-status): New variable.
(package-menu-mode, package-menu--perform-transaction): Use it.
| -rw-r--r-- | lisp/emacs-lisp/package.el | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 95882ee3069..444adf0d127 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el | |||
| @@ -2400,12 +2400,17 @@ will be deleted." | |||
| 2400 | (defvar package-menu--new-package-list nil | 2400 | (defvar package-menu--new-package-list nil |
| 2401 | "List of newly-available packages since `list-packages' was last called.") | 2401 | "List of newly-available packages since `list-packages' was last called.") |
| 2402 | 2402 | ||
| 2403 | (defvar package-menu--transaction-status nil | ||
| 2404 | "Mode-line status of ongoing package transaction.") | ||
| 2405 | |||
| 2403 | (define-derived-mode package-menu-mode tabulated-list-mode "Package Menu" | 2406 | (define-derived-mode package-menu-mode tabulated-list-mode "Package Menu" |
| 2404 | "Major mode for browsing a list of packages. | 2407 | "Major mode for browsing a list of packages. |
| 2405 | Letters do not insert themselves; instead, they are commands. | 2408 | Letters do not insert themselves; instead, they are commands. |
| 2406 | \\<package-menu-mode-map> | 2409 | \\<package-menu-mode-map> |
| 2407 | \\{package-menu-mode-map}" | 2410 | \\{package-menu-mode-map}" |
| 2408 | (setq mode-line-process '(package--downloads-in-progress ":Loading")) | 2411 | (setq mode-line-process '((package--downloads-in-progress ":Loading") |
| 2412 | (package-menu--transaction-status | ||
| 2413 | package-menu--transaction-status))) | ||
| 2409 | (setq tabulated-list-format | 2414 | (setq tabulated-list-format |
| 2410 | `[("Package" 18 package-menu--name-predicate) | 2415 | `[("Package" 18 package-menu--name-predicate) |
| 2411 | ("Version" 13 nil) | 2416 | ("Version" 13 nil) |
| @@ -2929,20 +2934,31 @@ objects removed." | |||
| 2929 | (defun package-menu--perform-transaction (install-list delete-list) | 2934 | (defun package-menu--perform-transaction (install-list delete-list) |
| 2930 | "Install packages in INSTALL-LIST and delete DELETE-LIST." | 2935 | "Install packages in INSTALL-LIST and delete DELETE-LIST." |
| 2931 | (if install-list | 2936 | (if install-list |
| 2932 | (dolist (pkg install-list) | 2937 | (let ((status-format (format ":Installing %%d/%d" |
| 2933 | (package-install | 2938 | (length install-list))) |
| 2934 | ;; Don't mark as selected if it's a new version of an | 2939 | (i 0) |
| 2935 | ;; installed package. | 2940 | (package-menu--transaction-status)) |
| 2936 | pkg (and (not (package-installed-p pkg)) | 2941 | (dolist (pkg install-list) |
| 2937 | (package-installed-p | 2942 | (setq package-menu--transaction-status |
| 2938 | (package-desc-name pkg))))) | 2943 | (format status-format (cl-incf i))) |
| 2944 | (force-mode-line-update) | ||
| 2945 | (redisplay 'force) | ||
| 2946 | (package-install | ||
| 2947 | ;; Don't mark as selected if it's a new version of an | ||
| 2948 | ;; installed package. | ||
| 2949 | pkg (and (not (package-installed-p pkg)) | ||
| 2950 | (package-installed-p | ||
| 2951 | (package-desc-name pkg)))))) | ||
| 2939 | ;; Once there are no more packages to install, proceed to | 2952 | ;; Once there are no more packages to install, proceed to |
| 2940 | ;; deletion. | 2953 | ;; deletion. |
| 2941 | (dolist (elt (package--sort-by-dependence delete-list)) | 2954 | (let ((package-menu--transaction-status ":Deleting")) |
| 2942 | (condition-case-unless-debug err | 2955 | (force-mode-line-update) |
| 2943 | (let ((inhibit-message t)) | 2956 | (redisplay 'force) |
| 2944 | (package-delete elt)) | 2957 | (dolist (elt (package--sort-by-dependence delete-list)) |
| 2945 | (error (message (cadr err))))))) | 2958 | (condition-case-unless-debug err |
| 2959 | (let ((inhibit-message t)) | ||
| 2960 | (package-delete elt)) | ||
| 2961 | (error (message (cadr err)))))))) | ||
| 2946 | 2962 | ||
| 2947 | (defun package-menu-execute (&optional noquery) | 2963 | (defun package-menu-execute (&optional noquery) |
| 2948 | "Perform marked Package Menu actions. | 2964 | "Perform marked Package Menu actions. |