Subject: bug#20306: 25.0.50; list-packages is broken

From: Thierry Volpiatto <[email-masked]>
Date: Sun, 12 Apr 2015 09:09:06 +0200

M-x list-packages is returning an error:

user-error: The current buffer is not a Package Menu

because package-menu-refresh is called outside of its context.
Consider calling it inside its buffer and after defining the mode.

diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index ad482e5..3d856dd 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -2942,14 +2942,12 @@ The list is displayed in a buffer named `*Packages*'."
   ;; Integrate the package-menu with updating the archives.
   (add-hook 'package--post-download-archives-hook
             #'package-menu--post-refresh)
-
-  ;; Fetch the remote list of packages.
-  (unless no-fetch (package-menu-refresh))
-
   ;; Generate the Package Menu.
   (let ((buf (get-buffer-create "*Packages*")))
     (with-current-buffer buf
       (package-menu-mode)
+      ;; Fetch the remote list of packages.
+      (unless no-fetch (package-menu-refresh))
       (package-menu--generate nil t))
     ;; The package menu buffer has keybindings.  If the user types
     ;; `M-x list-packages', that suggests it should become current.

In GNU Emacs 25.0.50.1 (x86_64-unknown-linux-gnu, X toolkit)
 of 2015-04-12 on dell-14z
Repository revision: 303797134fa05d2e0d156a5bd912f8baab418489
Windowing system distributor `The X.Org Foundation', version 11.0.11501000
System Description:	Ubuntu 14.04.2 LTS

Configured using:
 `configure --with-x-toolkit=lucid --without-toolkit-scroll-bars
 --without-gconf --without-gsettings'

Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS NOTIFY
LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB

Important settings:
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Emacs-Lisp

Minor modes in effect:
  diff-auto-refine-mode: t
  psession-mode: t
  golden-ratio-mode: t
  global-git-gutter-mode: t
  git-gutter-mode: t
  winner-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  auto-image-file-mode: t
  eldoc-in-minibuffer-mode: t
  show-paren-mode: t
  display-time-mode: t
  recentf-mode: t
  savehist-mode: t
  minibuffer-depth-indicate-mode: t
  helm-descbinds-mode: t
  helm-mode: t
  shell-dirtrack-mode: t
  helm-adaptive-mode: t
  helm-autoresize-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t

Recent messages:
user-error: The current buffer is not a Package Menu
Mark set [2 times]
Saving file /home/thierry/labo/emacs/lisp/emacs-lisp/package.el...
Wrote /home/thierry/labo/emacs/lisp/emacs-lisp/package.el
list-packages
Importing package-keyring.gpg...done
Package refresh done
(No changes need to be saved)
Finding changes in /home/thierry/labo/emacs/lisp/emacs-lisp/package.el...done
Mark set

Load-path shadows:
/home/thierry/.emacs.d/elpa/emms-20150329.1945/tq hides /usr/local/share/emacs/25.0.50/lisp/emacs-lisp/tq
~/elisp/auctex/lpath hides ~/elisp/emacs-wget/lpath

