From fb3dd43f1d8327c50988fb219a44fe7427e8c390 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Sun, 7 Nov 1999 21:07:39 +0000 Subject: [PATCH] *** empty log message *** --- lisp/ChangeLog | 16 +++- lisp/gnus-start.el | 1 + lisp/nnslashdot.el | 186 +++++++++++++++++++++++++++++++++++++++------ 3 files changed, 176 insertions(+), 27 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fc641e997..d902dfdb1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +1999-11-07 01:17:53 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-request-list): Give out extended group + names. + + * gnus-start.el (gnus-ignored-newsgroups): Disregard bogus chars + if starting with a quote. + 1999-11-07 13:06:11 Shenghuo ZHU * gnus-srvr.el (gnus-browse-foreign-server): Support backslash in @@ -492,7 +500,7 @@ Mon Sep 27 15:18:05 1999 Lars Magne Ingebrigtsen * gnus-art.el (gnus-treat-predicate): Work for (not 5). -1999-08-27 Peter von der Ah-Aé $)A +1999-08-27 Peter von der Ahé * message.el (message-send): More helpful error message if sending fails @@ -694,7 +702,7 @@ Fri Aug 27 13:17:48 1999 Lars Magne Ingebrigtsen * gnus-agent.el (gnus-agent-get-undownloaded-list): Don't mark cached articles as `undownloaded'. -Tue Jul 20 02:39:56 1999 Peter von der Ah-Aé $)A +Tue Jul 20 02:39:56 1999 Peter von der Ahé * gnus-sum.el (gnus-summary-exit): Allow gnus-use-adaptive-scoring to have buffer local values. @@ -3246,7 +3254,7 @@ Mon Nov 30 23:38:02 1998 Shenghuo ZHU * mm-uu.el (mm-uu-dissect): Use mm-make-handle. -1998-12-01 01:53:49 Fran-Açois Pinard $)A +1998-12-01 01:53:49 François Pinard * nndoc.el (nndoc-mime-parts-type-p): Do related. @@ -4992,7 +5000,7 @@ Mon Sep 14 18:55:38 1998 Lars Magne Ingebrigtsen * rfc2047.el (rfc2047-q-encode-region): Would bug out. -1998-09-13 Fran-Açois Pinard $)A +1998-09-13 François Pinard * nndoc.el: Make nndoc-dissection-alist simpler for MIME, adjust all related functions. Handle message/rfc822 parts. Display subject on diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index 87dc5f518..7b63a8d48 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -235,6 +235,7 @@ not match this regexp will be removed before saving the list." (mapconcat 'identity '("^to\\." ; not "real" groups "^[0-9. \t]+ " ; all digits in name + "^[\"][]\"[#'()]" ; bogus characters ) "\\|") "*A regexp to match uninteresting newsgroups in the active file. diff --git a/lisp/nnslashdot.el b/lisp/nnslashdot.el index 456fcac9a..8d2c2e377 100644 --- a/lisp/nnslashdot.el +++ b/lisp/nnslashdot.el @@ -56,8 +56,12 @@ (defvoo nnslashdot-active-url "http://slashdot.org/search.pl?section=&min=%d" "Where nnslashdot will fetch the active file from.") -(defvoo nnslashdot-articles-url "http://slashdot.org/article.pl?sid=%s&threshold=%d&commentsort=0&mode=flat&startat=%d" - "Where nnslashdot will fetch articles from.") +(defvoo nnslashdot-comments-url "http://slashdot.org/comments.pl?sid=%s&threshold=%d&commentsort=0&mode=flat&startat=%d" + "Where nnslashdot will fetch comments from.") + +(defvoo nnslashdot-article-url + "http://slashdot.org/article.pl?sid=%s&mode=nocomment" + "Where nnslashdot will fetch the article from.") (defvoo nnslashdot-threshold 0 "The article threshold.") @@ -80,40 +84,159 @@ (let ((last (car (last articles))) (did nil) (start 1) + (sid (caddr (assoc group nnslashdot-groups))) + headers article subject score from date lines parent point + startats s) + (save-excursion + (set-buffer nnslashdot-buffer) + (erase-buffer) + (when (= start 1) + (url-insert-file-contents (format nnslashdot-article-url sid)) + (setq buffer-file-name nil) + (goto-char (point-min)) + (search-forward "Posted by ") + (when (looking-at "]+>\\([^<]+\\)") + (setq from (match-string 1))) + (search-forward " on ") + (setq date (nnslashdot-date-to-date + (buffer-substring (point) (1- (search-forward "<"))))) + (forward-line 2) + (setq lines (count-lines (point) + (search-forward + "A href=http://slashdot.org/article.pl"))) + (push + (cons + 1 + (make-full-mail-header + 1 group from date (concat "<" sid "%1@slashdot>") + "" 0 lines nil nil)) + headers) + (goto-char (point-max)) + (while (re-search-backward "startat=\\([0-9]+\\)" nil t) + (setq s (match-string 1)) + (unless (memq s startats) + (push s startats))) + (unless startats + (push 1 startats))) + (dolist (start (sort startats '<)) + (setq point (goto-char (point-max))) + (url-insert-file-contents + (format nnslashdot-comments-url sid nnslashdot-threshold start)) + (setq buffer-file-name nil) + (goto-char point) + (while (re-search-forward + "\\([^<]+\\).*score:\\([^)]+\\))" + nil t) + (setq article (string-to-number (match-string 1)) + subject (match-string 2) + score (match-string 3)) + (when (string-match "^Re: *" subject) + (setq subject (concat "Re: " (substring subject (match-end 0))))) + (forward-line 1) + (if (looking-at "by ]+>\\([^<]+\\)[ \t\n]*.*(\\([^)]+\\))") + (setq from (concat (match-string 1) " <" (match-string 2) ">")) + (looking-at "by \\(.+\\) on ") + (setq from (match-string 1))) + (goto-char (- (match-end 0) 5)) + (search-forward " on ") + (setq date + (nnslashdot-date-to-date + (buffer-substring (point) (progn (end-of-line) (point))))) + (setq lines (/ (abs (- (search-forward ""))) + 70)) + (forward-line 2) + (setq parent + (if (looking-at ".*cid=\\([0-9]+\\)") + (match-string 1) + nil)) + (setq did t) + (push + (cons + (1+ article) + (make-full-mail-header + (1+ article) subject + from date + (concat "<" sid "%" + (number-to-string (1+ article)) + "@slashdot>") + (if parent + (concat "<" sid "%" + (number-to-string (1+ (string-to-number parent))) + "@slashdot>") + "") + 0 (string-to-number score) nil nil)) + headers)))) + (setq nnslashdot-headers + (sort headers (lambda (s1 s2) (< (car s1) (car s2))))) + (save-excursion + (set-buffer nntp-server-buffer) + (erase-buffer) + (dolist (header nnslashdot-headers) + (nnheader-insert-nov (cdr header)))) + 'nov)) + +(deffoo nnslashdot-sane-retrieve-headers (articles &optional group + server fetch-old) + (nnslashdot-possibly-change-server group server) + (let ((last (car (last articles))) + (did nil) + (start (car articles)) + (sid (caddr (assoc group nnslashdot-groups))) headers article subject score from date lines parent point) (save-excursion (set-buffer nnslashdot-buffer) (erase-buffer) + (when (= start 1) + (url-insert-file-contents (format nnslashdot-article-url sid)) + (setq buffer-file-name nil) + (goto-char (point-min)) + (search-forward "Posted by ") + (when (looking-at "]+>\\([^<]+\\)") + (setq from (match-string 1))) + (search-forward " on ") + (setq date (nnslashdot-date-to-date + (buffer-substring (point) (1- (search-forward "<"))))) + (forward-line 2) + (setq lines (count-lines (point) + (search-forward + "A href=http://slashdot.org/article.pl"))) + (push + (cons + 1 + (make-full-mail-header + 1 group from date (concat "<" sid "%1@slashdot>") + "" 0 lines nil nil)) + headers)) (while (or (not article) (and did - (< (string-to-number article) last))) + (< article last))) (when article - (setq start (1+ (string-to-number article)))) + (setq start (1+ article))) (setq point (goto-char (point-max))) (url-insert-file-contents - (format nnslashdot-articles-url - (caddr (assoc group nnslashdot-groups)) - nnslashdot-threshold start)) + (format nnslashdot-comments-url sid nnslashdot-threshold start)) (setq buffer-file-name nil) (goto-char point) (while (re-search-forward "\\([^<]+\\).*score\\([^)]+\\))" nil t) - (setq article (match-string 1) + (setq article (string-to-number (match-string 1)) subject (match-string 2) score (match-string 3)) (forward-line 1) (if (looking-at "by ]+>\\([^<]+\\)[ \t\n]*.*(\\([^)]+\\))") (setq from (concat (match-string 1) " <" (match-string 2) ">")) - (looking-at "by \\([^ ]+\\) ") + (looking-at "by \\(.+\\) on ") (setq from (match-string 1))) - (goto-char (match-end 0)) - (search-forward "on ") + (goto-char (- (match-end 0) 5)) + (search-forward " on ") (setq date (nnslashdot-date-to-date (buffer-substring (point) (progn (end-of-line) (point))))) - (setq lines (count-lines (search-forward ""))) + (setq lines (/ (abs (- (search-forward ""))) + 70)) (forward-line 2) (setq parent (if (looking-at ".*cid=\\([0-9]+\\)") @@ -122,11 +245,18 @@ (setq did t) (push (cons - (string-to-number article) + (1+ article) (make-full-mail-header - (string-to-number article) (concat subject " (" score ")") - from date (concat "<" group "%" article "@slashdot>") - (if parent (concat "<" group "%" parent "@slashdot>") "") + (1+ article) (concat subject " (" score ")") + from date + (concat "<" sid "%" + (number-to-string (1+ article)) + "@slashdot>") + (if parent + (concat "<" sid "%" + (number-to-string (1+ (string-to-number parent))) + "@slashdot>") + "") 0 lines nil nil)) headers)))) (setq nnslashdot-headers @@ -164,12 +294,21 @@ (save-excursion (set-buffer nnslashdot-buffer) (goto-char (point-min)) - (when (and (numberp article) - (search-forward (format "" article))) - (setq contents - (buffer-substring - (re-search-forward "]+>") - (search-forward ""))))) + (when (numberp article) + (if (= article 1) + (progn + (search-forward " on ") + (forward-line 1) + (setq contents + (buffer-substring + (point) + (search-forward + "A href=http://slashdot.org/article.pl")))) + (search-forward (format "" (1- article))) + (setq contents + (buffer-substring + (re-search-forward "]+>") + (search-forward "")))))) (when contents (save-excursion (set-buffer (or buffer nntp-server-buffer)) @@ -302,6 +441,7 @@ (substring (nth 1 elem) 0 3) " " (substring (nth 2 elem) 0 2) " " (substring (nth 3 elem) 1 6) " " + (format-time-string "%Y") " " (nth 4 elem)))) (provide 'nnslashdot) -- 2.34.1