Mercurial > emacs
changeset 109769:fe81389a263d
Optimizations for gnus-sync.el.
From Ted Zlatanov <tzz@lifelogs.com>.
* gnus-sync.el: Add docs about gnus-sync-backend
possibilities.
(gnus-sync-save): Remove unnecessary message.
(gnus-sync-read): Optimize and show what groups were skipped.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Fri, 13 Aug 2010 11:03:19 +0000 |
parents | 9c65ce5bc0db |
children | 30994c3466ad |
files | lisp/gnus/ChangeLog lisp/gnus/gnus-sync.el |
diffstat | 2 files changed, 34 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog Fri Aug 13 10:58:21 2010 +0000 +++ b/lisp/gnus/ChangeLog Fri Aug 13 11:03:19 2010 +0000 @@ -1,3 +1,12 @@ +2010-08-12 Teodor Zlatanov <tzz@lifelogs.com> + + Optimizations for gnus-sync.el. + + * gnus-sync.el: Add docs about gnus-sync-backend + possibilities. + (gnus-sync-save): Remove unnecessary message. + (gnus-sync-read): Optimize and show what groups were skipped. + 2010-08-12 Teodor Zlatanov <tzz@lifelogs.com> Minor bug fixes for gnus-sync.el.
--- a/lisp/gnus/gnus-sync.el Fri Aug 13 10:58:21 2010 +0000 +++ b/lisp/gnus/gnus-sync.el Fri Aug 13 11:03:19 2010 +0000 @@ -27,6 +27,11 @@ ;; Put this in your startup file (~/.gnus.el for instance) +;; possibilities for gnus-sync-backend: +;; Tramp over SSH: /ssh:user@host:/path/to/filename +;; Tramp over IMAP: /imaps:user@yourhosthere.com:/INBOX.test/filename +;; ...or any other file Tramp and Emacs can handle... + ;; (setq gnus-sync-backend `("/remote:/path.gpg") ; will use Tramp+EPA if loaded ;; gnus-sync-global-vars `(gnus-newsrc-last-checked-date) ;; gnus-sync-newsrc-groups `("nntp" "nnrss") @@ -85,7 +90,6 @@ (defun gnus-sync-save () "Save the Gnus sync data to the backend." (interactive) - (gnus-message 6 "Saving the Gnus sync data") (cond ((stringp gnus-sync-backend) (gnus-message 7 "gnus-sync: saving to backend %s" gnus-sync-backend) @@ -162,21 +166,31 @@ (load gnus-sync-backend nil t) (error (error "Error in %s: %s" gnus-sync-backend (cadr var))))) - (let ((valid-nodes - (loop for node in gnus-sync-newsrc-loader - if (gnus-gethash (car node) gnus-newsrc-hashtb) - collect node))) - (dolist (node valid-nodes) - (loop for store in (cdr node) - do (setf (nth (car store) - (assoc (car node) gnus-newsrc-alist)) + (let ((valid-count 0) + invalid-groups) + (dolist (node gnus-sync-newsrc-loader) + (if (gnus-gethash (car node) gnus-newsrc-hashtb) + (progn + (incf valid-count) + (loop for store in (cdr node) + do (setf (nth (car store) + (assoc (car node) gnus-newsrc-alist)) (cdr store)))) + (push (car node) invalid-groups))) (gnus-message 7 "gnus-sync: loaded %d groups (out of %d) from %s" - (length valid-nodes) - (length gnus-sync-newsrc-loader) + valid-count (length gnus-sync-newsrc-loader) gnus-sync-backend) + (when invalid-groups + (gnus-message + 7 + "gnus-sync: skipped %d groups (out of %d) from %s" + (length invalid-groups) + (length gnus-sync-newsrc-loader) + gnus-sync-backend) + (gnus-message 9 "gnus-sync: skipped groups: %s" + (mapconcat 'identity invalid-groups ", "))) (setq gnus-sync-newsrc-loader nil))) (nil)) ;; make the hashtable again because the newsrc-alist may have been modified