Features:
(shadow epa-mail emacsbug helm-ls-git mule-util network-stream nsm
starttls url-http url-gw url-cache url-auth cl-indent helm-elisp-package
helm-command helm-elisp helm-eval conf-mode sgml-mode markdown-mode
make-mode vc-filewise vc-rcs sh-script smie executable vc vc-dispatcher
vc-git diff-mode naquadah-theme em-unix em-script em-prompt em-ls
em-hist em-pred em-glob em-dirs em-cmpl em-basic em-banner em-alias
align-let server psession golden-ratio git-gutter cus-edit winner
undo-tree diff slime-xref-browser slime-banner slime-tramp slime-asdf
slime-fancy slime-trace-dialog slime-fontifying-fu slime-package-fu
slime-references slime-compiler-notes-tree slime-scratch
slime-presentations bridge slime-fuzzy slime-fancy-trace
slime-fancy-inspector slime-c-p-c slime-editing-commands slime-autodoc
slime-repl slime-parse slime etags xref arc-mode archive-mode image-file
xdvi-search preview-latex tex-site auto-loads pcomplete-extension
pcmpl-unix pcmpl-gnu em-term term disp-table ehelp python eldoc-eval
warnings whitespace paren time recentf tree-widget savehist mu4e-config
org-mu4e helm-mu mu4e-contrib mu4e mu4e-speedbar speedbar sb-image
ezimage dframe mu4e-main mu4e-view mu4e-headers mu4e-compose mu4e-draft
mu4e-actions ido rfc2368 mu4e-mark mu4e-message html2text mu4e-proc
mu4e-utils mu4e-lists mu4e-about mu4e-vars hl-line mu4e-meta gnus-dired
nnir gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail
mail-source tls utf7 netrc parse-time gnus-spec gnus-int gnus-range
gnus-win nnoo config-w3m w3m-search w3m doc-view jka-compr image-mode
timezone w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-ccl ccl w3m-favicon
w3m-image w3m-proc w3m-util smtpmail-async smtpmail sendmail dired-async
iterator lacarte iedit-rect iedit iedit-lib smallurl mm-url gnus
gnus-ems nnheader wid-edit rectangle-utils rect ledger-config ledger
esh-var esh-io esh-cmd esh-opt esh-ext esh-proc esh-groups eshell
esh-module esh-mode esh-arg esh-util tv-utils pcvs vc-cvs pcvs-parse
pcvs-info pcvs-defs pcvs-util ewoc mb-depth cl-info hyperspec esh-toggle
flymake no-word htmlize cl dired-extension emms-vlc-config
emms-librefm-stream emms-librefm-scrobbler emms-playlist-limit
emms-volume emms-volume-amixer emms-i18n emms-history emms-score
emms-stream-info emms-metaplaylist-mode emms-bookmarks emms-cue
emms-mode-line-icon emms-browser sort emms-playlist-sort
emms-last-played emms-player-xine emms-player-mpd tq emms-playing-time
emms-lyrics emms-url emms-tag-editor emms-mark emms-mode-line emms-cache
emms-info-ogginfo emms-info-mp3info emms-playlist-mode emms-player-vlc
emms-player-mplayer emms-info emms-streams later-do emms-source-playlist
emms-source-file locate emms-player-simple emms-setup emms emms-compat
org-config-thierry ob-sh org-crypt appt diary-lib diary-loaddefs
org-annotation-helper addressbook-bookmark message rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mailabbrev mail-utils gmm-utils mailheader
bookmark-firefox-handler bookmark-extensions init-helm-thierry
helm-descbinds helm-extensions-autoloads helm-mode helm-files
image-dired tramp tramp-compat tramp-loaddefs trampver shell dired-x
dired-aux ffap thingatpt helm-buffers helm-elscreen helm-tags
helm-bookmark helm-adaptive helm-info bookmark pp helm-locate helm-help
helm-org org-location-google-maps org-agenda google-maps
google-maps-static google-maps-geocode google-maps-base json org
org-macro org-footnote org-pcomplete pcomplete org-list org-faces
org-entities noutline outline org-version ob-emacs-lisp ob ob-tangle
ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint ob-core ob-eval
org-compat org-macs org-loaddefs format-spec find-func cal-menu calendar
cal-loaddefs helm-match-plugin helm-grep wgrep-helm wgrep helm-regexp
helm-plugin grep helm-external helm-net browse-url xml url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util url-parse url-vars mailcap helm-utils dired compile comint
ansi-color ring helm easy-mmode helm-source eieio-compat helm-config
helm-autoloads async-bytecomp async helm-aliases epa-file epa derived
epg auth-source eieio eieio-core cl-generic byte-opt bytecomp
byte-compile cl-extra seq cconv gnus-util mm-util mail-prsvr
password-cache cl-macs gv finder-inf slime-autoloads package epg-config
time-date avoid cus-start cus-load w3m-wget info easymenu edmacro kmacro
advice help-fns net-utils cl-loaddefs pcase cl-lib tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer cl-preloaded nadvice loaddefs button faces
cus-face macroexp files text-properties overlay sha1 md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
make-network-process dbusbind gfilenotify dynamic-setting
font-render-setting x-toolkit x multi-tty emacs)

Memory information:
((conses 16 864264 202764)
 (symbols 48 59337 3)
 (miscs 40 555 863)
 (strings 32 179895 15219)
 (string-bytes 1 5113488)
 (vectors 16 69318)
 (vector-slots 8 1756805 23131)
 (floats 8 1882 231)
 (intervals 56 53097 27372)
 (buffers 976 143)
 (heap 1024 80536 13029))
-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997