[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/debbugs 7dd9887 052/311: * debbugs-gnu.el (debbugs-gnu-
From: |
Stefan Monnier |
Subject: |
[elpa] externals/debbugs 7dd9887 052/311: * debbugs-gnu.el (debbugs-gnu-get-bugs): Reinsert sorting of ids. |
Date: |
Sun, 29 Nov 2020 18:41:38 -0500 (EST) |
branch: externals/debbugs
commit 7dd9887e5a5c852d873ee2011414e5e5f087fb90
Author: Michael Albinus <michael.albinus@gmx.de>
Commit: Michael Albinus <michael.albinus@gmx.de>
* debbugs-gnu.el (debbugs-gnu-get-bugs): Reinsert sorting of ids.
This is needed when several sets of bugs are retrieved in a loop.
Allow empty packages or severities.
(debbugs-gnu-show-reports): Erase buffer on entry. Initialize
header line, move from ...
(debbugs-gnu-mode): ... here.
(debbugs-gnu-state-preference): Make it a defconst.
(debbugs-gnu-severity-preference): New defconst.
(debbugs-gnu-get-state-preference)
(debbugs-gnu-get-severity-preference): New defuns.
(debbugs-gnu-sort-state): When two bugs have the same age, sort
per serverity.
---
ChangeLog | 15 +++++++++++
debbugs-gnu.el | 85 +++++++++++++++++++++++++++++++++++++---------------------
2 files changed, 70 insertions(+), 30 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 0a22b8a..5479f36 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2011-07-12 Michael Albinus <michael.albinus@gmx.de>
+
+ * debbugs-gnu.el (debbugs-gnu-get-bugs): Reinsert sorting of ids.
+ This is needed when several sets of bugs are retrieved in a loop.
+ Allow empty packages or severities.
+ (debbugs-gnu-show-reports): Erase buffer on entry. Initialize
+ header line, move from ...
+ (debbugs-gnu-mode): ... here.
+ (debbugs-gnu-state-preference): Make it a defconst.
+ (debbugs-gnu-severity-preference): New defconst.
+ (debbugs-gnu-get-state-preference)
+ (debbugs-gnu-get-severity-preference): New defuns.
+ (debbugs-gnu-sort-state): When two bugs have the same age, sort
+ per serverity.
+
2011-07-11 Michael Albinus <michael.albinus@gmx.de>
* debbugs-gnu.el (debbugs-gnu-sort-state): Give tagged bugs
diff --git a/debbugs-gnu.el b/debbugs-gnu.el
index dd99d86..5f14e4f 100644
--- a/debbugs-gnu.el
+++ b/debbugs-gnu.el
@@ -41,13 +41,15 @@
;; It asks for the severities, for which bugs shall be shown. This can
;; be either just one severity, or a list of severities, separated by
;; comma. Valid severities are "important", "normal", "minor" or
-;; "wishlist". There is also the pseudo severity "tagged", which
-;; selects locally tagged bugs.
+;; "wishlist". If no severity is given, all bugs are selected.
-;; If a prefix is given, more search parameters are asked for, like
-;; packages (also a comma separated list, "emacs" is the default),
-;; whether archived bugs shall be shown, and whether closed bugs shall
-;; be shown.
+;; There is also the pseudo severity "tagged", which selects locally
+;; tagged bugs.
+
+;; If a prefix is given to the command, more search parameters are
+;; asked for, like packages (also a comma separated list, "emacs" is
+;; the default), whether archived bugs shall be shown, and whether
+;; closed bugs shall be shown.
;; The bug reports are downloaded from the bug tracker. In order to
;; not generate too much load of the server, up to 500 bugs will be
@@ -265,17 +267,17 @@
(defun debbugs-gnu-get-bugs ()
"Retrieve bugs numbers from debbugs.gnu.org according search criteria."
(let ((debbugs-port "gnu.org")
- ids)
- (dolist (severity debbugs-gnu-current-severities ids)
+ args ids)
+ (dolist (severity debbugs-gnu-current-severities (sort ids '<))
(if (string-equal severity "tagged")
(setq ids (nconc ids (copy-sequence debbugs-gnu-local-tags)))
(dolist (package debbugs-gnu-current-packages)
- (setq ids
- (nconc ids
- (debbugs-get-bugs
- :package package
- :severity severity
- :archive debbugs-gnu-current-archive))))))))
+ (setq args `(:archive ,debbugs-gnu-current-archive))
+ (when (not (zerop (length severity)))
+ (setq args (append args `(:severity ,severity))))
+ (when (not (zerop (length package)))
+ (setq args (append args `(:package ,package))))
+ (setq ids (nconc ids (apply 'debbugs-get-bugs args))))))))
(defvar debbugs-gnu-current-widget nil)
@@ -288,6 +290,7 @@
(let ((inhibit-read-only t)
(debbugs-port "gnu.org"))
+ (erase-buffer)
(set (make-local-variable 'debbugs-gnu-current-widget)
widget)
@@ -365,6 +368,7 @@
'debbugs-gnu-tagged
'default))))
'append)))
+ (tabulated-list-init-header)
(tabulated-list-print)
(set-buffer-modified-p nil)
@@ -487,7 +491,6 @@ The following commands are available:
("Title" 10 debbugs-gnu-sort-title)])
(setq tabulated-list-sort-key (cons "Id" nil))
(setq tabulated-list-printer 'debbugs-gnu-print-entry)
- (tabulated-list-init-header)
(buffer-disable-undo)
(setq truncate-lines t)
(setq buffer-read-only t))
@@ -496,29 +499,51 @@ The following commands are available:
(< (cdr (assq 'id (car s1)))
(cdr (assq 'id (car s2)))))
-(defvar debbugs-gnu-state-preference
+(defconst debbugs-gnu-state-preference
'((debbugs-gnu-new . 1)
(debbugs-gnu-stale . 2)
(debbugs-gnu-handled . 3)
(debbugs-gnu-done . 4)))
+(defun debbugs-gnu-get-state-preference (face-string)
+ (or (cdr (assq (get-text-property 0 'face face-string)
+ debbugs-gnu-state-preference))
+ 10))
+
+(defconst debbugs-gnu-severity-preference
+ '(("important" . 1)
+ ("normal" . 2)
+ ("minor" . 3)
+ ("wishlist" . 4)))
+
+(defun debbugs-gnu-get-severity-preference (state)
+ (or (cdr (assoc (cdr (assq 'severity state))
+ debbugs-gnu-severity-preference))
+ 10))
+
(defun debbugs-gnu-sort-state (s1 s2)
(let ((id1 (cdr (assq 'id (car s1))))
- (st1 (aref (nth 1 s1) 1))
+ (age1 (debbugs-gnu-get-state-preference (aref (nth 1 s1) 1)))
(id2 (cdr (assq 'id (car s2))))
- (st2 (aref (nth 1 s2) 1)))
- (< (or (and (memq id1 debbugs-gnu-local-tags)
- (not (equal debbugs-gnu-current-severities '("tagged")))
- 20)
- (cdr (assq (get-text-property 0 'face st1)
- debbugs-gnu-state-preference))
- 10)
- (or (and (memq id2 debbugs-gnu-local-tags)
- (not (equal debbugs-gnu-current-severities '("tagged")))
- 20)
- (cdr (assq (get-text-property 0 'face st2)
- debbugs-gnu-state-preference))
- 10))))
+ (age2 (debbugs-gnu-get-state-preference (aref (nth 1 s2) 1))))
+ (cond
+ ;; Tagged bugs go to the end.
+ ((and (not (memq id1 debbugs-gnu-local-tags))
+ (memq id2 debbugs-gnu-local-tags))
+ t)
+ ((and (memq id1 debbugs-gnu-local-tags)
+ (not (memq id2 debbugs-gnu-local-tags)))
+ nil)
+ ;; Then, we check the age of the bugs.
+ ((< age1 age2)
+ t)
+ ((> age1 age2)
+ nil)
+ ;; If they have the same age, we check for severity.
+ ((< (debbugs-gnu-get-severity-preference (car s1))
+ (debbugs-gnu-get-severity-preference (car s2)))
+ t)
+ (t nil))))
(defun debbugs-gnu-sort-title (s1 s2)
(let ((owner (if (cdr (assq 'owner (car s1)))
- [elpa] externals/debbugs efe1ecf 033/311: * debbugs-gnu.el (debbugs-select-report): Fetch all merged, (continued)
- [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
- [elpa] externals/debbugs c3f0eb7 026/311: (debbugs-toggle-sort): Use `debbugs-current-id'., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs bf5b708 034/311: * debbugs-gnu.el (debbugs-tagged): New face., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 49237ca 037/311: (debbugs-emacs): Init the saved bugs on call, not on load., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 73de9fa 038/311: (debbugs-dump-persistency-file): Don't destroy the list while saving it., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs d119900 039/311: * packages/debbugs/debbugs-gnu.el (debbugs-gnu): New group., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 7a12166 041/311: (debbugs-send-control-message): Allow reversing tags., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 3a253e9 044/311: (debbugs-toggle-tag): Save the list of tagged articles immediately., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 1651ba2 049/311: One week is a better period for staleness, I think., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 7dd9887 052/311: * debbugs-gnu.el (debbugs-gnu-get-bugs): Reinsert sorting of ids.,
Stefan Monnier <=
- [elpa] externals/debbugs 84be38d 055/311: * debbugs-gnu.el (debbugs-gnu-subject): New defvar., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 7f4fc6a 070/311: * debbugs-gnu.el (debbugs-gnu-default-suppress-bugs), Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs abc7751 069/311: * debbugs-gnu.el (debbugs-gnu-search): Let-bind, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 90417e5 056/311: * debbugs-gnu.el (debbugs-gnu-send-control-message): Add "pending" etc., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 5129bba 063/311: * debbugs.texi: New file., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 1ef5eb3 059/311: * debbugs-gnu.el (debbugs-gnu-send-control-message): Add "invalid"., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs d7b7072 060/311: * debbugs-gnu.el (debbugs-gnu-show-reports): Add packages to the status bar., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs f347ec7 066/311: (debbugs-gnu-summary-mode): Make sure `gnus-article-copy' is alive., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 17943cc 072/311: * Debbugs.wsdl (ArrayOfArrayOfAnyType), Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 080565c 074/311: * debbugs-gnu.el (debbugs-gnu-search): Add full text search., Stefan Monnier, 2020/11/29