X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fnndoc.el;h=46d775a345f5de23f4df21c38e27ce504b926de1;hb=148b7a5fbdfdd8dcc096b7b74f2b449e07857b50;hp=981570cc83fb5edd89d74a2c1fec5a1b9f1cc2e8;hpb=9a8731d6dea8021a10dec1b42f382609336a9aa9;p=gnus diff --git a/lisp/nndoc.el b/lisp/nndoc.el index 981570cc8..46d775a34 100644 --- a/lisp/nndoc.el +++ b/lisp/nndoc.el @@ -64,9 +64,6 @@ from the document.") (body-end . "") (file-end . "") (subtype digest guess)) - (mime-parts - (generate-head-function . nndoc-generate-mime-parts-head) - (article-transform-function . nndoc-transform-mime-parts)) (nsmail (article-begin . "^From - ")) (news @@ -82,6 +79,9 @@ from the document.") (body-end . "\^_") (body-begin-function . nndoc-babyl-body-begin) (head-begin-function . nndoc-babyl-head-begin)) + (mime-parts + (generate-head-function . nndoc-generate-mime-parts-head) + (article-transform-function . nndoc-transform-mime-parts)) (exim-bounce (article-begin . "^------ This is a copy of the message, including all the headers. ------\n\n") (body-end-function . nndoc-exim-bounce-body-end-function)) @@ -100,7 +100,7 @@ from the document.") (head-end . "^\t") (generate-head-function . nndoc-generate-clari-briefs-head) (article-transform-function . nndoc-transform-clari-briefs)) - + (standard-digest (first-article . ,(concat "^" (make-string 70 ?-) "\n *\n+")) (article-begin . ,(concat "^\n" (make-string 30 ?-) "\n *\n+")) @@ -118,6 +118,16 @@ from the document.") (file-end . "^End of") (prepare-body-function . nndoc-unquote-dashes) (subtype digest guess)) + (google + (pre-dissection-function . nndoc-decode-content-transfer-encoding) + (article-begin . "^== [0-9]+ of [0-9]+ ==$") + (head-begin . "^Date:") + (head-end . "^$") + (body-end-function . nndoc-digest-body-end) + (body-begin . "^$") + (file-end . "^==============================================================================$") + (prepare-body-function . nndoc-unquote-dashes) + (subtype digest guess)) (lanl-gov-announce (article-begin . "^\\\\\\\\\n") (head-begin . "^\\(Paper.*:\\|arXiv:\\)") @@ -186,6 +196,7 @@ from the document.") (defvoo nndoc-article-begin-function nil) (defvoo nndoc-generate-article-function nil) (defvoo nndoc-dissection-function nil) +(defvoo nndoc-pre-dissection-function nil) (defvoo nndoc-status-string "") (defvoo nndoc-group-alist nil) @@ -204,8 +215,7 @@ from the document.") (deffoo nndoc-retrieve-headers (articles &optional newsgroup server fetch-old) (when (nndoc-possibly-change-buffer newsgroup server) - (save-excursion - (set-buffer nntp-server-buffer) + (with-current-buffer nntp-server-buffer (erase-buffer) (let (article entry) (if (stringp (car articles)) @@ -254,7 +264,7 @@ from the document.") (funcall nndoc-article-transform-function article)) t)))))) -(deffoo nndoc-request-group (group &optional server dont-check) +(deffoo nndoc-request-group (group &optional server dont-check info) "Select news GROUP." (let (number) (cond @@ -270,6 +280,11 @@ from the document.") (t (nnheader-insert "211 %d %d %d %s\n" number 1 number group))))) +(deffoo nndoc-retrieve-groups (groups &optional server) + (dolist (group groups) + (nndoc-request-group group server)) + t) + (deffoo nndoc-request-type (group &optional article) (cond ((not article) 'unknown) (nndoc-post-type nndoc-post-type) @@ -288,7 +303,7 @@ from the document.") t) (deffoo nndoc-request-list (&optional server) - nil) + t) (deffoo nndoc-request-newgroups (date &optional server) nil) @@ -322,8 +337,7 @@ from the document.") (concat " *nndoc " group "*")))) nndoc-group-alist) (setq nndoc-dissection-alist nil) - (save-excursion - (set-buffer nndoc-current-buffer) + (with-current-buffer nndoc-current-buffer (erase-buffer) (if (and (stringp nndoc-address) (string-match nndoc-binary-file-names nndoc-address)) @@ -336,8 +350,7 @@ from the document.") ;; Initialize the nndoc structures according to this new document. (when (and nndoc-current-buffer (not nndoc-dissection-alist)) - (save-excursion - (set-buffer nndoc-current-buffer) + (with-current-buffer nndoc-current-buffer (nndoc-set-delims) (if (eq nndoc-article-type 'mime-parts) (nndoc-dissect-mime-parts) @@ -363,7 +376,8 @@ from the document.") nndoc-generate-head-function nndoc-body-begin-function nndoc-head-begin-function nndoc-generate-article-function - nndoc-dissection-function))) + nndoc-dissection-function + nndoc-pre-dissection-function))) (while vars (set (pop vars) nil))) (let (defs) @@ -445,6 +459,22 @@ from the document.") (forward-line 1) (goto-char (+ (point) (string-to-number (match-string 1)))))) +(defun nndoc-google-type-p () + (when (re-search-forward "^=3D=3D 1 of [0-9]+ =3D=3D$" nil t) + t)) + +(defun nndoc-decode-content-transfer-encoding () + (let ((encoding + (save-restriction + (message-narrow-to-head) + (message-fetch-field "content-transfer-encoding")))) + (when (and encoding + (search-forward "\n\n" nil t)) + (save-restriction + (narrow-to-region (point) (point-max)) + (mm-decode-content-transfer-encoding + (intern (downcase (mail-header-strip encoding)))))))) + (defun nndoc-babyl-type-p () (when (re-search-forward "\^_\^L *\n" nil t) t)) @@ -560,8 +590,7 @@ from the document.") (defun nndoc-generate-clari-briefs-head (article) (let ((entry (cdr (assq article nndoc-dissection-alist))) subject from) - (save-excursion - (set-buffer nndoc-current-buffer) + (with-current-buffer nndoc-current-buffer (save-restriction (narrow-to-region (car entry) (nth 3 entry)) (goto-char (point-min)) @@ -649,8 +678,7 @@ from the document.") (let ((entry (cdr (assq article nndoc-dissection-alist))) (from "") subject date) - (save-excursion - (set-buffer nndoc-current-buffer) + (with-current-buffer nndoc-current-buffer (save-restriction (narrow-to-region (car entry) (nth 1 entry)) (goto-char (point-min)) @@ -741,7 +769,7 @@ from the document.") (setq p (1+ (nth 3 blk))))) (goto-char begin) (while (re-search-forward "\r$" nil t) - (delete-backward-char 1)) + (delete-char -1)) (when head (goto-char begin) (when (search-forward "\n\n" nil t) @@ -801,12 +829,14 @@ from the document.") (first t) art-begin head-begin head-end body-begin body-end) (setq nndoc-dissection-alist nil) - (save-excursion - (set-buffer nndoc-current-buffer) + (with-current-buffer nndoc-current-buffer (goto-char (point-min)) ;; Remove blank lines. (while (eq (following-char) ?\n) (delete-char 1)) + (when nndoc-pre-dissection-function + (save-excursion + (funcall nndoc-pre-dissection-function))) (if nndoc-dissection-function (funcall nndoc-dissection-function) ;; Find the beginning of the file. @@ -871,8 +901,7 @@ When a MIME entity contains sub-entities, dissection produces one article for the header of this entity, and one article per sub-entity." (setq nndoc-dissection-alist nil nndoc-mime-split-ordinal 0) - (save-excursion - (set-buffer nndoc-current-buffer) + (with-current-buffer nndoc-current-buffer (nndoc-dissect-mime-parts-sub (point-min) (point-max) nil nil nil))) (defun nndoc-dissect-mime-parts-sub (head-begin body-end article-insert @@ -1025,5 +1054,4 @@ symbol in the alist." (provide 'nndoc) -;; arch-tag: f5c2970e-0387-47ac-a0b3-6cc317dffabe ;;; nndoc.el ends here