Subject: gnus-summary-next-article selects the nil window

From: Stefan Monnier <[email-masked]>
Date: Thu, 06 Jan 2011 23:06:12 -0500

Package: Emacs
Version: 24.0.50

When I reach the end of a group in Gnus, if I have the *Group* buffer
displayed in a separate frame, pressing `n' signals an error about
select-window being called with a nil argument.

This is because of the following piece of code in gnus-summary-next-article:

      ;; For some reason, the group window gets selected.  We change
      ;; it back.
      (select-window (get-buffer-window (current-buffer)))

At this point the selected frame is the one displaying the *Group*
buffer, and the current-buffer is the *Summary...* buffer, which is not
displayed in this frame.  I added a 0 argument to get-buffer-window
which seems to work around the problem, but fundamentally I'm not sure
it's right for this code to assume that *Summary...* is
displayed somewhere.

        Stefan

In GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2011-01-05 on pastel
Windowing system distributor `The X.Org Foundation', version 11.0.10707000
configured using `configure  '--enable-maintainer-mode' 'CFLAGS=-Wall -Wno-pointer-sign -DUSE_LISP_UNION_TYPE -DSYNC_INPUT -DENABLE_CHECKING -DXASSERTS -DFONTSET_DEBUG -g -O1 -I/usr/include/GNUstep' '--with-x-toolkit=lucid''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: fr_CH.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  outline-minor-mode: t
  flyspell-mode: t
  eldoc-mode: t
  checkdoc-minor-mode: t
  electric-pair-mode: t
  electric-indent-mode: t
  url-handler-mode: t
  global-reveal-mode: t
  reveal-mode: t
  auto-insert-mode: t
  savehist-mode: t
  minibuffer-electric-default-mode: t
  mouse-wheel-mode: t
  menu-bar-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
  line-number-mode: t
  transient-mark-mode: t

Recent input:
l SPC l k k n n n N N N n <return> <return> <return> 
<return> <return> <return> n n n SPC n n n n n n n 
<switch-frame> <switch-frame> <help-echo> <down-mouse-1> 
<mouse-2> <switch-frame> <switch-frame> <switch-frame> 
q <switch-frame> C-e <right> <down> <up> C-M-x n <switch-frame> 
<switch-frame> <switch-frame> <help-echo> <select-window> 
<select-window> n <switch-frame> <switch-frame> <help-echo> 
<switch-frame> <switch-frame> C-s s e l e c t - w i 
n C-a <left> <right> <down> <left> <right> <up> <left> 
<right> <up> <left> <right> <up> <left> <right> <up> 
<left> <right> <down> <left> <right> <down> <left> 
<right> <down> <left> <right> <up> <left> <right> <up> 
<left> <right> <up> <left> <right> <up> <left> <right> 
<up> <left> <right> <up> <left> <right> <down> <left> 
<right> <down> <left> <right> <down> <left> <right> 
<down> <left> <right> <down> <left> <right> <down> 
<left> <right> <down> <left> <right> <down> <left> 
<right> <up> <up> <left> <right> <left> <right> <right> 
<right> <right> <help-echo> <switch-frame> <switch-frame> 
e ( c u r r e n t - b u f f e r ) <return> e M-p ( 
g e t - b u f f e r - w i n d o w SPC C-e ) <return> 
e M-p C-e <left> SPC 0 C-e <return> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <help-echo> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<help-echo> <select-window> <switch-frame> q <switch-frame> 
M-x r e p - e m - b u g <tab> <return> C-g <down-mouse-4> 
<mouse-4> <double-down-mouse-4> <double-mouse-4> <triple-down-mouse-4> 
<triple-mouse-4> M-x M-p C-g <down-mouse-1> <mouse-movement> 
<mouse-1> C-M-SPC M-w M-x M-p <return>

Recent messages:
Add PUSH documentation to end of doc string? (y or n)  n
checkdoc-defun: Argument `push' should appear (as PUSH) in the doc string
Entering debugger...
Mark saved where search started
#<buffer *Summary nnimap+diro:emacs*>
nil
#<window 3 on *Summary nnimap+diro:emacs*>
Back to top level.
Quit [3 times]
Mark set

