branch: externals/debbugs
commit 993f85df2b6306389cb8d63588a4ae0680e5216a
Author: Michael Albinus <michael.albi...@gmx.de>
Commit: Michael Albinus <michael.albi...@gmx.de>

    Make revert buffer thread-safe
    
    * debbugs-gnu.el (debbugs-gnu-current-id): New defvar.
    (debbugs-gnu): Set it.
    (debbugs-gnu-rescan): Make it thread-safe.
    (debbugs-gnu-mode): Reset `tabulated-list-entries'.
    
    * debbugs-ug.texi (Searching Bugs): Move items.
---
 debbugs-gnu.el  | 28 +++++++++++++++++++---------
 debbugs-ug.texi | 15 ++++++++-------
 2 files changed, 27 insertions(+), 16 deletions(-)

diff --git a/debbugs-gnu.el b/debbugs-gnu.el
index 744ec0bc9c..f15fbb43ee 100644
--- a/debbugs-gnu.el
+++ b/debbugs-gnu.el
@@ -464,6 +464,9 @@ The specification which bugs shall be suppressed is taken 
from
 (defvar debbugs-gnu-current-buffer nil
   "The current buffer results are presented in.")
 
+(defvar debbugs-gnu-current-id nil
+  "The saved position in a debbugs buffer.")
+
 (defvar debbugs-gnu-current-message nil
   "The message to be shown after getting the bugs.")
 
@@ -891,6 +894,8 @@ value, like in `debbugs-gnu-get-bugs' or 
`debbubgs-gnu-tagged'."
          (let (debbugs-show-progress)
            (unwind-protect
               (funcall debbugs-gnu-show-reports-function)
+             (when debbugs-gnu-current-id
+               (debbugs-gnu-goto debbugs-gnu-current-id))
              ;; Indicate result.
              (if debbugs-gnu-current-message
                  (message
@@ -904,18 +909,22 @@ value, like in `debbugs-gnu-get-bugs' or 
`debbubgs-gnu-tagged'."
              (setq debbugs-gnu-current-query nil
                   debbugs-gnu-current-filter nil
                   debbugs-gnu-current-suppress nil
+                   debbugs-gnu-current-id nil
                    debbugs-gnu-current-message nil
                    debbugs-gnu-show-reports-function
                    debbugs-gnu-default-show-reports-function)))))
 
     (unwind-protect
        (funcall debbugs-gnu-show-reports-function)
+      (when debbugs-gnu-current-id
+        (debbugs-gnu-goto debbugs-gnu-current-id))
       (when debbugs-gnu-current-message
         (message "%s" debbugs-gnu-current-message))
       ;; Reset query, filter, suppress and message.
       (setq debbugs-gnu-current-query nil
            debbugs-gnu-current-filter nil
            debbugs-gnu-current-suppress nil
+            debbugs-gnu-current-id nil
             debbugs-gnu-current-message nil
             debbugs-gnu-show-reports-function
             debbugs-gnu-default-show-reports-function))))
@@ -1308,15 +1317,15 @@ If NOCACHE is non-nil, bug information is retrieved 
from the debbugs server.
 Interactively, it is non-nil with the prefix argument."
   (interactive
    (list current-prefix-arg))
-  (let ((id (debbugs-gnu-current-id t))
-       (debbugs-gnu-current-query debbugs-gnu-local-query)
-       (debbugs-gnu-current-filter debbugs-gnu-local-filter)
-       (debbugs-gnu-current-suppress debbugs-gnu-local-suppress)
-       (debbugs-gnu-current-print-function debbugs-gnu-local-print-function)
-       (debbugs-cache-expiry (if nocache t debbugs-cache-expiry)))
-    (funcall debbugs-gnu-show-reports-function)
-    (when id
-      (debbugs-gnu-goto id))))
+  (setq debbugs-gnu-current-query debbugs-gnu-local-query
+       debbugs-gnu-current-filter debbugs-gnu-local-filter
+       debbugs-gnu-current-suppress debbugs-gnu-local-suppress
+        debbugs-gnu-current-id (debbugs-gnu-current-id t)
+       debbugs-gnu-current-print-function debbugs-gnu-local-print-function
+       debbugs-cache-expiry (if nocache t debbugs-cache-expiry)
+        debbugs-gnu-current-message "Reverting finished")
+  (message "Reverting buffer")
+  (debbugs-gnu nil))
 
 (define-derived-mode debbugs-gnu-mode tabulated-list-mode "Debbugs"
   "Major mode for listing bug reports.
@@ -1335,6 +1344,7 @@ modified on the debbugs server, consider typing \\`C-u g'.
        debbugs-gnu-current-suppress)
   (set (make-local-variable 'debbugs-gnu-local-print-function)
        debbugs-gnu-current-print-function)
+  (set (make-local-variable 'tabulated-list-entries) nil)
   (setq tabulated-list-format [("Id"         5 debbugs-gnu-sort-id)
                               ("State"     10 debbugs-gnu-sort-state)
                               ("Submitter" 18 debbugs-gnu-sort-submitter)
diff --git a/debbugs-ug.texi b/debbugs-ug.texi
index 5dc6ccbfc9..269b6d3fb5 100644
--- a/debbugs-ug.texi
+++ b/debbugs-ug.texi
@@ -340,12 +340,6 @@ attribute-value pairs, until an empty attribute is 
returned.  Possible
 attributes are
 
 @table @samp
-@item skip
-How many hits are skipped (default 0).
-
-@item max
-How many maximal hits are returned.
-
 @item severity
 A comma-separated list of bug severities, @xref{Retrieving Bugs}.
 
@@ -366,10 +360,17 @@ modified.
 @item subject
 Word(s) contained in the subject of the bug report.
 
+@c This is queried with the attribute "pending".
 @item status
 The status of the bug report.  Valid values are "pending",
 "forwarded", "fixed" and "done".
-@c This is queried with the attribute "pending".
+
+@c The next two items are rather for testing purposes.
+@item skip
+How many hits are skipped.
+
+@item max
+How many maximal hits are returned.
 @end table
 
 It is also possible to apply these commands with an empty search

Reply via email to