emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r104550: Improve Gnus' dribble data h


From: Katsumi Yamaoka
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r104550: Improve Gnus' dribble data handling.
Date: Fri, 10 Jun 2011 00:10:24 +0000
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 104550
committer: Katsumi Yamaoka <address@hidden>
branch nick: trunk
timestamp: Fri 2011-06-10 00:10:24 +0000
message:
  Improve Gnus' dribble data handling.
modified:
  lisp/gnus/ChangeLog
  lisp/gnus/gnus-agent.el
  lisp/gnus/gnus-group.el
  lisp/gnus/gnus-srvr.el
  lisp/gnus/gnus-start.el
  lisp/gnus/gnus-sum.el
=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog       2011-06-01 22:35:26 +0000
+++ b/lisp/gnus/ChangeLog       2011-06-10 00:10:24 +0000
@@ -1,3 +1,24 @@
+2011-06-10  Katsumi Yamaoka  <address@hidden>
+
+       * gnus-group.el (gnus-group-update-group): Add new argument
+       `info-unchanged' that stops updating dribble buffer.
+
+       * gnus-start.el (gnus-dribble-enter): Add new argument `regexp' that
+       deletes lines matching to it in dribble buffer.
+
+       * gnus-agent.el (gnus-agent-fetch-group-1):
+       * gnus-group.el (gnus-group-update-group-line, gnus-group-make-group):
+       * gnus-srvr.el (gnus-server-update-server, gnus-server-set-info):
+       * gnus-start.el (gnus-group-change-level):
+       * gnus-sum.el (gnus-summary-move-article): Delete old dribble entry.
+
+       * gnus-sum.el (gnus-summary-update-info): Don't update dribble buffer
+       if newsgroup info is not changed.
+
+       * gnus-group.el (gnus-group-get-new-news-this-group):
+       * gnus-sum.el (gnus-summary-read-group-1, gnus-summary-exit-no-update):
+       Don't update dribble buffer.
+
 2011-06-01  Teodor Zlatanov  <address@hidden>
 
        * gnus-registry.el (gnus-registry-remove-ignored): New function to

=== modified file 'lisp/gnus/gnus-agent.el'
--- a/lisp/gnus/gnus-agent.el   2011-05-02 22:41:38 +0000
+++ b/lisp/gnus/gnus-agent.el   2011-06-10 00:10:24 +0000
@@ -2614,7 +2614,9 @@
                     (gnus-dribble-enter
                      (concat "(gnus-group-set-info '"
                              (gnus-prin1-to-string info)
-                             ")"))))))))))))
+                             ")")
+                    (concat "^(gnus-group-set-info '(\""
+                            (regexp-quote group) "\""))))))))))))
 
 ;;;
 ;;; Agent Category Mode

=== modified file 'lisp/gnus/gnus-group.el'
--- a/lisp/gnus/gnus-group.el   2011-05-30 22:11:52 +0000
+++ b/lisp/gnus/gnus-group.el   2011-06-10 00:10:24 +0000
@@ -1437,7 +1437,8 @@
           (gnus-dribble-enter
            (concat "(gnus-group-set-info '"
                    (gnus-prin1-to-string (nth 2 entry))
-                   ")")))
+                   ")")
+           (concat "^(gnus-group-set-info '(\"" (regexp-quote group) "\"")))
       (setq gnus-group-indentation (gnus-group-group-indentation))
       (gnus-delete-line)
       (gnus-group-insert-group-line-info group)
@@ -1685,10 +1686,11 @@
                                     (gnus-active group))
   (gnus-group-update-group group))
 
