X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Flegacy-gnus-agent.el;h=7293e334335c2b4c22f6a506230d2ccdd6d89ee1;hp=16b0cf6c89fa87bdde7e86bb31aaefb13b7d7e31;hb=b83f8075b710368442538ef872ed3f6b5400698a;hpb=3dad07b1da5436839729c63a5385c62055b0d554 diff --git a/lisp/legacy-gnus-agent.el b/lisp/legacy-gnus-agent.el index 16b0cf6c8..7293e3343 100644 --- a/lisp/legacy-gnus-agent.el +++ b/lisp/legacy-gnus-agent.el @@ -1,10 +1,37 @@ +;;; gnus-agent.el --- Legacy unplugged support for Gnus + +;; Copyright (C) 2004-2016 Free Software Foundation, Inc. + +;; Author: Kevin Greiner +;; Keywords: news + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; Conversion functions for the Agent. + +;;; Code: (require 'gnus-start) (require 'gnus-util) (require 'gnus-range) (require 'gnus-agent) -; Oort Gnus v0.08 - This release updated agent to no longer use -; history file and to support a compressed alist. +;; Oort Gnus v0.08 - This release updated agent to no longer use +;; history file and to support a compressed alist. (defvar gnus-agent-compressed-agentview-search-only nil) @@ -25,7 +52,7 @@ converted to the compressed format." ((file-directory-p member) (push member search-in)) ((equal (file-name-nondirectory member) ".agentview") - (setq converted-something + (setq converted-something (or (gnus-agent-convert-agentview member) converted-something)))))) @@ -81,23 +108,20 @@ converted to the compressed format." (throw 'found-file-to-convert t)) (erase-buffer) - (let ((compressed nil)) - (mapcar (lambda (pair) - (let* ((article-id (car pair)) - (day-of-download (cdr pair)) - (comp-list (assq day-of-download compressed))) - (if comp-list - (setcdr comp-list - (cons article-id (cdr comp-list))) - (setq compressed - (cons (list day-of-download article-id) - compressed))) - nil)) alist) - (mapcar (lambda (comp-list) - (setcdr comp-list - (gnus-compress-sequence - (nreverse (cdr comp-list))))) - compressed) + (let (article-id day-of-download comp-list compressed) + (while alist + (setq article-id (caar alist) + day-of-download (cdar alist) + comp-list (assq day-of-download compressed) + alist (cdr alist)) + (if comp-list + (setcdr comp-list (cons article-id (cdr comp-list))) + (push (list day-of-download article-id) compressed))) + (setq alist compressed) + (while alist + (setq comp-list (pop alist)) + (setcdr comp-list + (gnus-compress-sequence (nreverse (cdr comp-list))))) (princ compressed (current-buffer))) (insert "\n2\n") (write-file file) @@ -123,14 +147,19 @@ converted to the compressed format." (insert "The definition of gnus-agent-expire-days has been changed.\nYou currently have it set to the list:\n ") (gnus-pp gnus-agent-expire-days) - (insert "\nIn order to use version '" converting-to "' of gnus, you will need to set\n") + (insert + (gnus-format-message + "\nIn order to use version `%s' of gnus, you will need to set\n" + converting-to)) (insert "gnus-agent-expire-days to an integer. If you still wish to set different\n") (insert "expiration days to individual groups, you must instead set the\n") - (insert "'agent-days-until-old group and/or topic parameter.\n") + (insert (gnus-format-message + "`agent-days-until-old' group and/or topic parameter.\n")) (insert "\n") (insert "If you would like, gnus can iterate over every group comparing its name to the\n") (insert "regular expressions that you currently have in gnus-agent-expire-days. When\n") - (insert "gnus finds a match, it will update that group's 'agent-days-until-old group\n") + (insert (gnus-format-message + "gnus finds a match, it will update that group's `agent-days-until-old' group\n")) (insert "parameter to the value associated with the regular expression.\n") (insert "\n") (insert "Whether gnus assigns group parameters, or not, gnus will terminate with an\n") @@ -162,7 +191,7 @@ converted to the compressed format." (when (eq 0 (string-match (caar days) group)) - (throw 'found (cadar days))) + (throw 'found (cadr (car days)))) (setq days (cdr days))) nil))) (when day @@ -175,36 +204,38 @@ converted to the compressed format." (t t)))))) (kill-buffer buffer)) - (error "Change gnus-agent-expire-days to an integer for gnus to start.")))) + (error "Change gnus-agent-expire-days to an integer for gnus to start")))) ;; The gnus-agent-unlist-expire-days has its own conversion prompt. ;; Therefore, hide the default prompt. (gnus-convert-mark-converter-prompt 'gnus-agent-unlist-expire-days t) (defun gnus-agent-unhook-expire-days (converting-to) - "Remove every lambda from gnus-group-prepare-hook that mention the -symbol gnus-agent-do-once in their definition. This should NOT be + "Remove every lambda from `gnus-group-prepare-hook' that mention the +symbol `gnus-agent-do-once' in their definition. This should NOT be necessary as gnus-agent.el no longer adds them. However, it is possible that the hook was persistently saved." - (let ((h t)) ; iterate from bgn of hook + (let ((h t)) ; Iterate from bgn of hook. (while h (let ((func (progn (when (eq h t) - ;; init h to list of functions + ;; Init h to list of functions. (setq h (cond ((listp gnus-group-prepare-hook) gnus-group-prepare-hook) ((boundp 'gnus-group-prepare-hook) (list gnus-group-prepare-hook))))) (pop h)))) - (when (cond ((eq (type-of func) 'compiled-function) - ;; Search def. of compiled function for gnus-agent-do-once string - (let* (definition - print-level + (when (cond ((byte-code-function-p func) + ;; Search def. of compiled function for + ;; gnus-agent-do-once string. + (let* (definition + print-level print-length (standard-output (lambda (char) (setq definition (cons char definition))))) - (princ func) ; populates definition with reversed list of characters + (princ func) ; Populates definition with reversed list + ; of characters. (let* ((i (length definition)) (s (make-string i 0))) (while definition @@ -212,7 +243,7 @@ possible that the hook was persistently saved." (string-match "\\bgnus-agent-do-once\\b" s)))) ((listp func) - (eq (cadr (nth 2 func)) 'gnus-agent-do-once) ; handles eval'd lambda + (eq (cadr (nth 2 func)) 'gnus-agent-do-once) ; Handles eval'd lambda. )) (remove-hook 'gnus-group-prepare-hook func) @@ -224,4 +255,6 @@ possible that the hook was persistently saved." ;; the .newsrc.eld file. (gnus-convert-mark-converter-prompt 'gnus-agent-unhook-expire-days t) -;;; arch-tag: 845c7b8a-88f7-4468-b8d7-94e8fc72cf1a +(provide 'legacy-gnus-agent) + +;;; legacy-gnus-agent.el ends here