[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#13625: 24.1; Enable 'package-menu-execute being non-interactive
From: |
Yves Baumes |
Subject: |
bug#13625: 24.1; Enable 'package-menu-execute being non-interactive |
Date: |
Mon, 4 Feb 2013 23:09:40 +0100 |
Ok! I was stuck, with the `interactive' ... Then here is the revised diff:
=== modified file 'lisp/emacs-lisp/package.el'
--- lisp/emacs-lisp/package.el 2013-01-01 09:11:05 +0000
+++ lisp/emacs-lisp/package.el 2013-02-04 21:49:41 +0000
@@ -1588,7 +1588,7 @@
(length upgrades)
(if (= (length upgrades) 1) "" "s")))))
-(defun package-menu-execute ()
+(defun package-menu-execute (&optional dont-query)
"Perform marked Package Menu actions.
Packages marked for installation are downloaded and installed;
packages marked for deletion are removed."
@@ -1611,26 +1611,30 @@
(push (car id) install-list))))
(forward-line)))
(when install-list
- (if (yes-or-no-p
- (if (= (length install-list) 1)
- (format "Install package `%s'? " (car install-list))
- (format "Install these %d packages (%s)? "
- (length install-list)
- (mapconcat 'symbol-name install-list ", "))))
+ (if (or
+ dont-query
+ (yes-or-no-p
+ (if (= (length install-list) 1)
+ (format "Install package `%s'? " (car install-list))
+ (format "Install these %d packages (%s)? "
+ (length install-list)
+ (mapconcat 'symbol-name install-list ", ")))))
(mapc 'package-install install-list)))
;; Delete packages, prompting if necessary.
(when delete-list
- (if (yes-or-no-p
- (if (= (length delete-list) 1)
- (format "Delete package `%s-%s'? "
- (caar delete-list)
- (cdr (car delete-list)))
- (format "Delete these %d packages (%s)? "
- (length delete-list)
- (mapconcat (lambda (elt)
- (concat (car elt) "-" (cdr elt)))
- delete-list
- ", "))))
+ (if (or
+ dont-query
+ (yes-or-no-p
+ (if (= (length delete-list) 1)
+ (format "Delete package `%s-%s'? "
+ (caar delete-list)
+ (cdr (car delete-list)))
+ (format "Delete these %d packages (%s)? "
+ (length delete-list)
+ (mapconcat (lambda (elt)
+ (concat (car elt) "-" (cdr elt)))
+ delete-list
+ ", ")))))
(dolist (elt delete-list)
(condition-case-unless-debug err
(package-delete (car elt) (cdr elt))
As you wrote in previous emails, every possible call to
`package-menu-execute' remains compatible as is.
And I just needed to add a `t' parameter in my script.
Just perfect. :-)
Regards
Yves
Le 4 févr. 2013 à 20:44, Stefan Monnier a écrit :
>> I've found that whatever you do, an interactive call provide a numeric
>> value of '1'. Reading the Emacs Lisp Reference Manual, I didn't find
>> a way to negate the boolean value with `interactive'.
>
> But since it's an optional parameter, you can just not provide it, in
> which case it defaults to nil.
>
>> -(defun package-menu-execute ()
>> +(defun package-menu-execute (&optional prompt-user)
> ^^^^^^^^^^^
> dont-query
>
>> "Perform marked Package Menu actions.
>> Packages marked for installation are downloaded and installed;
>> packages marked for deletion are removed."
>> - (interactive)
>> + (interactive "p")
>
> Leave it as (interactive) which will not provide any argument, so
> dont-query will be nil for interactive calls. And for your own calls,
> you can pass a non-nil argument.
>
>
> Stefan
bug#13625: Rép : bug#13625: 24.1; Enable 'package-menu-execute being non-interactive, Yves Baumes, 2013/02/05