+ (setq ids (sort ids '<))
+
+ (if (> (length ids) default)
+ (let ((cursor-in-echo-area nil))
+ (setq default
+ (string-to-number
+ (read-string
+ (format
+ "How many reports (available %d, default %d): "
+ (length ids) default)
+ nil
+ nil
+ (number-to-string default))))))
+
+ (if (> (length ids) default)
+ (let ((i 0))
+ (while ids
+ (setq i (1+ i)
+ widgets (append
+ widgets
+ (list
+ (widget-convert
+ 'push-button
+ :follow-link 'mouse-face
+ :notify (lambda (widget &rest ignore)
+ (debbugs-show-reports
+ (widget-get widget :suppress-done)
+ widget
+ (widget-get widget :widgets)))
+ :suppress-done suppress-done
+ :buffer-name (format "*Emacs Bugs*<%d>" i)
+ :bug-ids (butlast ids (- (length ids) default))
+ (format " %d" i))))
+ ids (last ids (- (length ids) default))))
+ (debbugs-show-reports suppress-done (car widgets) widgets))
+
+ (debbugs-show-reports suppress-done
+ (widget-convert
+ 'const
+ :buffer-name "*Emacs Bugs*"
+ :bug-ids ids)
+ nil))))
+
+(defun debbugs-show-reports (suppress-done widget widgets)
+ "Show bug reports as given in WIDGET property :bug-ids."
+ (pop-to-buffer (get-buffer-create (widget-get widget :buffer-name)))
+ (debbugs-mode)
+ (let ((inhibit-read-only t))