;;; gnus-sync.el --- synchronization facility for Gnus
-;;; Copyright (C) 2010
-;;; Free Software Foundation, Inc.
+;; Copyright (C) 2010 Free Software Foundation, Inc.
;; Author: Ted Zlatanov <tzz@lifelogs.com>
;; Keywords: news synchronization nntp nnrss
;;; Code:
(eval-when-compile (require 'cl))
+(require 'gnus)
+(require 'gnus-start)
(require 'gnus-util)
(defgroup gnus-sync nil
"The Gnus synchronization facility."
- :version "23.1"
+ :version "24.1"
:group 'gnus)
(defcustom gnus-sync-newsrc-groups `("nntp" "nnrss")
;; populate gnus-sync-newsrc-loader from all but the first dummy
;; entry in gnus-newsrc-alist whose group matches any of the
;; gnus-sync-newsrc-groups
- (let* ((loader
- (loop for entry in (cdr gnus-newsrc-alist)
- when (gnus-grep-in-list
- (car entry) ;the group name
- gnus-sync-newsrc-groups)
- collect (cons (car entry)
- (mapcar (lambda (offset)
- (cons offset (nth offset entry)))
- gnus-sync-newsrc-offsets))))
- (gnus-sync-newsrc-loader
- (nunion gnus-sync-newsrc-loader
- (set-difference gnus-sync-newsrc-loader loader :key 'car)
- :key 'car)))
-
+ ;; TODO: keep the old contents for groups we don't have!
+ (let ((gnus-sync-newsrc-loader
+ (loop for entry in (cdr gnus-newsrc-alist)
+ when (gnus-grep-in-list
+ (car entry) ;the group name
+ gnus-sync-newsrc-groups)
+ collect (cons (car entry)
+ (mapcar (lambda (offset)
+ (cons offset (nth offset entry)))
+ gnus-sync-newsrc-offsets)))))
(with-temp-file gnus-sync-backend
(progn
(let ((coding-system-for-write gnus-ding-file-coding-system)
gnus-sync-global-vars))
variable)
(while variables
- (when (and (boundp (setq variable (pop variables)))
+ (if (and (boundp (setq variable (pop variables)))
(symbol-value variable))
- (princ "\n(setq ")
- (princ (symbol-name variable))
- (princ " '")
- (prin1 (symbol-value variable))
- (princ ")\n"))))
+ (progn
+ (princ "\n(setq ")
+ (princ (symbol-name variable))
+ (princ " '")
+ (prin1 (symbol-value variable))
+ (princ ")\n"))
+ (princ "\n;;; skipping empty variable ")
+ (princ (symbol-name variable)))))
(gnus-message
7
"gnus-sync: stored variables %s and %d groups in %s"
(interactive)
;; (add-hook 'gnus-get-new-news-hook 'gnus-sync-read)
(add-hook 'gnus-save-newsrc-hook 'gnus-sync-save)
- (add-hook 'gnus-read-newsrc-el-hoo4a 'gnus-sync-read))
+ (add-hook 'gnus-read-newsrc-el-hook 'gnus-sync-read))
(defun gnus-sync-unload-hook ()
"Uninstall the sync hooks."