comparison lisp/w3/url-news.el @ 173:8eaf7971accc r20-3b13

Import from CVS: tag r20-3b13
author cvs
date Mon, 13 Aug 2007 09:49:09 +0200
parents 441bb1e64a06
children
comparison
equal deleted inserted replaced
172:a38aed19690b 173:8eaf7971accc
1 ;;; url-news.el --- News Uniform Resource Locator retrieval code 1 ;;; url-news.el --- News Uniform Resource Locator retrieval code
2 ;; Author: wmperry 2 ;; Author: wmperry
3 ;; Created: 1997/02/18 23:35:11 3 ;; Created: 1997/07/05 22:54:24
4 ;; Version: 1.7 4 ;; Version: 1.8
5 ;; Keywords: comm, data, processes 5 ;; Keywords: comm, data, processes
6 6
7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 ;;; Copyright (c) 1993-1996 by William M. Perry (wmperry@cs.indiana.edu) 8 ;;; Copyright (c) 1993-1996 by William M. Perry (wmperry@cs.indiana.edu)
9 ;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc. 9 ;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc.
26 ;;; Boston, MA 02111-1307, USA. 26 ;;; Boston, MA 02111-1307, USA.
27 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 27 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
28 (require 'url-vars) 28 (require 'url-vars)
29 (require 'url-parse) 29 (require 'url-parse)
30 30
31 (defgroup url-news nil
32 "News related options"
33 :group 'url)
34
35 (defcustom url-news-use-article-mode nil
36 "*Whether to use Gnus' article mode for displaying news articles."
37 :type 'boolean
38 :group 'url-news)
39
31 (defun url-format-news () 40 (defun url-format-news ()
32 (url-clear-tmp-buffer) 41 (url-clear-tmp-buffer)
33 (insert "HTTP/1.0 200 Retrieval OK\r\n" 42 (insert "HTTP/1.0 200 Retrieval OK\r\n"
34 (save-excursion 43 (save-excursion
35 (set-buffer nntp-server-buffer) 44 (set-buffer nntp-server-buffer)
41 (qsubj (if subj (url-insert-entities-in-string subj) nil)) 50 (qsubj (if subj (url-insert-entities-in-string subj) nil))
42 (org (cdr (assoc "organization" url-current-mime-headers))) 51 (org (cdr (assoc "organization" url-current-mime-headers)))
43 (qorg (if org (url-insert-entities-in-string org) nil)) 52 (qorg (if org (url-insert-entities-in-string org) nil))
44 (typ (or (cdr (assoc "content-type" url-current-mime-headers)) 53 (typ (or (cdr (assoc "content-type" url-current-mime-headers))
45 "text/plain")) 54 "text/plain"))
55 (inhibit-read-only t)
46 (qgrps (mapcar 'car 56 (qgrps (mapcar 'car
47 (url-split 57 (url-split
48 (url-insert-entities-in-string 58 (url-insert-entities-in-string
49 (or (cdr (assoc "newsgroups" 59 (or (cdr (assoc "newsgroups"
50 url-current-mime-headers)) 60 url-current-mime-headers))
61 "[ \t,\n<>]+"))))) 71 "[ \t,\n<>]+")))))
62 (date (cdr (assoc "date" url-current-mime-headers)))) 72 (date (cdr (assoc "date" url-current-mime-headers))))
63 (if (or (not (string-match "text/" typ)) 73 (if (or (not (string-match "text/" typ))
64 (string-match "text/html" typ)) 74 (string-match "text/html" typ))
65 nil ; Let natural content-type take over 75 nil ; Let natural content-type take over
66 (insert "<html>\n" 76 (if (and (fboundp 'gnus-article-mode)
67 " <head>\n" 77 url-news-use-article-mode)
68 " <title>" qsubj "</title>\n" 78 (progn
69 " <link rev=\"made\" href=\"mailto:" qfrom "\">\n" 79 (kill-buffer (current-buffer))
70 " </head>\n" 80 (set-buffer (get-buffer-create "Emacs/W3 News"))
71 " <body>\n" 81 (erase-buffer)
72 " <div>\n" 82 (insert
73 " <h1 align=center>" qsubj "</h1>\n" 83 (save-excursion
74 " <p role=\"headers\">\n" 84 (set-buffer nntp-server-buffer)
75 " <b>From</b>: " qfrom "<br>\n" 85 (save-restriction
76 " <b>Newsgroups</b>: " 86 (widen)
77 (mapconcat 87 (buffer-string))))
78 (function 88 (gnus-article-mode)
79 (lambda (grp) 89 (article-hide-headers 1)
80 (concat "<a href=\"" grp "\">" grp "</a>"))) qgrps ", ") 90 (goto-char (point-min))
81 "<br>\n" 91 (display-buffer (current-buffer)))
82 (if org 92 (insert "<html>\n"
83 (concat 93 " <head>\n"
84 " <b>Organization</b>: <i> " qorg "</i> <br>\n") 94 " <title>" qsubj "</title>\n"
85 "") 95 " <link rev=\"made\" href=\"mailto:" qfrom "\">\n"
86 " <b>Date</b>: <date> " date "</date> <br>\n" 96 " </head>\n"
87 " </p> <hr>\n" 97 " <body>\n"
88 (if (null qrefs) 98 " <div>\n"
89 "" 99 " <h1 align=center>" qsubj "</h1>\n"
90 (concat 100 " <p role=\"headers\">\n"
91 " <p>References\n" 101 " <b>From</b>: " qfrom "<br>\n"
92 " <ol>\n" 102 " <b>Newsgroups</b>: "
93 (mapconcat 103 (mapconcat
94 (function 104 (function
95 (lambda (ref) 105 (lambda (grp)
96 (concat " <li> <a href=\"" ref "\"> " 106 (concat "<a href=\"" grp "\">" grp "</a>"))) qgrps ", ")
97 ref "</a></li>\n"))) 107 "<br>\n"
98 qrefs "") 108 (if org
99 " </ol>\n" 109 (concat
100 " </p>\n" 110 " <b>Organization</b>: <i> " qorg "</i> <br>\n")
101 " <hr>\n")) 111 "")
102 " <ul plain>\n" 112 " <b>Date</b>: <date> " date "</date> <br>\n"
103 " <li><a href=\"newspost:disfunctional\"> " 113 " </p> <hr>\n"
104 "Post to this group </a></li>\n" 114 (if (null qrefs)
105 " <li><a href=\"mailto:" qfrom "\"> Reply to " qfrom 115 ""
106 "</a></li>\n" 116 (concat
107 " </ul>\n" 117 " <p>References\n"
108 " <hr>" 118 " <ol>\n"
109 " <pre>\n") 119 (mapconcat
110 (let ((s (buffer-substring (point) (point-max)))) 120 (function
111 (delete-region (point) (point-max)) 121 (lambda (ref)
112 (insert (url-insert-entities-in-string s))) 122 (concat " <li> <a href=\"" ref "\"> "
113 (goto-char (point-max)) 123 ref "</a></li>\n")))
114 (setq url-current-mime-type "text/html" 124 qrefs "")
115 url-current-mime-viewer (mm-mime-info url-current-mime-type nil 5)) 125 " </ol>\n"
116 (let ((x (assoc "content-type" url-current-mime-headers))) 126 " </p>\n"
117 (if x 127 " <hr>\n"))
118 (setcdr x "text/html") 128 " <ul plain>\n"
119 (setq url-current-mime-headers (cons (cons "content-type" 129 " <li><a href=\"newspost:disfunctional\"> "
120 "text/html") 130 "Post to this group </a></li>\n"
121 url-current-mime-headers)))) 131 " <li><a href=\"mailto:" qfrom "\"> Reply to " qfrom
122 (insert "\n" 132 "</a></li>\n"
123 " </pre>\n" 133 " </ul>\n"
124 " </div>\n" 134 " <hr>"
125 " </body>\n" 135 " <pre>\n")
126 "</html>\n" 136 (let ((s (buffer-substring (point) (point-max))))
127 "<!-- Automatically generated by URL/" url-version 137 (delete-region (point) (point-max))
128 "-->")))) 138 (insert (url-insert-entities-in-string s)))
139 (goto-char (point-max))
140 (setq url-current-mime-type "text/html"
141 url-current-mime-viewer (mm-mime-info url-current-mime-type nil 5))
142 (let ((x (assoc "content-type" url-current-mime-headers)))
143 (if x
144 (setcdr x "text/html")
145 (setq url-current-mime-headers (cons (cons "content-type"
146 "text/html")
147 url-current-mime-headers))))
148 (insert "\n"
149 " </pre>\n"
150 " </div>\n"
151 " </body>\n"
152 "</html>\n"
153 "<!-- Automatically generated by URL/" url-version
154 "-->")))))
129 155
130 (defun url-check-gnus-version () 156 (defun url-check-gnus-version ()
131 (require 'nntp) 157 (require 'nntp)
132 (condition-case () 158 (condition-case ()
133 (require 'gnus) 159 (require 'gnus)