Load-path shadows:
/usr/share/emacs23/site-lisp/bbdb/bbdb hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb
/usr/share/emacs23/site-lisp/bbdb/bbdb-mhe hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-mhe
/usr/share/emacs23/site-lisp/bbdb/bbdb-gnus hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-gnus
/usr/share/emacs23/site-lisp/bbdb/bbdb-migrate hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-migrate
/usr/share/emacs23/site-lisp/bbdb/bbdb-sc hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-sc
/usr/share/emacs23/site-lisp/bbdb/bbdb-snarf hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-snarf
/usr/share/emacs23/site-lisp/bbdb/bbdb-w3 hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-w3
/usr/share/emacs23/site-lisp/bbdb/bbdb-gui hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-gui
/usr/share/emacs23/site-lisp/bbdb/bbdb-print hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-print
/usr/share/emacs23/site-lisp/bbdb/bbdb-rmail hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-rmail
/usr/share/emacs23/site-lisp/bbdb/bbdb-vm hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-vm
/usr/share/emacs23/site-lisp/bbdb/bbdb-ftp hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-ftp
/usr/share/emacs23/site-lisp/bbdb/bbdb-merge hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-merge
/usr/share/emacs23/site-lisp/bbdb/bbdb-whois hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-whois
/usr/share/emacs23/site-lisp/bbdb/bbdb-com hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-com
/usr/share/emacs23/site-lisp/bbdb/bbdb-hooks hides /usr/share/emacs/site-lisp/bbdb/lisp/bbdb-hooks

Features:
(vc-dispatcher gnus-dup browse-url emacsbug woman tutorial help-macro
man assoc info-look info help-at-pt ehelp apropos multi-isearch cl-specs
xscheme warnings trace testcover scheme unsafep re-builder shadow
inf-lisp ielm pp comint ring elp edebug cust-print vc-bzr sha1 hex-util
filecache find-func debug nnfolder gnus-topic cus-edit cus-start
cus-load nnagent nnml flow-fill supercite regi mule-util sort smiley
ansi-color gnus-cite mail-extr gnus-async gnus-bcklg qp byte-opt
bytecomp byte-compile gnus-ml disp-table nndraft nnmh nnimap parse-time
utf7 executable copyright gnus-agent gnus-srvr gnus-score score-mode
nnvirtual gnus-msg gnus-art mm-uu mml2015 epg-config mm-view mml-smime
smime password-cache dig mailcap nntp proto-stream starttls tls
gnus-cache nnir gnus-sum macroexp nnoo gnus-group time-date gnus-undo
nnmail mail-source format-spec server gnus-start gnus-spec gnus-int
gnus-range message sendmail rfc822 mml mml-sec mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev
gmm-utils mailheader gnus-win gnus gnus-ems nnheader mail-utils wid-edit
noutline outline easy-mmode flyspell ispell eldoc checkdoc regexp-opt
thingatpt help-mode easymenu view prog-mode electric url-handlers
url-parse auth-source netrc gnus-util url-vars mm-util mail-prsvr reveal
autoinsert uniquify advice help-fns advice-preload savehist
minibuf-eldef cl cl-loaddefs proof-site proof-autoloads pg-vars
bbdb-autoloads agda2 tooltip ediff-hook vc-hooks lisp-float-type mwheel
x-win x-dnd tool-bar dnd fontset image fringe lisp-mode register page
newcomment menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock
font-lock syntax 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 loaddefs
button faces cus-face files text-properties overlay md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
make-network-process dbusbind dynamic-setting system-font-setting
font-render-setting x-toolkit x multi-tty emacs)