X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fnnrss.el;h=32b4f4f116f9c75228f19c61350ca9dda1664eee;hb=8339220cc25db3fbdab4367d6252e596bddd9cb1;hp=8d8a40d002ab6682ee6d1f0f8c23fa37dadb726f;hpb=c9a393eeb329a99695566342a9f03b8a30000898;p=gnus diff --git a/lisp/nnrss.el b/lisp/nnrss.el index 8d8a40d00..32b4f4f11 100644 --- a/lisp/nnrss.el +++ b/lisp/nnrss.el @@ -77,7 +77,8 @@ this variable to the list of fields to be ignored.") (defvar nnrss-group-alist '() "List of RSS addresses.") -(defvar nnrss-use-local nil) +(defvar nnrss-use-local nil + "If non-nil nnrss will read the feeds from local files in nnrss-directory.") (defvar nnrss-description-field 'X-Gnus-Description "Field name used for DESCRIPTION. @@ -134,8 +135,7 @@ used to render text. If it is nil, text will simply be folded.") (setq group (nnrss-decode-group-name group)) (nnrss-possibly-change-group group server) (let (e) - (save-excursion - (set-buffer nntp-server-buffer) + (with-current-buffer nntp-server-buffer (erase-buffer) (dolist (article articles) (if (setq e (assq article nnrss-group-data)) @@ -179,7 +179,7 @@ used to render text. If it is nil, text will simply be folded.") "\n"))))) 'nov) -(deffoo nnrss-request-group (group &optional server dont-check) +(deffoo nnrss-request-group (group &optional server dont-check info) (setq group (nnrss-decode-group-name group)) (nnheader-message 6 "nnrss: Requesting %s..." group) (nnrss-possibly-change-group group server) @@ -342,11 +342,6 @@ used to render text. If it is nil, text will simply be folded.") ;; we return the article number. (cons nnrss-group (car e)))))) -(deffoo nnrss-request-list (&optional server) - (nnrss-possibly-change-group nil server) - (nnrss-generate-active) - t) - (deffoo nnrss-open-server (server &optional defs connectionless) (nnrss-read-server-data server) (nnoo-change-server 'nnrss server defs) @@ -389,14 +384,24 @@ used to render text. If it is nil, text will simply be folded.") (deffoo nnrss-request-list-newsgroups (&optional server) (nnrss-possibly-change-group nil server) - (save-excursion - (set-buffer nntp-server-buffer) + (with-current-buffer nntp-server-buffer (erase-buffer) (dolist (elem nnrss-group-alist) (if (third elem) (insert (car elem) "\t" (third elem) "\n")))) t) +(deffoo nnrss-retrieve-groups (groups &optional server) + (dolist (group groups) + (nnrss-possibly-change-group group server) + (nnrss-check-group group server)) + (with-current-buffer nntp-server-buffer + (erase-buffer) + (dolist (group groups) + (let ((elem (assoc group nnrss-server-data))) + (insert (format "%S %s 1 y\n" group (or (cadr elem) 0))))) + 'active)) + (nnoo-define-skeleton nnrss) ;;; Internal functions @@ -479,20 +484,6 @@ nnrss: %s: Not valid XML %s and w3-parse doesn't work %s" (nnrss-read-group-data group server) (setq nnrss-group group))) -(defvar nnrss-extra-categories '(nnrss-snarf-moreover-categories)) - -(defun nnrss-generate-active () - (when (y-or-n-p "Fetch extra categories? ") - (mapc 'funcall nnrss-extra-categories)) - (save-excursion - (set-buffer nntp-server-buffer) - (erase-buffer) - (dolist (elem nnrss-group-alist) - (insert (prin1-to-string (car elem)) " 0 1 y\n")) - (dolist (elem nnrss-server-data) - (unless (assoc (car elem) nnrss-group-alist) - (insert (prin1-to-string (car elem)) " 0 1 y\n"))))) - (autoload 'timezone-parse-date "timezone") (defun nnrss-normalize-date (date) @@ -571,12 +562,7 @@ which RSS 2.0 allows." (let ((file (nnrss-make-filename "nnrss" server)) (file-name-coding-system nnmail-pathname-coding-system)) (when (file-exists-p file) - ;; In Emacs 21.3 and earlier, `load' doesn't support non-ASCII - ;; file names. So, we use `insert-file-contents' instead. - (mm-with-multibyte-buffer - (let ((coding-system-for-read nnrss-file-coding-system)) - (insert-file-contents file) - (eval-region (point-min) (point-max))))))) + (load file nil t t)))) (defun nnrss-save-server-data (server) (gnus-make-directory nnrss-directory) @@ -600,12 +586,7 @@ which RSS 2.0 allows." (let ((file (nnrss-make-filename group server)) (file-name-coding-system nnmail-pathname-coding-system)) (when (file-exists-p file) - ;; In Emacs 21.3 and earlier, `load' doesn't support non-ASCII - ;; file names. So, we use `insert-file-contents' instead. - (mm-with-multibyte-buffer - (let ((coding-system-for-read nnrss-file-coding-system)) - (insert-file-contents file) - (eval-region (point-min) (point-max)))) + (load file nil t t) (dolist (e nnrss-group-data) (puthash (nth 9 e) t nnrss-group-hashtb) (when (and (car e) (> nnrss-group-min (car e))) @@ -868,33 +849,6 @@ It is useful when `(setq nnrss-use-local t)'." (append nnheader-file-name-translation-alist '((?' . ?_))))) (nnheader-translate-file-chars name))) -(defvar nnrss-moreover-url - "http://w.moreover.com/categories/category_list_rss.html" - "The url of moreover.com categories.") - -(defun nnrss-snarf-moreover-categories () - "Snarf RSS links from moreover.com." - (interactive) - (let (category name url changed) - (with-temp-buffer - (nnrss-insert nnrss-moreover-url) - (goto-char (point-min)) - (while (re-search-forward - "\\|