-(defun gnus-group-update-group (group &optional visible-only)
+(defun gnus-group-update-group (group &optional visible-only
+                                     info-unchanged)
   "Update all lines where GROUP appear.
 If VISIBLE-ONLY is non-nil, the group won't be displayed if it isn't
-already."
+already.  If INFO-UNCHANGED is non-nil, dribble buffer is not updated."
   (with-current-buffer gnus-group-buffer
     (save-excursion
       ;; The buffer may be narrowed.
@@ -1697,14 +1699,17 @@
         (let ((ident (gnus-intern-safe group gnus-active-hashtb))
               (loc (point-min))
               found buffer-read-only)
-          ;; Enter the current status into the dribble buffer.
-          (let ((entry (gnus-group-entry group)))
-            (when (and entry
-                       (not (gnus-ephemeral-group-p group)))
-              (gnus-dribble-enter
-               (concat "(gnus-group-set-info '"
-                       (gnus-prin1-to-string (nth 2 entry))
-                       ")"))))
+         (unless info-unchanged
+           ;; Enter the current status into the dribble buffer.
+           (let ((entry (gnus-group-entry group)))
+             (when (and entry
+                        (not (gnus-ephemeral-group-p group)))
+               (gnus-dribble-enter
+                (concat "(gnus-group-set-info '"
+                        (gnus-prin1-to-string (nth 2 entry))
+                        ")")
+                (concat "^(gnus-group-set-info '(\""
+                        (regexp-quote group) "\"")))))
           ;; Find all group instances.  If topics are in use, each group
           ;; may be listed in more than once.
           (while (setq loc (text-property-any
@@ -2715,7 +2720,8 @@
     (unless (gnus-ephemeral-group-p name)
       (gnus-dribble-enter
        (concat "(gnus-group-set-info '"
-              (gnus-prin1-to-string (cdr info)) ")")))
+              (gnus-prin1-to-string (cdr info)) ")")
+       (concat "^(gnus-group-set-info '(\"" (regexp-quote name) "\"")))
     ;; Insert the line.
     (gnus-group-insert-group-line-info nname)
     (forward-line -1)
@@ -4032,7 +4038,7 @@
            (when gnus-agent
              (gnus-agent-save-group-info
               method (gnus-group-real-name group) active))
-           (gnus-group-update-group group))
+           (gnus-group-update-group group nil t))
        (if (eq (gnus-server-status (gnus-find-method-for-group group))
                'denied)
            (gnus-error 3 "Server denied access")

=== modified file 'lisp/gnus/gnus-srvr.el'
--- a/lisp/gnus/gnus-srvr.el    2011-01-25 04:08:28 +0000
+++ b/lisp/gnus/gnus-srvr.el    2011-06-10 00:10:24 +0000
@@ -362,7 +362,8 @@
       (when entry
        (gnus-dribble-enter
         (concat "(gnus-server-set-info \"" server "\" '"
-                (gnus-prin1-to-string (cdr entry)) ")\n")))
+                (gnus-prin1-to-string (cdr entry)) ")\n")
+        (concat "^(gnus-server-set-info \"" (regexp-quote server) "\"")))
       (when (or entry oentry)
        ;; Buffer may be narrowed.
        (save-restriction
@@ -381,7 +382,8 @@
   (when (and server info)
     (gnus-dribble-enter
      (concat "(gnus-server-set-info \"" server "\" '"
-            (gnus-prin1-to-string info) ")"))
+            (gnus-prin1-to-string info) ")")
+     (concat "^(gnus-server-set-info \"" (regexp-quote server) "\""))
     (let* ((server (nth 1 info))
           (entry (assoc server gnus-server-alist))
           (cached (assoc server gnus-server-method-cache)))

=== modified file 'lisp/gnus/gnus-start.el'
--- a/lisp/gnus/gnus-start.el   2011-05-05 06:56:54 +0000
+++ b/lisp/gnus/gnus-start.el   2011-06-10 00:10:24 +0000
@@ -832,13 +832,22 @@
      gnus-current-startup-file)
    "-dribble"))
 
-(defun gnus-dribble-enter (string)
-  "Enter STRING into the dribble buffer."
+(defun gnus-dribble-enter (string &optional regexp)
+  "Enter STRING into the dribble buffer.
+If REGEXP is given, lines that match it will be deleted."
   (when (and (not gnus-dribble-ignore)
             gnus-dribble-buffer
             (buffer-name gnus-dribble-buffer))
     (let ((obuf (current-buffer)))
       (set-buffer gnus-dribble-buffer)
+      (when regexp
+       (goto-char (point-min))
+       (let (end)
+         (while (re-search-forward regexp nil t)
+           (unless (bolp) (forward-line 1))
+           (setq end (point))
+           (goto-char (match-beginning 0))
+           (delete-region (point-at-bol) end))))
       (goto-char (point-max))
       (insert string "\n")
       ;; This has been commented by Josh Huber <address@hidden>
@@ -1354,8 +1363,8 @@
          (when (cdr entry)
            (setcdr (gnus-group-entry (caadr entry)) entry))
          (gnus-dribble-enter
-          (format
-           "(gnus-group-set-info '%S)" info)))))
+          (format "(gnus-group-set-info '%S)" info)
+          (concat "^(gnus-group-set-info '(\"" (regexp-quote group) "\"")))))
       (when gnus-group-change-level-function
        (funcall gnus-group-change-level-function
                 group level oldlevel previous)))))

