[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/debbugs 04754f0 035/311: * debbugs-gnu.el (debbugs-owne
From: |
Stefan Monnier |
Subject: |
[elpa] externals/debbugs 04754f0 035/311: * debbugs-gnu.el (debbugs-owner): Removed. We use `debbugs-tagged' |
Date: |
Sun, 29 Nov 2020 18:41:35 -0500 (EST) |
branch: externals/debbugs
commit 04754f0339db5c8bac63ae2092b6546085d41ae9
Author: Michael Albinus <michael.albinus@gmx.de>
Commit: Michael Albinus <michael.albinus@gmx.de>
* debbugs-gnu.el (debbugs-owner): Removed. We use `debbugs-tagged'
uniquely.
(debbugs-widgets, debbugs-package, debbugs-severities)
(debbugs-archive): New defvars.
(debbugs-local-tags, debbugs-persistency-file)
(debbugs-dump-persistency-file): Add docstring.
(debbugs-emacs): Use new defvars.
(debbugs-show-reports): Remove widgets from arguments. Mark bugs
submitted by user.
(debbugs-mode-map): Add "x" (for purge "done" bugs).
(debbugs-rescan): On the last page, check also for new arrived bugs.
(debbugs-suppress-done): New defun.
---
ChangeLog | 21 ++++++-
debbugs-gnu.el | 171 +++++++++++++++++++++++++++++++++++++++------------------
2 files changed, 136 insertions(+), 56 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index b83b0cc..d9da724 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2011-07-05 Michael Albinus <michael.albinus@gmx.de>
+
+ * debbugs-gnu.el (debbugs-owner): Removed. We use `debbugs-tagged'
+ uniquely.
+ (debbugs-widgets, debbugs-package, debbugs-severities)
+ (debbugs-archive): New defvars.
+ (debbugs-local-tags, debbugs-persistency-file)
+ (debbugs-dump-persistency-file): Add docstring.
+ (debbugs-emacs): Use new defvars.
+ (debbugs-show-reports): Remove widgets from arguments. Mark bugs
+ submitted by user.
+ (debbugs-mode-map): Add "x" (for purge "done" bugs).
+ (debbugs-rescan): On the last page, check also for new arrived bugs.
+ (debbugs-suppress-done): New defun.
+
2011-07-04 Michael Albinus <michael.albinus@gmx.de>
* debbugs-gnu.el (debbugs-tagged): New face.
@@ -27,9 +42,9 @@
* debbugs-gnu.el (debbugs-widget-map): Add [mouse-1] and [mouse-2].
(debbugs-emacs): Add :help-echo and :suppress-done for report
pages' widgets.
- (debbugs-show-reports): Remove suppress-done from arguments. It
- must be read from the widget anyway. Tune inserting of bottom line
- widgets.
+ (debbugs-show-reports): Remove suppress-done from arguments. It
+ must be read from the widget anyway. Tune inserting of bottom
+ line widgets.
(debbugs-owner): New face.
(debbugs-show-reports): Mark subject if the user is the bug's
owner. Add mouse-face.
diff --git a/debbugs-gnu.el b/debbugs-gnu.el
index c33c3c1..2f3c588 100644
--- a/debbugs-gnu.el
+++ b/debbugs-gnu.el
@@ -47,12 +47,11 @@
(defface debbugs-done '((t (:foreground "DarkGrey")))
"Face for closed bug reports.")
-(defface debbugs-owner '((t (:foreground "red")))
- "Face for new reports owned by me.")
-
-(defface debbugs-tagged '((t (:inverse-video t)))
+(defface debbugs-tagged '((t (:foreground "red")))
"Face for reports that have been tagged locally.")
+(defvar debbugs-widgets nil)
+
(defvar debbugs-widget-map
(let ((map (make-sparse-keymap)))
(define-key map "\r" 'widget-button-press)
@@ -60,9 +59,14 @@
(define-key map [mouse-2] 'widget-button-press)
map))
+(defvar debbugs-local-tags nil
+ "List of bug numbers tagged locally, and kept persistent.")
+
(defvar debbugs-persistency-file
- (expand-file-name (locate-user-emacs-file "debbugs")))
+ (expand-file-name (locate-user-emacs-file "debbugs"))
+ "File name of a persistency store for debbugs variables")
+;; Initialize variables.
(when (file-exists-p debbugs-persistency-file)
(ignore-errors
(with-temp-buffer
@@ -70,6 +74,7 @@
(eval (read (current-buffer))))))
(defun debbugs-dump-persistency-file ()
+ "Function to store debbugs variables persistently."
(ignore-errors
(with-temp-buffer
(insert
@@ -79,9 +84,19 @@
(write-region
(point-min) (point-max) debbugs-persistency-file))))
+;; Save variables.
(unless noninteractive
(add-hook 'kill-emacs-hook 'debbugs-dump-persistency-file))
+(defvar debbugs-package nil
+ "The package name to be searched for.")
+
+(defvar debbugs-severities nil
+ "The severities strings to be searched for.")
+
+(defvar debbugs-archive nil
+ "The archive flag to be searched for.")
+
(defun debbugs-emacs (severities &optional package suppress-done archivedp)
"List all outstanding Emacs bugs."
(interactive
@@ -91,15 +106,20 @@
nil t "normal")))
(unless (consp severities)
(setq severities (list severities)))
+
+ (setq debbugs-package (or package "emacs")
+ debbugs-severities severities
+ debbugs-archive (if archivedp "1" "0")
+ debbugs-widgets nil)
+
(let ((debbugs-port "gnu.org")
(default 500)
- ids widgets)
- (dolist (severity severities)
+ ids)
+ (dolist (severity debbugs-severities)
(setq ids (nconc ids
- (debbugs-get-bugs :package (or package "emacs")
+ (debbugs-get-bugs :package debbugs-package
:severity severity
- :archive (if archivedp
- "1" "0")))))
+ :archive debbugs-archive))))
(setq ids (sort ids '<))
(if (> (length ids) default)
@@ -119,41 +139,35 @@
curr-ids)
(while ids
(setq i (1+ i)
- curr-ids (butlast ids (- (length ids) default))
- widgets (append
- widgets
- (list
- (widget-convert
- 'push-button
- :follow-link 'mouse-face
- :notify (lambda (widget &rest ignore)
- (debbugs-show-reports
- widget
- (widget-get widget :widgets)))
- :keymap debbugs-widget-map
- :suppress-done suppress-done
- :buffer-name (format "*Emacs Bugs*<%d>" i)
- :bug-ids curr-ids
- :help-echo (format
- "%d-%d"
- (car ids) (car (last curr-ids)))
- :format " %[%v%]"
- (number-to-string i))))
- ids (last ids (- (length ids) default))))
- (debbugs-show-reports (car widgets) widgets))
-
- (debbugs-show-reports (widget-convert
- 'const
- :suppress-done suppress-done
- :buffer-name "*Emacs Bugs*"
- :bug-ids ids)
- nil))))
+ curr-ids (butlast ids (- (length ids) default)))
+ (add-to-list
+ 'debbugs-widgets
+ (widget-convert
+ 'push-button
+ :follow-link 'mouse-face
+ :notify (lambda (widget &rest ignore)
+ (debbugs-show-reports widget))
+ :keymap debbugs-widget-map
+ :suppress-done suppress-done
+ :buffer-name (format "*Emacs Bugs*<%d>" i)
+ :bug-ids curr-ids
+ :help-echo (format "%d-%d" (car ids) (car (last curr-ids)))
+ :format " %[%v%]"
+ (number-to-string i))
+ 'append)
+ (setq ids (last ids (- (length ids) default))))
+ (debbugs-show-reports (car debbugs-widgets)))
+
+ (debbugs-show-reports
+ (widget-convert
+ 'const
+ :suppress-done suppress-done
+ :buffer-name "*Emacs Bugs*"
+ :bug-ids ids)))))
(defvar debbugs-current-widget nil)
-(defvar debbugs-local-tags nil)
-
-(defun debbugs-show-reports (widget widgets)
+(defun debbugs-show-reports (widget)
"Show bug reports as given in WIDGET property :bug-ids."
(pop-to-buffer (get-buffer-create (widget-get widget :buffer-name)))
(debbugs-mode)
@@ -161,16 +175,15 @@
(suppress-done (widget-get widget :suppress-done)))
(erase-buffer)
- (when widgets
+ (when debbugs-widgets
(widget-insert "Page:")
(mapc
(lambda (obj)
- (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)
+ debbugs-widgets)
(widget-insert "\n\n"))
(dolist (status (sort (apply 'debbugs-get-status
@@ -220,9 +233,16 @@
words)))
(setq words (propertize words 'face face))
(setq address
- ;; Prefer the name over the address.
- (or (cdr address)
- (car address)))
+ (propertize
+ ;; Prefer the name over the address.
+ (or (cdr address)
+ (car address))
+ 'face
+ ;; Mark own submitted bugs.
+ (if (and (stringp (car address))
+ (string-equal (car address) user-mail-address))
+ 'debbugs-tagged
+ 'default)))
(insert
(format "%5d %-20s [%-23s] %s\n"
id
@@ -232,10 +252,11 @@
(if (> (length address) 23)
(propertize (substring address 0 23) 'help-echo address)
address)
+ ;; Mark owned bugs.
(if (and (stringp owner)
(string-equal owner user-mail-address))
(propertize subject
- 'face 'debbugs-owner 'help-echo subject)
+ 'face 'debbugs-tagged 'help-echo subject)
(propertize subject 'help-echo subject))))
(forward-line -1)
(put-text-property (point) (1+ (point)) 'debbugs-status status)
@@ -247,14 +268,14 @@
'face 'debbugs-tagged))
(forward-line 1))))
- (when widgets
+ (when debbugs-widgets
(widget-insert "\nPage:")
- (mapc (lambda (obj) (widget-apply obj :create)) widgets)
+ (mapc (lambda (obj) (widget-apply obj :create)) debbugs-widgets)
(widget-setup))
(set-buffer-modified-p nil)
(set (make-local-variable 'debbugs-current-widget)
- (list widget widgets))
+ widget)
(goto-char (point-min))))
(defvar debbugs-mode-map
@@ -267,13 +288,40 @@
(define-key map "t" 'debbugs-toggle-tag)
(define-key map "d" 'debbugs-display-status)
(define-key map "g" 'debbugs-rescan)
+ (define-key map "x" 'debbugs-suppress-done)
(define-key map "C" 'debbugs-send-control-message)
map))
(defun debbugs-rescan ()
"Rescan the current set of bug reports."
(interactive)
- (apply 'debbugs-show-reports debbugs-current-widget))
+
+ ;; The last page will be provided with new bug ids.
+ ;; TODO: Do it also for the other pages.
+ (when (and debbugs-widgets
+ (eq debbugs-current-widget (car (last debbugs-widgets))))
+ (let ((debbugs-port "gnu.org")
+ (first-id (car (widget-get debbugs-current-widget :bug-ids)))
+ (last-id (car (last (widget-get debbugs-current-widget :bug-ids))))
+ ids)
+ (dolist (severity debbugs-severities)
+ (setq ids (nconc ids
+ (debbugs-get-bugs :package debbugs-package
+ :severity severity
+ :archive debbugs-archive))))
+ (setq ids (sort ids '<))
+
+ (while (and (<= first-id last-id) (not (memq first-id ids)))
+ (setq first-id (1+ first-id)))
+
+ (when (<= first-id last-id)
+ (widget-put debbugs-current-widget :bug-ids (memq first-id ids)))))
+
+ ;; Refresh the buffer. `save-excursion' does not work, so we
+ ;; remember the position.
+ (let ((pos (point)))
+ (debbugs-show-reports debbugs-current-widget)
+ (goto-char pos)))
(defvar debbugs-sort-state 'number)
@@ -360,6 +408,23 @@ The following commands are available:
(+ (point) (- 5 (length (number-to-string id)))) (+ (point) 5)
'face 'debbugs-tagged)))))
+(defun debbugs-suppress-done ()
+ "Suppress bugs marked as done."
+ (interactive)
+ (save-excursion
+ (unless (widget-get debbugs-current-widget :suppress-done)
+ (let ((inhibit-read-only t))
+ (widget-put debbugs-current-widget :suppress-done t)
+ (beginning-of-buffer)
+ (while (and (not (eobp))
+ (not (get-text-property (point) 'debbugs-status)))
+ (forward-line 1))
+ (while (and (not (eobp))
+ (get-text-property (point) 'debbugs-status))
+ (if (equal (cdr (assq 'pending (debbugs-current-status))) "done")
+ (kill-region (point) (progn (forward-line 1) (point)))
+ (forward-line 1)))))))
+
(defvar debbugs-bug-number nil)
(defun debbugs-current-id (&optional noerror)
- [elpa] externals/debbugs b5a6432 019/311: (debbugs-toggle-sort): Allow sorting from the final line., (continued)
- [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, 2020/11/29
- [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 <=
- [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
- [elpa] externals/debbugs 9daf260 043/311: * debbugs-gnu.el (top): Add ; ; ; Commentary., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 840ef57 023/311: (debbugs-display-status): New command and keystroke., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 7ea3250 025/311: Remove spurious parenthesis., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 3c40b4f 027/311: (debbugs-toggle-sort): Don't move point around so much., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs fa37024 028/311: (debbugs-summary-mode): Ignore submit@debbugs addresses, too., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 63e5cf5 031/311: * debbugs-gnu.el (debbugs-rescan): New command and keystroke., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs efe1ecf 033/311: * debbugs-gnu.el (debbugs-select-report): Fetch all merged, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 7687d6b 017/311: (debbugs-emacs): Display multiple merges prettier., Stefan Monnier, 2020/11/29