]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/debbugs/debbugs-gnu.el
Command to list blocking reports
[gnu-emacs-elpa] / packages / debbugs / debbugs-gnu.el
index bada55bbd96bfb31f61ecb263d624bc28cb4e35e..0136831dfa350d3a2f9a2505cf557aa07a6a8fc1 100644 (file)
   :group 'debbugs
   :version "24.1")
 
+(defvar debbugs-gnu-blocking-report 19759
+  "The ID of the current release report used to track blocking bug reports.")
+
 (defcustom debbugs-gnu-default-severities '("serious" "important" "normal")
   "*The list severities bugs are searched for.
 \"tagged\" is not a severity but marks locally tagged bugs."
   (mapcar 'cadr (cdr (get 'debbugs-gnu-default-packages 'custom-type)))
   "*List of all possible package names.")
 
-(defcustom debbugs-gnu-default-hits-per-page 500
+(defcustom debbugs-gnu-default-hits-per-page 3000
   "*The number of bugs shown per page."
   :group 'debbugs-gnu
   :type 'integer
@@ -619,7 +622,7 @@ marked as \"client-side filter\"."
   ;; of them.
   (when (get-buffer (widget-get widget :buffer-name))
     (kill-buffer (widget-get widget :buffer-name)))
-  (pop-to-buffer (get-buffer-create (widget-get widget :buffer-name)))
+  (switch-to-buffer (get-buffer-create (widget-get widget :buffer-name)))
   (debbugs-gnu-mode)
   (let ((inhibit-read-only t)
        (debbugs-port "gnu.org"))
@@ -825,6 +828,7 @@ Used instead of `tabulated-list-print-entry'."
     (define-key map "b" 'debbugs-gnu-show-blocked-by-reports)
     (define-key map "B" 'debbugs-gnu-show-blocking-reports)
     (define-key map "C" 'debbugs-gnu-send-control-message)
+    (define-key map "R" 'debbugs-gnu-show-all-blocking-reports)
     map))
 
 (defun debbugs-gnu-rescan ()
@@ -977,6 +981,26 @@ The following commands are available:
        (message "Bug %d is not blocking any other bug" id)
       (apply 'debbugs-gnu-bugs (cdr (assq 'blocks status))))))
 
+(defun debbugs-gnu-show-all-blocking-reports ()
+  "Narrow the display to just the reports that are blocking a release."
+  (interactive)
+  (let ((blockers (cdr (assq 'blockedby
+                            (car (debbugs-get-status
+                                  debbugs-gnu-blocking-report)))))
+       (id (debbugs-gnu-current-id t))
+       (inhibit-read-only t)
+       status)
+    (setq debbugs-gnu-current-limit nil)
+    (goto-char (point-min))
+    (while (not (eobp))
+      (setq status (debbugs-gnu-current-status))
+      (if (not (memq (cdr (assq 'id status)) blockers))
+         (delete-region (point) (progn (forward-line 1) (point)))
+       (push (cdr (assq 'id status)) debbugs-gnu-current-limit)
+       (forward-line 1)))
+    (when id
+      (debbugs-gnu-goto id))))
+
 (defun debbugs-gnu-narrow-to-status (string &optional status-only)
   "Only display the bugs matching STRING.
 If STATUS-ONLY (the prefix), ignore matches in the From and
@@ -1120,22 +1144,24 @@ MERGED is the list of bugs merged with this one."
   (let* ((status (debbugs-gnu-current-status))
         (id (cdr (assq 'id status)))
         (merged (cdr (assq 'mergedwith status))))
-    (if (eq debbugs-gnu-mail-backend 'rmail)
-       (debbugs-read-emacs-bug-with-rmail id status (if (listp merged)
-                                                        merged
-                                                      (list merged)))
-      ;; Use Gnus.
-      (gnus-read-ephemeral-emacs-bug-group
-       (cons id (if (listp merged)
-                   merged
-                 (list merged)))
-       (cons (current-buffer)
-            (current-window-configuration)))
-      (with-current-buffer (window-buffer (selected-window))
-       (set (make-local-variable 'debbugs-gnu-bug-number) id)
-       (set (make-local-variable 'debbugs-gnu-subject)
-            (format "Re: bug#%d: %s" id (cdr (assq 'subject status))))
-       (debbugs-gnu-summary-mode 1)))))
+    (if (not id)
+       (message "No bug report on the current line")
+      (if (eq debbugs-gnu-mail-backend 'rmail)
+         (debbugs-read-emacs-bug-with-rmail id status (if (listp merged)
+                                                          merged
+                                                        (list merged)))
+       ;; Use Gnus.
+       (gnus-read-ephemeral-emacs-bug-group
+        (cons id (if (listp merged)
+                     merged
+                   (list merged)))
+        (cons (current-buffer)
+              (current-window-configuration)))
+       (with-current-buffer (window-buffer (selected-window))
+         (set (make-local-variable 'debbugs-gnu-bug-number) id)
+         (set (make-local-variable 'debbugs-gnu-subject)
+              (format "Re: bug#%d: %s" id (cdr (assq 'subject status))))
+         (debbugs-gnu-summary-mode 1))))))
 
 (defvar debbugs-gnu-summary-mode-map
   (let ((map (make-sparse-keymap)))