=== modified file 'lisp/gnus/gnus-sum.el'
--- a/lisp/gnus/gnus-sum.el     2011-05-31 10:37:35 +0000
+++ b/lisp/gnus/gnus-sum.el     2011-06-10 00:10:24 +0000
@@ -4098,7 +4098,7 @@
        (setq gnus-newsgroup-prepared t)
        (gnus-run-hooks 'gnus-summary-prepared-hook)
        (unless (gnus-ephemeral-group-p group)
-         (gnus-group-update-group group))
+         (gnus-group-update-group group nil t))
        t)))))
 
 (defun gnus-summary-auto-select-subject ()
@@ -7140,7 +7140,12 @@
                 t)))
        (unless (listp (cdr gnus-newsgroup-killed))
          (setq gnus-newsgroup-killed (list gnus-newsgroup-killed)))
-       (let ((headers gnus-newsgroup-headers))
+       (let ((headers gnus-newsgroup-headers)
+             (ephemeral-p (gnus-ephemeral-group-p group))
+             info)
+         (unless ephemeral-p
+           (setq info (copy-sequence (gnus-get-info group))
+                 info (delq (gnus-info-params info) info)))
          ;; Set the new ranges of read articles.
          (with-current-buffer gnus-group-buffer
            (gnus-undo-force-boundary))
@@ -7160,8 +7165,12 @@
            (gnus-mark-xrefs-as-read group headers gnus-newsgroup-unreads))
          ;; Do not switch windows but change the buffer to work.
          (set-buffer gnus-group-buffer)
-         (unless (gnus-ephemeral-group-p group)
-           (gnus-group-update-group group)))))))
+         (unless ephemeral-p
+           (gnus-group-update-group
+            group nil
+            (equal info
+                   (setq info (copy-sequence (gnus-get-info group))
+                         info (delq (gnus-info-params info) info))))))))))
 
 (defun gnus-summary-save-newsrc (&optional force)
   "Save the current number of read/marked articles in the dribble buffer.
@@ -7314,7 +7323,7 @@
       ;; Clear the current group name.
       (setq gnus-newsgroup-name nil)
       (unless (gnus-ephemeral-group-p group)
-       (gnus-group-update-group group))
+       (gnus-group-update-group group nil t))
       (when (equal (gnus-group-group-name) group)
        (gnus-group-next-unread-group 1))
       (when quit-config
@@ -9994,7 +10003,9 @@
              (gnus-dribble-enter
               (concat "(gnus-group-set-info '"
                       (gnus-prin1-to-string (gnus-get-info to-group))
-                      ")"))))
+                      ")")
+              (concat "^(gnus-group-set-info '(\""
+                      (regexp-quote to-group) "\""))))
 
          ;; Update the Xref header in this article to point to
          ;; the new crossposted article we have just created.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]