[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/debbugs 656ec3d 018/311: * debbugs-gnu.el (debbugs-emac
From: |
Stefan Monnier |
Subject: |
[elpa] externals/debbugs 656ec3d 018/311: * debbugs-gnu.el (debbugs-emacs): Move reporting lines to |
Date: |
Sun, 29 Nov 2020 18:41:31 -0500 (EST) |
branch: externals/debbugs
commit 656ec3d72ad44787cfc362ddb0d3415f193377cc
Author: Michael Albinus <michael.albinus@gmx.de>
Commit: Michael Albinus <michael.albinus@gmx.de>
* debbugs-gnu.el (debbugs-emacs): Move reporting lines to
`debbugs-show-reports'. Create widgets for every report page.
(debbugs-show-reports): New defun.
(debbugs-select-report): Handle also page links.
---
ChangeLog | 7 ++++
debbugs-gnu.el | 126 ++++++++++++++++++++++++++++++++++++++++++++-------------
2 files changed, 104 insertions(+), 29 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 1de33e6..81678d4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-07-02 Michael Albinus <michael.albinus@gmx.de>
+
+ * debbugs-gnu.el (debbugs-emacs): Move reporting lines to
+ `debbugs-show-reports'. Create widgets for every report page.
+ (debbugs-show-reports): New defun.
+ (debbugs-select-report): Handle also page links.
+
2011-07-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
* debbugs-gnu.el (debbugs-summary-mode): Make sure we don't Cc
diff --git a/debbugs-gnu.el b/debbugs-gnu.el
index 44797d5..4de2c80 100644
--- a/debbugs-gnu.el
+++ b/debbugs-gnu.el
@@ -27,6 +27,7 @@
;;; Code:
(require 'debbugs)
+(require 'widget)
(eval-when-compile (require 'cl))
(autoload 'gnus-read-ephemeral-emacs-bug-group "gnus-group")
@@ -55,33 +56,80 @@
nil t "normal")))
(unless (consp severities)
(setq severities (list severities)))
- (pop-to-buffer (get-buffer-create "*Emacs Bugs*"))
- (debbugs-mode)
(let ((debbugs-port "gnu.org")
- (buffer-read-only nil)
- (ids nil)
- (default 500))
+ (default 500)
+ ids widgets)
(dolist (severity severities)
(setq ids (nconc ids
(debbugs-get-bugs :package (or package "emacs")
:severity severity
:archive (if archivedp
"1" "0")))))
+ (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))
(erase-buffer)
- (when (> (length ids) default)
- (let* ((cursor-in-echo-area nil)
- (input
- (read-string
- (format
- "How many reports (available %d, default %d): "
- (length ids) default)
- nil
- nil
- (number-to-string default))))
- (setq ids (last (sort ids '<) (string-to-number input)))))
-
- (dolist (status (sort (apply 'debbugs-get-status ids)
+ (when widgets
+ (widget-insert "Page:")
+ (mapc
+ (lambda (obj)
+ (widget-insert " ")
+ (widget-put obj :widgets widgets)
+ (if (eq obj widget)
+ (widget-put obj :button-face 'widget-button-pressed)
+ (widget-put obj :button-face 'widget-button-face))
+ (widget-apply obj :create))
+ widgets)
+ (widget-insert "\n\n"))
+
+ (dolist (status (sort (apply 'debbugs-get-status
+ (widget-get widget :bug-ids))
(lambda (s1 s2)
(< (cdr (assq 'id s1))
(cdr (assq 'id s2))))))
@@ -139,8 +187,22 @@
'debbugs-handled)
(t
'debbugs-stale)))
- (forward-line 1)))))
- (goto-char (point-min)))
+ (forward-line 1))))
+
+ (when widgets
+ (widget-insert "\nPage:")
+ (mapc
+ (lambda (obj)
+ (widget-insert " ")
+ (widget-put obj :widgets widgets)
+ (if (eq obj widget)
+ (widget-put obj :button-face 'widget-button-pressed)
+ (widget-put obj :button-face 'widget-button-face))
+ (widget-apply obj :create))
+ widgets)
+ (widget-setup))
+
+ (goto-char (point-min))))
(defvar debbugs-mode-map
(let ((map (make-sparse-keymap)))
@@ -207,15 +269,21 @@ The following commands are available:
(let (id)
(save-excursion
(beginning-of-line)
- (if (not (looking-at " *\\([0-9]+\\)"))
- (error "No bug report on the current line")
- (setq id (string-to-number (match-string 1)))))
- (gnus-read-ephemeral-emacs-bug-group
- id (cons (current-buffer)
- (current-window-configuration)))
- (with-current-buffer (window-buffer (selected-window))
- (debbugs-summary-mode 1)
- (set (make-local-variable 'debbugs-bug-number) id))))
+ (cond
+ ((looking-at " *\\([0-9]+\\)")
+ (setq id (string-to-number (match-string 1))))
+ ((looking-at "Page:") nil)
+ (t (error "No bug report on the current line"))))
+ (if (null id)
+ ;; We go to another buffer.
+ (widget-button-press (point))
+ ;; We open the report messages.
+ (gnus-read-ephemeral-emacs-bug-group
+ id (cons (current-buffer)
+ (current-window-configuration)))
+ (with-current-buffer (window-buffer (selected-window))
+ (debbugs-summary-mode 1)
+ (set (make-local-variable 'debbugs-bug-number) id)))))
(defvar debbugs-summary-mode-map
(let ((map (make-sparse-keymap)))
- [elpa] externals/debbugs aeed946 011/311: * debbugs-gnu.el (debbugs-send-control-message): Prompt for version number for, (continued)
- [elpa] externals/debbugs aeed946 011/311: * debbugs-gnu.el (debbugs-send-control-message): Prompt for version number for, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs caf94fe 012/311: * debbugs-gnu.el (debbugs-emacs): Change default hits to 500., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 5240eaf 013/311: * debbugs-gnu.el (debbugs-summary-mode): Make sure we don't Cc both bug-gnu-emacs (etc) and debbugs., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 07154a0 006/311: * debbugs.el (debbugs-emacs): Let-bind `debbugs-port' to "gnu.org"., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 94b437c 007/311: * debbugs.el (debbugs-send-control-message): Add more control messages., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 4d6bacf 008/311: (debbugs-done): Add a face for done bugs., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs e303918 015/311: (debbugs-toggle-sort): New command and keystroke., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs b0ceaf7 016/311: (debbugs-send-control-message): Record the bug number on group, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs b5a6432 019/311: (debbugs-toggle-sort): Allow sorting from the final line., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 736fb8c 020/311: * debbugs-gnu.el (debbugs-emacs, debbugs-show-reports): Rewrite in, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 656ec3d 018/311: * debbugs-gnu.el (debbugs-emacs): Move reporting lines to,
Stefan Monnier <=
- [elpa] externals/debbugs 1231617 021/311: * debbugs-gnu.el (debbugs-emacs): Don't use widgets to provide, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 194921d 014/311: (debbugs-emacs): Default to list the done bugs., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 6777b9f 022/311: (debbugs-show-reports): Store the status in the buffer., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 55886e2 024/311: (debbugs-toggle-sort): Make sorting work again., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 1fdcac3 029/311: * debbugs-gnu.el (debbugs-widget-map): Add [mouse-1] and [mouse-2]., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs e1c8723 030/311: * debbugs-gnu.el (debbugs-owner): New face., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs e2ef75a 032/311: Make the "g" command work., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 04754f0 035/311: * debbugs-gnu.el (debbugs-owner): Removed. We use `debbugs-tagged', Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs a024431 036/311: * debbugs-gnu.el (debbugs-toggle-sort): Sort the tagged bugs at, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 3771385 040/311: Bind `q' to `bury-buffer', which seems more useful., Stefan Monnier, 2020/11/29