GNU bug report logs -
#35504
26.2; Key `g' should run `package-menu-refresh' in the *Packages* buffer
Previous Next
Reported by: Rudi Schlatte <rudi <at> constantly.at>
Date: Tue, 30 Apr 2019 14:54:01 UTC
Severity: wishlist
Tags: patch
Found in version 26.2
Fixed in version 27.1
Done: Stefan Kangas <stefan <at> marxist.se>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 35504 in the body.
You can then email your comments to 35504 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Tue, 30 Apr 2019 14:54:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Rudi Schlatte <rudi <at> constantly.at>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Tue, 30 Apr 2019 14:54:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
The ‘g’ key seems to be the standard way to refresh a list of things.
For example, ‘g’ runs ‘gnus-group-get-new-news’ in the gnus *Group*
buffer and ‘revert-buffer’ in vc-dir-mode. In the package list,
‘package-menu-refresh’ is run by the ‘r’ key instead.
Since ‘g’ is unbound in ‘package-menu-mode’, could a binding be added to
run ‘package-menu-refresh’ for that key?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Tue, 30 Apr 2019 15:49:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 35504 <at> debbugs.gnu.org (full text, mbox):
severity 35504 wishlist
quit
Rudi Schlatte <rudi <at> constantly.at> writes:
> The ‘g’ key seems to be the standard way to refresh a list of things.
> For example, ‘g’ runs ‘gnus-group-get-new-news’ in the gnus *Group*
> buffer and ‘revert-buffer’ in vc-dir-mode. In the package list,
> ‘package-menu-refresh’ is run by the ‘r’ key instead.
>
> Since ‘g’ is unbound in ‘package-menu-mode’, could a binding be added to
> run ‘package-menu-refresh’ for that key?
It is not unbound; it is bound to the standard command revert-buffer,
which in this case calls tabulated-list-revert, which in turn runs
tabulated-list-revert-hook, which in turn calls package-menu--refresh.
[The command revert-buffer is bound to 'g' by default in modes derived
from special-mode; see (info "(elisp) Basic Major Modes").]
Having said that, I know neither what the intention is behind having two
keys bound to different commands, nor why the 'g' key is not documented
under (info "(emacs) Package Menu"). Hopefully someone else can shed
some light upon this.
At least two other people, including Stefan (CCed), share your
preference:
https://lists.gnu.org/archive/html/emacs-devel/2010-10/msg01092.html
https://lists.gnu.org/archive/html/emacs-devel/2010-10/msg01097.html
FWIW, as someone who doesn't understand the purpose of the
package-menu--refresh binding, I am also in favour of merging
the 'r' and 'g' bindings.
Thanks,
--
Basil
Severity set to 'wishlist' from 'normal'
Request was from
"Basil L. Contovounesios" <contovob <at> tcd.ie>
to
control <at> debbugs.gnu.org
.
(Tue, 30 Apr 2019 15:58:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Tue, 30 Apr 2019 16:02:02 GMT)
Full text and
rfc822 format available.
Message #13 received at 35504 <at> debbugs.gnu.org (full text, mbox):
> On 30 Apr 2019, at 17:47, Basil L. Contovounesios <contovob <at> tcd.ie> wrote:
>
> Rudi Schlatte <rudi <at> constantly.at> writes:
>
>> The ‘g’ key seems to be the standard way to refresh a list of things.
>> For example, ‘g’ runs ‘gnus-group-get-new-news’ in the gnus *Group*
>> buffer and ‘revert-buffer’ in vc-dir-mode. In the package list,
>> ‘package-menu-refresh’ is run by the ‘r’ key instead.
>>
>> Since ‘g’ is unbound in ‘package-menu-mode’, could a binding be added to
>> run ‘package-menu-refresh’ for that key?
>
> It is not unbound; it is bound to the standard command revert-buffer,
> which in this case calls tabulated-list-revert, which in turn runs
> tabulated-list-revert-hook, which in turn calls package-menu--refresh.
Thanks for having a look! I could swear I checked whether `g' was bound or not, but apparently I didn't. Anyway, allow me to rephrase my bug report from a more end-user-y perspective.
Pressing `g' in a gnus group buffer connects to the network, fetches new data from various servers, and updates the buffer accordingly. The key `r' achieves the same effect in a package list buffer: I can see Emacs contacting the servers set up in `package-archives', get a message how many packages can be updated, etc. The `g' key, on the other hand, does not do that in a package list buffer.
I find my fingers still wanting to press `g' to achieve the effect of `r' after some months of retraining, hence the bug report.
FWIW, I completely agree with the "Wishlist" severity you set for the bug.
Thanks again,
Rudi
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Tue, 30 Apr 2019 17:00:03 GMT)
Full text and
rfc822 format available.
Message #16 received at 35504 <at> debbugs.gnu.org (full text, mbox):
> I find my fingers still wanting to press `g' to achieve the effect of `r'
> after some months of retraining, hence the bug report.
Agreed (IOW my opinion hasn't changed since
https://lists.gnu.org/archive/html/emacs-devel/2010-10/msg01097.html).
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Sat, 14 Sep 2019 19:23:02 GMT)
Full text and
rfc822 format available.
Message #19 received at 35504 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Stefan Monnier <monnier <at> IRO.UMontreal.CA> writes:
>> I find my fingers still wanting to press `g' to achieve the effect of `r'
>> after some months of retraining, hence the bug report.
>
> Agreed (IOW my opinion hasn't changed since
> https://lists.gnu.org/archive/html/emacs-devel/2010-10/msg01097.html).
I also agree. How about the attached patch?
Best regards,
Stefan Kangas
[0001-Bind-g-to-package-menu-refresh-in-package-menu.patch (application/octet-stream, attachment)]
Added tag(s) patch.
Request was from
Stefan Kangas <stefan <at> marxist.se>
to
control <at> debbugs.gnu.org
.
(Sat, 14 Sep 2019 19:23:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Mon, 16 Sep 2019 18:13:02 GMT)
Full text and
rfc822 format available.
Message #24 received at 35504 <at> debbugs.gnu.org (full text, mbox):
> I also agree. How about the attached patch?
Fine by me. I wonder, tho: why not set revert-buffer-function and then
redefine `package-menu-refresh` as an obsolete alias for `revert-buffer`?
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Thu, 03 Oct 2019 00:00:02 GMT)
Full text and
rfc822 format available.
Message #27 received at 35504 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
> > I also agree. How about the attached patch?
>
> Fine by me. I wonder, tho: why not set revert-buffer-function and then
> redefine `package-menu-refresh` as an obsolete alias for `revert-buffer`?
Sure, I've tried to do that in the attached patch. WDYT?
Best regards,
Stefan Kangas
[0001-Make-g-refresh-package-data-in-package-menu.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Thu, 03 Oct 2019 01:48:02 GMT)
Full text and
rfc822 format available.
Message #30 received at 35504 <at> debbugs.gnu.org (full text, mbox):
>> Fine by me. I wonder, tho: why not set revert-buffer-function and then
>> redefine `package-menu-refresh` as an obsolete alias for `revert-buffer`?
> Sure, I've tried to do that in the attached patch. WDYT?
[...]
> + (setq revert-buffer-function 'package-menu-revert)
[...]
> +(define-obsolete-function-alias 'package-menu-refresh 'package-menu-revert "27.1")
Could we make package-menu-refresh to be an (obsolete) alias of
`revert-buffer` instead (and make package-menu-revert an internal
non-interactive function)?
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Thu, 03 Oct 2019 01:55:01 GMT)
Full text and
rfc822 format available.
Message #33 received at 35504 <at> debbugs.gnu.org (full text, mbox):
Stefan Kangas <stefan <at> marxist.se> writes:
> Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>
>> > I also agree. How about the attached patch?
>>
>> Fine by me. I wonder, tho: why not set revert-buffer-function and then
>> redefine `package-menu-refresh` as an obsolete alias for `revert-buffer`?
>
> Sure, I've tried to do that in the attached patch. WDYT?
In addition to Stefan M.'s comments, I just noticed a couple of nits:
> -(defun package-menu-refresh ()
> +(defun package-menu-revert (&optional arg noconfirm)
If the arguments aren't used, they should be prefixed with underscores.
> "In Package Menu, download the Emacs Lisp package archive.
> Fetch the contents of each archive specified in
> `package-archives', and then refresh the package menu. Signal a
> -user-error if there is already a refresh running asynchronously."
> +user-error if there is already a refresh running asynchronously.
> +
> +`package-menu-mode' sets ‘revert-buffer-function’ to this
> +function. The args ARG and NOCONFIRM, passed from
> +‘revert-buffer’, are ignored."
revert-buffer-function and revert-buffer are quoted with curly single
quotes instead of the usual grave+apostrophe.
Thanks,
--
Basil
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Fri, 04 Oct 2019 14:37:01 GMT)
Full text and
rfc822 format available.
Message #36 received at 35504 <at> debbugs.gnu.org (full text, mbox):
Basil L. Contovounesios <contovob <at> tcd.ie> writes:
> > -(defun package-menu-refresh ()
> > +(defun package-menu-revert (&optional arg noconfirm)
>
> If the arguments aren't used, they should be prefixed with underscores.
Indeed, fixed.
> > "In Package Menu, download the Emacs Lisp package archive.
> > Fetch the contents of each archive specified in
> > `package-archives', and then refresh the package menu. Signal a
> > -user-error if there is already a refresh running asynchronously."
> > +user-error if there is already a refresh running asynchronously.
> > +
> > +`package-menu-mode' sets ‘revert-buffer-function’ to this
> > +function. The args ARG and NOCONFIRM, passed from
> > +‘revert-buffer’, are ignored."
>
> revert-buffer-function and revert-buffer are quoted with curly single
> quotes instead of the usual grave+apostrophe.
Well spotted, fixed. Thanks for the review.
Best regards,
Stefan Kangas
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Fri, 04 Oct 2019 15:10:02 GMT)
Full text and
rfc822 format available.
Message #39 received at 35504 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>
> >> Fine by me. I wonder, tho: why not set revert-buffer-function and then
> >> redefine `package-menu-refresh` as an obsolete alias for `revert-buffer`?
> > Sure, I've tried to do that in the attached patch. WDYT?
> [...]
> > + (setq revert-buffer-function 'package-menu-revert)
> [...]
> > +(define-obsolete-function-alias 'package-menu-refresh 'package-menu-revert "27.1")
>
> Could we make package-menu-refresh to be an (obsolete) alias of
> `revert-buffer` instead (and make package-menu-revert an internal
> non-interactive function)?
Absolutely, thanks for the suggestion. Fixed in the attached patch
together with the things Basil pointed out.
Please let me know what you think.
Best regards,
Stefan Kangas
[0001-Make-g-refresh-package-data-in-package-menu.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Sat, 02 Nov 2019 02:33:02 GMT)
Full text and
rfc822 format available.
Message #42 received at 35504 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Stefan Kangas <stefan <at> marxist.se> writes:
> Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>>
>> >> Fine by me. I wonder, tho: why not set revert-buffer-function and then
>> >> redefine `package-menu-refresh` as an obsolete alias for `revert-buffer`?
>> > Sure, I've tried to do that in the attached patch. WDYT?
>> [...]
>> > + (setq revert-buffer-function 'package-menu-revert)
>> [...]
>> > +(define-obsolete-function-alias 'package-menu-refresh 'package-menu-revert "27.1")
>>
>> Could we make package-menu-refresh to be an (obsolete) alias of
>> `revert-buffer` instead (and make package-menu-revert an internal
>> non-interactive function)?
>
> Absolutely, thanks for the suggestion. Fixed in the attached patch
> together with the things Basil pointed out.
>
> Please let me know what you think.
I've attached an updated patch below. If there are no further
comments, I intend to commit it in a couple of days.
Best regards,
Stefan Kangas
[0001-Make-g-refresh-package-data-in-package-menu.patch (text/x-diff, inline)]
From 71bda0bd328a901b2dc17e76f032efd0a10fcfec Mon Sep 17 00:00:00 2001
From: Stefan Kangas <stefankangas <at> gmail.com>
Date: Fri, 26 Jul 2019 12:49:35 +0200
Subject: [PATCH] Make 'g' refresh package data in package menu
* lisp/emacs-lisp/package.el (package-menu--refresh): Rename from
'package-menu-refresh', make internal and non-interactive.
(package-menu-mode-map, package-menu-mode-menu, package-menu-mode)
(list-packages): Use the above. (Bug#35504)
(package-menu-refresh): Redefine as obsolete fuction alias for
'revert-buffer'.
* doc/emacs/package.texi (Package Menu): Document it.
* etc/NEWS: Announce it.
---
doc/emacs/package.texi | 9 +++++----
etc/NEWS | 8 ++++++++
lisp/emacs-lisp/package.el | 17 +++++++++++------
3 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index 19efff7445..1c0f853427 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -149,12 +149,13 @@ Package Menu
dependencies; also, delete all packages marked with @kbd{d}
(@code{package-menu-execute}). This also removes the marks.
+@item g
@item r
+@kindex g @r{(Package Menu)}
@kindex r @r{(Package Menu)}
-@findex package-menu-refresh
-Refresh the package list (@code{package-menu-refresh}). This fetches
-the list of available packages from the package archive again, and
-recomputes the package list.
+Refresh the package list (@code{revert-buffer}). This fetches the
+list of available packages from the package archive again, and
+redisplays the package list.
@item / k
@kindex / k @r{(Package Menu)}
diff --git a/etc/NEWS b/etc/NEWS
index e614197125..79410bbec3 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1131,6 +1131,14 @@ the 'package-menu-clear-filter' function, bound to '/ /' by default.
---
*** The package list can now be sorted by version or description.
++++
+*** In Package Menu, 'g' now updates package data from archives.
+Previously, 'g' invoked 'tabulated-list-revert' which did not update
+the cached archive data. It is now bound to 'revert-buffer', which
+will now update the data.
+
+'package-menu-refresh' is an obsolete alias for 'revert-buffer'.
+
** Info
+++
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 8c8e86aead..3363b1bb52 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -2690,7 +2690,7 @@ package-menu-mode-map
(define-key map "d" 'package-menu-mark-delete)
(define-key map "i" 'package-menu-mark-install)
(define-key map "U" 'package-menu-mark-upgrades)
- (define-key map "r" 'package-menu-refresh)
+ (define-key map "r" 'revert-buffer)
(define-key map (kbd "/ k") 'package-menu-filter-by-keyword)
(define-key map (kbd "/ n") 'package-menu-filter-by-name)
(define-key map (kbd "/ /") 'package-menu-clear-filter)
@@ -2709,7 +2709,7 @@ package-menu-mode-menu
["Describe Package" package-menu-describe-package :help "Display information about this package"]
["Help" package-menu-quick-help :help "Show short key binding help for package-menu-mode"]
"--"
- ["Refresh Package List" package-menu-refresh
+ ["Refresh Package List" revert-buffer
:help "Redownload the ELPA archive"
:active (not package--downloads-in-progress)]
["Redisplay buffer" revert-buffer :help "Update the buffer with current list of packages"]
@@ -2764,6 +2764,7 @@ package-menu-mode
(setq tabulated-list-sort-key (cons "Status" nil))
(add-hook 'tabulated-list-revert-hook #'package-menu--refresh nil t)
(tabulated-list-init-header)
+ (setq revert-buffer-function 'package-menu--refresh)
(setf imenu-prev-index-position-function
#'package--imenu-prev-index-position-function)
(setf imenu-extract-index-name-function
@@ -3161,12 +3162,15 @@ package-menu--print-info-simple
(defvar package-menu--old-archive-contents nil
"`package-archive-contents' before the latest refresh.")
-(defun package-menu-refresh ()
+(defun package-menu--refresh (&optional _arg _noconfirm)
"In Package Menu, download the Emacs Lisp package archive.
Fetch the contents of each archive specified in
`package-archives', and then refresh the package menu. Signal a
-user-error if there is already a refresh running asynchronously."
- (interactive)
+user-error if there is already a refresh running asynchronously.
+
+`package-menu-mode' sets `revert-buffer-function' to this
+function. The args ARG and NOCONFIRM, passed from
+`revert-buffer', are ignored."
(unless (derived-mode-p 'package-menu-mode)
(user-error "The current buffer is not a Package Menu"))
(when (and package-menu-async package--downloads-in-progress)
@@ -3174,6 +3178,7 @@ package-menu-refresh
(setq package-menu--old-archive-contents package-archive-contents)
(setq package-menu--new-package-list nil)
(package-refresh-contents package-menu-async))
+(define-obsolete-function-alias 'package-menu-refresh 'revert-buffer "27.1")
(defun package-menu-hide-package ()
"Hide a package under point in Package Menu.
@@ -3637,7 +3642,7 @@ list-packages
(package-menu-mode)
;; Fetch the remote list of packages.
- (unless no-fetch (package-menu-refresh))
+ (unless no-fetch (package-menu--refresh))
;; If we're not async, this would be redundant.
(when package-menu-async
--
2.20.1
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#35504
; Package
emacs
.
(Wed, 06 Nov 2019 00:01:02 GMT)
Full text and
rfc822 format available.
Message #45 received at 35504 <at> debbugs.gnu.org (full text, mbox):
close 35504 27.1
thanks
Stefan Kangas <stefan <at> marxist.se> writes:
> I've attached an updated patch below. If there are no further
> comments, I intend to commit it in a couple of days.
Now pushed to master as commit 0c293f1520. Closing.
Best regards,
Stefan Kangas
bug marked as fixed in version 27.1, send any further explanations to
35504 <at> debbugs.gnu.org and Rudi Schlatte <rudi <at> constantly.at>
Request was from
Stefan Kangas <stefan <at> marxist.se>
to
control <at> debbugs.gnu.org
.
(Wed, 06 Nov 2019 00:01:07 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Wed, 04 Dec 2019 12:24:04 GMT)
Full text and
rfc822 format available.
This bug report was last modified 4 years and 142 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.