(title (aref cols 3))
(title-length (nth 1 (aref tabulated-list-format 3))))
(when (and
+ ;; We may have a narrowing in effect.
+ (or (not debbugs-gnu-current-limit)
+ (memq (cdr (assq 'id list-id)) debbugs-gnu-current-limit))
;; Filter suppressed bugs.
(or (not (widget-get debbugs-gnu-current-widget :suppress))
(not (catch :suppress
(goto-char pos)))
(defvar debbugs-gnu-sort-state 'number)
+(defvar debbugs-gnu-current-limit nil)
(define-derived-mode debbugs-gnu-mode tabulated-list-mode "Debbugs"
"Major mode for listing bug reports.
The following commands are available:
\\{debbugs-gnu-mode-map}"
- (set (make-local-variable 'debbugs-gnu-sort-state)
- 'number)
+ (set (make-local-variable 'debbugs-gnu-sort-state) 'number)
+ (set (make-local-variable 'debbugs-gnu-current-limit) nil)
(setq tabulated-list-format [("Id" 5 debbugs-gnu-sort-id)
("State" 20 debbugs-gnu-sort-state)
("Submitter" 25 t)
"Display all the currently selected bug reports."
(interactive)
(let ((id (debbugs-gnu-current-id t))
- (buffer-read-only nil))
+ (inhibit-read-only t))
+ (setq debbugs-gnu-current-limit nil)
(tabulated-list-init-header)
(tabulated-list-print)
(when id
(debbugs-gnu-goto id))))
-(defun debbugs-gnu-narrow-to-status (string)
- "Only display the bugs matching STRING."
- (interactive "sNarrow to: ")
+(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
+Subject fields."
+ (interactive "sNarrow to: \np")
(let ((id (debbugs-gnu-current-id t))
- (buffer-read-only nil)
+ (inhibit-read-only t)
status)
- (debbugs-gnu-widen)
+ (setq debbugs-gnu-current-limit nil)
(goto-char (point-min))
(while (not (eobp))
(setq status (debbugs-gnu-current-status))
(if (and (not (member string (assq 'keywords status)))
(not (member string (assq 'severity status)))
- (not (string-match string (cdr (assq 'originator status))))
- (not (string-match string (cdr (assq 'subject status)))))
+ (or status-only
+ (not (string-match string (cdr (assq 'originator status)))))
+ (or status-only
+ (not (string-match string (cdr (assq 'subject status))))))
(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))))