mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-19 18:13:55 +00:00
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-690
Merge from gnus--rel--5.10 Patches applied: * gnus--rel--5.10 (patch 174-181) - Update from CVS - Update from CVS: texi/gnus.texi (RSS): Addition. 2006-01-10 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/nnrss.el (nnrss-wash-html-in-text-plain-parts): New variable. (nnrss-request-article): Render text/plain parts as HTML. * lisp/gnus/gnus-art.el (gnus-article-wash-html-with-w3m): No need to narrow the buffer. 2006-01-08 Reiner Steib <Reiner.Steib@gmx.de> * lisp/gnus/gnus-cus.el (gnus-group-parameters): Sync posting-style with custom definition of `gnus-posting-styles'. * lisp/gnus/gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bind print-circle. Suggested by Kalle Olavi Niemitalo <kon@iki.fi>. 2006-01-05 Reiner Steib <Reiner.Steib@gmx.de> * lisp/gnus/gnus-group.el (gnus-useful-groups): Use Gmane for ding. Use nntp for bug archive. 2006-01-05 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/nnrss.el (nnrss-request-article): Fix the way to fill text/plain parts. (nnrss-normalize-date): New function converts ISO 8601 date into RFC822 style. Suggested by Mark Plaksin <happy@mcplaksin.org>. (nnrss-check-group): Use it. 2006-01-03 Rodrigo Ventura <yoda@isr.ist.utl.pt> (tiny change) * lisp/gnus/gnus-xmas.el (gnus-xmas-group-startup-message): Typo gnus-splash-face -> gnus-splash. Fixes starting from a TTY in XEmacs. 2006-01-01 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/gnus-sum.el (gnus-summary-work-articles): Remove useless `min'. * lisp/gnus/nnrss.el (nnrss-fetch): Make it fail gracefully when it can't fetch a feed. Suggested by Mark Plaksin <happy@mcplaksin.org>. (nnrss-insert-w3): Ditto. 2005-12-21 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/nnrss.el (nnrss-request-article): Fix last change; fill text/plain parts. 2005-12-20 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/nnrss.el (nnrss-request-article): Replace <br />s with newlines in text/plain part. (nnrss-check-group): Don't add excessive newline to dc:subject. 2005-12-19 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/gnus-art.el (gnus-article-delete-text-of-type): Enable it to remove MIME buttons associated with multipart/alternative parts. (gnus-mime-display-alternative): Tag buttons using `article-type' text property. * lisp/gnus/gnus-msg.el (gnus-copy-article-buffer): Remove MIME buttons associated with multipart/alternative parts. 2005-12-19 Mark Plaksin <happy@mcplaksin.org> (tiny change) * lisp/gnus/nnrss.el (nnrss-check-group): Put the RSS dc:subject in the article. 2005-12-18 Lars Magne Ingebrigtsen <larsi@gnus.org> * lisp/gnus/dns.el (query-dns): Make sure we check the buffer size before removing tcp headers. 2006-01-10 Katsumi Yamaoka <yamaoka@jpl.org> * man/gnus.texi (RSS): Document nnrss-wash-html-in-text-plain-parts. 2006-01-06 Katsumi Yamaoka <yamaoka@jpl.org> * man/gnus.texi (RSS): Addition. 2005-12-22 Katsumi Yamaoka <yamaoka@jpl.org> * man/gnus.texi (Summary Post Commands): Fix function bound to `S O p'. 2005-12-19 Katsumi Yamaoka <yamaoka@jpl.org> * man/emacs-mime.texi (Display Customization): Add setting example to mm-discouraged-alternatives.
This commit is contained in:
parent
2898111ccb
commit
7dafe00b0d
@ -1,3 +1,77 @@
|
|||||||
|
2006-01-10 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||||
|
|
||||||
|
* nnrss.el (nnrss-wash-html-in-text-plain-parts): New variable.
|
||||||
|
(nnrss-request-article): Render text/plain parts as HTML.
|
||||||
|
|
||||||
|
* gnus-art.el (gnus-article-wash-html-with-w3m): No need to narrow
|
||||||
|
the buffer.
|
||||||
|
|
||||||
|
2006-01-08 Reiner Steib <Reiner.Steib@gmx.de>
|
||||||
|
|
||||||
|
* gnus-cus.el (gnus-group-parameters): Sync posting-style with
|
||||||
|
custom definition of `gnus-posting-styles'.
|
||||||
|
|
||||||
|
* gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bind
|
||||||
|
print-circle. Suggested by Kalle Olavi Niemitalo <kon@iki.fi>.
|
||||||
|
|
||||||
|
2006-01-05 Reiner Steib <Reiner.Steib@gmx.de>
|
||||||
|
|
||||||
|
* gnus-group.el (gnus-useful-groups): Use Gmane for ding. Use
|
||||||
|
nntp for bug archive.
|
||||||
|
|
||||||
|
2006-01-05 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||||
|
|
||||||
|
* nnrss.el (nnrss-request-article): Fix the way to fill text/plain
|
||||||
|
parts.
|
||||||
|
(nnrss-normalize-date): New function converts ISO 8601 date into
|
||||||
|
RFC822 style. Suggested by Mark Plaksin <happy@mcplaksin.org>.
|
||||||
|
(nnrss-check-group): Use it.
|
||||||
|
|
||||||
|
2006-01-03 Rodrigo Ventura <yoda@isr.ist.utl.pt> (tiny change)
|
||||||
|
|
||||||
|
* gnus-xmas.el (gnus-xmas-group-startup-message): Typo
|
||||||
|
gnus-splash-face -> gnus-splash. Fixes starting from a TTY in
|
||||||
|
XEmacs.
|
||||||
|
|
||||||
|
2006-01-01 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||||
|
|
||||||
|
* gnus-sum.el (gnus-summary-work-articles): Remove useless `min'.
|
||||||
|
|
||||||
|
* nnrss.el (nnrss-fetch): Make it fail gracefully when it can't
|
||||||
|
fetch a feed. Suggested by Mark Plaksin <happy@mcplaksin.org>.
|
||||||
|
(nnrss-insert-w3): Ditto.
|
||||||
|
|
||||||
|
2005-12-21 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||||
|
|
||||||
|
* nnrss.el (nnrss-request-article): Fix last change; fill
|
||||||
|
text/plain parts.
|
||||||
|
|
||||||
|
2005-12-20 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||||
|
|
||||||
|
* nnrss.el (nnrss-request-article): Replace <br />s with newlines
|
||||||
|
in text/plain part.
|
||||||
|
(nnrss-check-group): Don't add excessive newline to dc:subject.
|
||||||
|
|
||||||
|
2005-12-19 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||||
|
|
||||||
|
* gnus-art.el (gnus-article-delete-text-of-type): Enable it to
|
||||||
|
remove MIME buttons associated with multipart/alternative parts.
|
||||||
|
(gnus-mime-display-alternative): Tag buttons using `article-type'
|
||||||
|
text property.
|
||||||
|
|
||||||
|
* gnus-msg.el (gnus-copy-article-buffer): Remove MIME buttons
|
||||||
|
associated with multipart/alternative parts.
|
||||||
|
|
||||||
|
2005-12-19 Mark Plaksin <happy@mcplaksin.org> (tiny change)
|
||||||
|
|
||||||
|
* nnrss.el (nnrss-check-group): Put the RSS dc:subject in the
|
||||||
|
article.
|
||||||
|
|
||||||
|
2005-12-18 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||||
|
|
||||||
|
* dns.el (query-dns): Make sure we check the buffer size before
|
||||||
|
removing tcp headers.
|
||||||
|
|
||||||
2006-01-08 Chong Yidong <cyd@stupidchicken.com>
|
2006-01-08 Chong Yidong <cyd@stupidchicken.com>
|
||||||
|
|
||||||
* spam.el (spam-group-ham-mark-p, spam-group-spam-mark-p)
|
* spam.el (spam-group-ham-mark-p, spam-group-spam-mark-p)
|
||||||
|
@ -343,7 +343,8 @@ If FULLP, return the entire record returned."
|
|||||||
(decf times step))
|
(decf times step))
|
||||||
(ignore-errors
|
(ignore-errors
|
||||||
(delete-process process))
|
(delete-process process))
|
||||||
(when tcp-p
|
(when (and tcp-p
|
||||||
|
(>= (buffer-size) 2))
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(delete-region (point) (+ (point) 2)))
|
(delete-region (point) (+ (point) 2)))
|
||||||
(unless (zerop (buffer-size))
|
(unless (zerop (buffer-size))
|
||||||
|
@ -1632,10 +1632,24 @@ Initialized from `text-mode-syntax-table.")
|
|||||||
"Delete text of TYPE in the current buffer."
|
"Delete text of TYPE in the current buffer."
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(let ((b (point-min)))
|
(let ((b (point-min)))
|
||||||
(while (setq b (text-property-any b (point-max) 'article-type type))
|
(if (eq type 'multipart)
|
||||||
(delete-region
|
;; Remove MIME buttons associated with multipart/alternative parts.
|
||||||
b (or (text-property-not-all b (point-max) 'article-type type)
|
(progn
|
||||||
(point-max)))))))
|
(goto-char b)
|
||||||
|
(while (if (get-text-property (point) 'gnus-part)
|
||||||
|
(setq b (point))
|
||||||
|
(when (setq b (next-single-property-change (point)
|
||||||
|
'gnus-part))
|
||||||
|
(goto-char b)
|
||||||
|
t))
|
||||||
|
(end-of-line)
|
||||||
|
(skip-chars-forward "\n")
|
||||||
|
(when (eq (get-text-property b 'article-type) 'multipart)
|
||||||
|
(delete-region b (point)))))
|
||||||
|
(while (setq b (text-property-any b (point-max) 'article-type type))
|
||||||
|
(delete-region
|
||||||
|
b (or (text-property-not-all b (point-max) 'article-type type)
|
||||||
|
(point-max))))))))
|
||||||
|
|
||||||
(defun gnus-article-delete-invisible-text ()
|
(defun gnus-article-delete-invisible-text ()
|
||||||
"Delete all invisible text in the current buffer."
|
"Delete all invisible text in the current buffer."
|
||||||
@ -2500,19 +2514,17 @@ If READ-CHARSET, ask for a coding system."
|
|||||||
(defun gnus-article-wash-html-with-w3m ()
|
(defun gnus-article-wash-html-with-w3m ()
|
||||||
"Wash the current buffer with emacs-w3m."
|
"Wash the current buffer with emacs-w3m."
|
||||||
(mm-setup-w3m)
|
(mm-setup-w3m)
|
||||||
(save-restriction
|
(let ((w3m-safe-url-regexp mm-w3m-safe-url-regexp)
|
||||||
(narrow-to-region (point) (point-max))
|
w3m-force-redisplay)
|
||||||
(let ((w3m-safe-url-regexp mm-w3m-safe-url-regexp)
|
(w3m-region (point-min) (point-max)))
|
||||||
w3m-force-redisplay)
|
(when (and mm-inline-text-html-with-w3m-keymap
|
||||||
(w3m-region (point-min) (point-max)))
|
(boundp 'w3m-minor-mode-map)
|
||||||
(when (and mm-inline-text-html-with-w3m-keymap
|
w3m-minor-mode-map)
|
||||||
(boundp 'w3m-minor-mode-map)
|
(add-text-properties
|
||||||
w3m-minor-mode-map)
|
(point-min) (point-max)
|
||||||
(add-text-properties
|
(list 'keymap w3m-minor-mode-map
|
||||||
(point-min) (point-max)
|
;; Put the mark meaning this part was rendered by emacs-w3m.
|
||||||
(list 'keymap w3m-minor-mode-map
|
'mm-inline-text-html-with-w3m t))))
|
||||||
;; Put the mark meaning this part was rendered by emacs-w3m.
|
|
||||||
'mm-inline-text-html-with-w3m t)))))
|
|
||||||
|
|
||||||
(defun article-hide-list-identifiers ()
|
(defun article-hide-list-identifiers ()
|
||||||
"Remove list identifies from the Subject header.
|
"Remove list identifies from the Subject header.
|
||||||
@ -4956,7 +4968,7 @@ If displaying \"text/html\" is discouraged \(see
|
|||||||
,gnus-mouse-face-prop ,gnus-article-mouse-face
|
,gnus-mouse-face-prop ,gnus-article-mouse-face
|
||||||
face ,gnus-article-button-face
|
face ,gnus-article-button-face
|
||||||
gnus-part ,id
|
gnus-part ,id
|
||||||
gnus-data ,handle))
|
article-type multipart))
|
||||||
(widget-convert-button 'link from (point)
|
(widget-convert-button 'link from (point)
|
||||||
:action 'gnus-widget-press-button
|
:action 'gnus-widget-press-button
|
||||||
:button-keymap gnus-widget-button-keymap)
|
:button-keymap gnus-widget-button-keymap)
|
||||||
|
@ -235,8 +235,11 @@ See `gnus-emphasis-alist'.")
|
|||||||
(const signature-file)
|
(const signature-file)
|
||||||
(const organization)
|
(const organization)
|
||||||
(const address)
|
(const address)
|
||||||
|
(const x-face-file)
|
||||||
(const name)
|
(const name)
|
||||||
(const body))
|
(const body)
|
||||||
|
(symbol)
|
||||||
|
(string :tag "Header"))
|
||||||
(string :format "%v"))))
|
(string :format "%v"))))
|
||||||
"post style.
|
"post style.
|
||||||
See `gnus-posting-styles'."))
|
See `gnus-posting-styles'."))
|
||||||
|
@ -284,14 +284,15 @@ variable."
|
|||||||
:type 'hook)
|
:type 'hook)
|
||||||
|
|
||||||
(defcustom gnus-useful-groups
|
(defcustom gnus-useful-groups
|
||||||
'(("(ding) mailing list mirrored at sunsite.auc.dk"
|
'(("(ding) mailing list mirrored at gmane.org"
|
||||||
"emacs.ding"
|
"gmane.emacs.gnus.general"
|
||||||
(nntp "sunsite.auc.dk"
|
(nntp "Gmane"
|
||||||
(nntp-address "sunsite.auc.dk")))
|
(nntp-address "news.gmane.org")))
|
||||||
("gnus-bug archive"
|
("Gnus bug archive"
|
||||||
"gnus-bug"
|
"gnus.gnus-bug"
|
||||||
(nndir "/ftp@ftp.ifi.uio.no:/pub/emacs/gnus/gnus-bug/"))
|
(nntp "news.gnus.org"
|
||||||
("Gnus help group"
|
(nntp-address "news.gnus.org")))
|
||||||
|
("Local Gnus help group"
|
||||||
"gnus-help"
|
"gnus-help"
|
||||||
(nndoc "gnus-help"
|
(nndoc "gnus-help"
|
||||||
(nndoc-article-type mbox)
|
(nndoc-article-type mbox)
|
||||||
|
@ -844,6 +844,7 @@ header line with the old Message-ID."
|
|||||||
(delete-region (point) (point-max))
|
(delete-region (point) (point-max))
|
||||||
(insert yank-string))
|
(insert yank-string))
|
||||||
(gnus-article-delete-text-of-type 'annotation)
|
(gnus-article-delete-text-of-type 'annotation)
|
||||||
|
(gnus-article-delete-text-of-type 'multipart)
|
||||||
(gnus-remove-text-with-property 'gnus-prev)
|
(gnus-remove-text-with-property 'gnus-prev)
|
||||||
(gnus-remove-text-with-property 'gnus-next)
|
(gnus-remove-text-with-property 'gnus-next)
|
||||||
(gnus-remove-text-with-property 'gnus-decoration)
|
(gnus-remove-text-with-property 'gnus-decoration)
|
||||||
|
@ -2818,6 +2818,7 @@ If FORCE is non-nil, the .newsrc file is read."
|
|||||||
(print-escape-nonascii t)
|
(print-escape-nonascii t)
|
||||||
(print-length nil)
|
(print-length nil)
|
||||||
(print-level nil)
|
(print-level nil)
|
||||||
|
(print-circle nil)
|
||||||
(print-escape-newlines t)
|
(print-escape-newlines t)
|
||||||
(gnus-killed-list
|
(gnus-killed-list
|
||||||
(if (and gnus-save-killed-list
|
(if (and gnus-save-killed-list
|
||||||
|
@ -6114,7 +6114,7 @@ current article will be taken into consideration."
|
|||||||
(let ((max (max (point) (mark)))
|
(let ((max (max (point) (mark)))
|
||||||
articles article)
|
articles article)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char (min (min (point) (mark))))
|
(goto-char (min (point) (mark)))
|
||||||
(while
|
(while
|
||||||
(and
|
(and
|
||||||
(push (setq article (gnus-summary-article-number)) articles)
|
(push (setq article (gnus-summary-article-number)) articles)
|
||||||
|
@ -87,9 +87,14 @@ ARTICLE is the article number of the current headline.")
|
|||||||
(defvar nnrss-compatible-encoding-alist '((iso-8859-1 . windows-1252))
|
(defvar nnrss-compatible-encoding-alist '((iso-8859-1 . windows-1252))
|
||||||
"Alist of encodings and those supersets.
|
"Alist of encodings and those supersets.
|
||||||
The cdr of each element is used to decode data if it is available when
|
The cdr of each element is used to decode data if it is available when
|
||||||
the car is what the data specify as the encoding. Or, the car is used
|
the car is what the data specify as the encoding. Or, the car is used
|
||||||
for decoding when the cdr that the data specify is not available.")
|
for decoding when the cdr that the data specify is not available.")
|
||||||
|
|
||||||
|
(defvar nnrss-wash-html-in-text-plain-parts nil
|
||||||
|
"*Non-nil means render text in text/plain parts as HTML.
|
||||||
|
The function specified by the `mm-text-html-renderer' variable will be
|
||||||
|
used to render text. If it is nil, text will simply be folded.")
|
||||||
|
|
||||||
(nnoo-define-basics nnrss)
|
(nnoo-define-basics nnrss)
|
||||||
|
|
||||||
;;; Interface functions
|
;;; Interface functions
|
||||||
@ -169,6 +174,10 @@ for decoding when the cdr that the data specify is not available.")
|
|||||||
(deffoo nnrss-close-group (group &optional server)
|
(deffoo nnrss-close-group (group &optional server)
|
||||||
t)
|
t)
|
||||||
|
|
||||||
|
(eval-when-compile
|
||||||
|
(defvar mm-text-html-renderer)
|
||||||
|
(defvar mm-text-html-washer-alist))
|
||||||
|
|
||||||
(deffoo nnrss-request-article (article &optional group server buffer)
|
(deffoo nnrss-request-article (article &optional group server buffer)
|
||||||
(setq group (nnrss-decode-group-name group))
|
(setq group (nnrss-decode-group-name group))
|
||||||
(when (stringp article)
|
(when (stringp article)
|
||||||
@ -191,10 +200,7 @@ for decoding when the cdr that the data specify is not available.")
|
|||||||
(if (nth 5 e)
|
(if (nth 5 e)
|
||||||
(insert "Date: " (nnrss-format-string (nth 5 e)) "\n"))
|
(insert "Date: " (nnrss-format-string (nth 5 e)) "\n"))
|
||||||
(let ((header (buffer-string))
|
(let ((header (buffer-string))
|
||||||
(text (if (nth 6 e)
|
(text (nth 6 e))
|
||||||
(mapconcat 'identity
|
|
||||||
(delete "" (split-string (nth 6 e) "\n+"))
|
|
||||||
" ")))
|
|
||||||
(link (nth 2 e))
|
(link (nth 2 e))
|
||||||
(enclosure (nth 7 e))
|
(enclosure (nth 7 e))
|
||||||
(comments (nth 8 e))
|
(comments (nth 8 e))
|
||||||
@ -205,14 +211,55 @@ for decoding when the cdr that the data specify is not available.")
|
|||||||
(cons '("Newsgroups" . utf-8)
|
(cons '("Newsgroups" . utf-8)
|
||||||
rfc2047-header-encoding-alist)
|
rfc2047-header-encoding-alist)
|
||||||
rfc2047-header-encoding-alist))
|
rfc2047-header-encoding-alist))
|
||||||
rfc2047-encode-encoded-words body)
|
rfc2047-encode-encoded-words body fn)
|
||||||
(when (or text link enclosure comments)
|
(when (or text link enclosure comments)
|
||||||
(insert "\n")
|
(insert "\n")
|
||||||
(insert "<#multipart type=alternative>\n"
|
(insert "<#multipart type=alternative>\n"
|
||||||
"<#part type=\"text/plain\">\n")
|
"<#part type=\"text/plain\">\n")
|
||||||
(setq body (point))
|
(setq body (point))
|
||||||
(when text
|
(when text
|
||||||
(insert text "\n")
|
(insert text)
|
||||||
|
(goto-char body)
|
||||||
|
(if (and nnrss-wash-html-in-text-plain-parts
|
||||||
|
(progn
|
||||||
|
(require 'mm-view)
|
||||||
|
(setq fn (or (cdr (assq mm-text-html-renderer
|
||||||
|
mm-text-html-washer-alist))
|
||||||
|
mm-text-html-renderer))))
|
||||||
|
(progn
|
||||||
|
(narrow-to-region body (point-max))
|
||||||
|
(if (functionp fn)
|
||||||
|
(funcall fn)
|
||||||
|
(apply (car fn) (cdr fn)))
|
||||||
|
(widen)
|
||||||
|
(goto-char body)
|
||||||
|
(re-search-forward "[^\t\n ]" nil t)
|
||||||
|
(beginning-of-line)
|
||||||
|
(delete-region body (point))
|
||||||
|
(goto-char (point-max))
|
||||||
|
(skip-chars-backward "\t\n ")
|
||||||
|
(end-of-line)
|
||||||
|
(delete-region (point) (point-max))
|
||||||
|
(insert "\n"))
|
||||||
|
(while (re-search-forward "\n+" nil t)
|
||||||
|
(replace-match " "))
|
||||||
|
(goto-char body)
|
||||||
|
;; See `nnrss-check-group', which inserts "<br /><br />".
|
||||||
|
(when (search-forward "<br /><br />" nil t)
|
||||||
|
(if (eobp)
|
||||||
|
(replace-match "\n")
|
||||||
|
(replace-match "\n\n")))
|
||||||
|
(unless (eobp)
|
||||||
|
(let ((fill-column default-fill-column)
|
||||||
|
(window (get-buffer-window nntp-server-buffer)))
|
||||||
|
(when window
|
||||||
|
(setq fill-column
|
||||||
|
(max 1 (/ (* (window-width window) 7) 8))))
|
||||||
|
(fill-region (point) (point-max))
|
||||||
|
(goto-char (point-max))
|
||||||
|
;; XEmacs version of `fill-region' inserts newline.
|
||||||
|
(unless (bolp)
|
||||||
|
(insert "\n")))))
|
||||||
(when (or link enclosure)
|
(when (or link enclosure)
|
||||||
(insert "\n")))
|
(insert "\n")))
|
||||||
(when link
|
(when link
|
||||||
@ -362,7 +409,11 @@ otherwise return nil."
|
|||||||
;; FIXME: shouldn't binding `coding-system-for-read' be moved
|
;; FIXME: shouldn't binding `coding-system-for-read' be moved
|
||||||
;; to `mm-url-insert'?
|
;; to `mm-url-insert'?
|
||||||
(let ((coding-system-for-read 'binary))
|
(let ((coding-system-for-read 'binary))
|
||||||
(mm-url-insert url)))
|
(condition-case err
|
||||||
|
(mm-url-insert url)
|
||||||
|
(error (if (or debug-on-quit debug-on-error)
|
||||||
|
(signal (car err) (cdr err))
|
||||||
|
(message "nnrss: Failed to fetch %s" url))))))
|
||||||
(nnheader-remove-cr-followed-by-lf)
|
(nnheader-remove-cr-followed-by-lf)
|
||||||
;; Decode text according to the encoding attribute.
|
;; Decode text according to the encoding attribute.
|
||||||
(when (setq cs (nnrss-get-encoding))
|
(when (setq cs (nnrss-get-encoding))
|
||||||
@ -414,6 +465,74 @@ nnrss: %s: Not valid XML %s and w3-parse doesn't work %s"
|
|||||||
(unless (assoc (car elem) nnrss-group-alist)
|
(unless (assoc (car elem) nnrss-group-alist)
|
||||||
(insert (prin1-to-string (car elem)) " 0 1 y\n")))))
|
(insert (prin1-to-string (car elem)) " 0 1 y\n")))))
|
||||||
|
|
||||||
|
(eval-and-compile (autoload 'timezone-parse-date "timezone"))
|
||||||
|
|
||||||
|
(defun nnrss-normalize-date (date)
|
||||||
|
"Return a date string of DATE in the RFC822 style.
|
||||||
|
This function handles the ISO 8601 date format described in
|
||||||
|
<URL:http://www.w3.org/TR/NOTE-datetime>, and also the RFC822 style
|
||||||
|
which RSS 2.0 allows."
|
||||||
|
(let (case-fold-search vector year month day time zone cts)
|
||||||
|
(cond ((null date))
|
||||||
|
;; RFC822
|
||||||
|
((string-match " [0-9]+ " date)
|
||||||
|
(setq vector (timezone-parse-date date)
|
||||||
|
year (string-to-number (aref vector 0)))
|
||||||
|
(when (>= year 1969)
|
||||||
|
(setq month (string-to-number (aref vector 1))
|
||||||
|
day (string-to-number (aref vector 2)))
|
||||||
|
(unless (>= (length (setq time (aref vector 3))) 3)
|
||||||
|
(setq time "00:00:00"))
|
||||||
|
(when (and (setq zone (aref vector 4))
|
||||||
|
(not (string-match "\\`[A-Z+-]" zone)))
|
||||||
|
(setq zone nil))))
|
||||||
|
;; ISO 8601
|
||||||
|
((string-match
|
||||||
|
(eval-when-compile
|
||||||
|
(concat
|
||||||
|
;; 1. year
|
||||||
|
"\\(199[0-9]\\|20[0-9][0-9]\\)"
|
||||||
|
"\\(-"
|
||||||
|
;; 3. month
|
||||||
|
"\\([01][0-9]\\)"
|
||||||
|
"\\(-"
|
||||||
|
;; 5. day
|
||||||
|
"\\([0-3][0-9]\\)"
|
||||||
|
"\\)?\\)?\\(T"
|
||||||
|
;; 7. hh:mm
|
||||||
|
"\\([012][0-9]:[0-5][0-9]\\)"
|
||||||
|
"\\("
|
||||||
|
;; 9. :ss
|
||||||
|
"\\(:[0-5][0-9]\\)"
|
||||||
|
"\\(\\.[0-9]+\\)?\\)?\\)?"
|
||||||
|
;; 13+14,15,16. zone
|
||||||
|
"\\(\\(\\([+-][012][0-9]\\):\\([0-5][0-9]\\)\\)"
|
||||||
|
"\\|\\([+-][012][0-9][0-5][0-9]\\)"
|
||||||
|
"\\|\\(Z\\)\\)?"))
|
||||||
|
date)
|
||||||
|
(setq year (string-to-number (match-string 1 date))
|
||||||
|
month (string-to-number (or (match-string 3 date) "1"))
|
||||||
|
day (string-to-number (or (match-string 5 date) "1"))
|
||||||
|
time (if (match-beginning 9)
|
||||||
|
(substring date (match-beginning 7) (match-end 9))
|
||||||
|
(concat (or (match-string 7 date) "00:00") ":00"))
|
||||||
|
zone (cond ((match-beginning 13)
|
||||||
|
(concat (match-string 13 date)
|
||||||
|
(match-string 14 date)))
|
||||||
|
((match-beginning 16) ;; Z
|
||||||
|
"+0000")
|
||||||
|
(t ;; nil if zone is not provided.
|
||||||
|
(match-string 15 date))))))
|
||||||
|
(if month
|
||||||
|
(progn
|
||||||
|
(setq cts (current-time-string (encode-time 0 0 0 day month year)))
|
||||||
|
(format "%s, %02d %s %04d %s%s"
|
||||||
|
(substring cts 0 3) day (substring cts 4 7) year time
|
||||||
|
(if zone
|
||||||
|
(concat " " zone)
|
||||||
|
"")))
|
||||||
|
(message-make-date))))
|
||||||
|
|
||||||
;;; data functions
|
;;; data functions
|
||||||
|
|
||||||
(defun nnrss-read-server-data (server)
|
(defun nnrss-read-server-data (server)
|
||||||
@ -497,7 +616,11 @@ nnrss: %s: Not valid XML %s and w3-parse doesn't work %s"
|
|||||||
|
|
||||||
(defun nnrss-insert-w3 (url)
|
(defun nnrss-insert-w3 (url)
|
||||||
(mm-with-unibyte-current-buffer
|
(mm-with-unibyte-current-buffer
|
||||||
(mm-url-insert url)))
|
(condition-case err
|
||||||
|
(mm-url-insert url)
|
||||||
|
(error (if (or debug-on-quit debug-on-error)
|
||||||
|
(signal (car err) (cdr err))
|
||||||
|
(message "nnrss: Failed to fetch %s" url))))))
|
||||||
|
|
||||||
(defun nnrss-decode-entities-string (string)
|
(defun nnrss-decode-entities-string (string)
|
||||||
(if string
|
(if string
|
||||||
@ -532,7 +655,7 @@ nnrss: %s: Not valid XML %s and w3-parse doesn't work %s"
|
|||||||
;;; Snarf functions
|
;;; Snarf functions
|
||||||
|
|
||||||
(defun nnrss-check-group (group server)
|
(defun nnrss-check-group (group server)
|
||||||
(let (file xml subject url extra changed author date
|
(let (file xml subject url extra changed author date feed-subject
|
||||||
enclosure comments rss-ns rdf-ns content-ns dc-ns)
|
enclosure comments rss-ns rdf-ns content-ns dc-ns)
|
||||||
(if (and nnrss-use-local
|
(if (and nnrss-use-local
|
||||||
(file-exists-p (setq file (expand-file-name
|
(file-exists-p (setq file (expand-file-name
|
||||||
@ -575,12 +698,14 @@ nnrss: %s: Not valid XML %s and w3-parse doesn't work %s"
|
|||||||
(setq extra (or extra
|
(setq extra (or extra
|
||||||
(nnrss-node-text content-ns 'encoded item)
|
(nnrss-node-text content-ns 'encoded item)
|
||||||
(nnrss-node-text rss-ns 'description item)))
|
(nnrss-node-text rss-ns 'description item)))
|
||||||
|
(if (setq feed-subject (nnrss-node-text dc-ns 'subject item))
|
||||||
|
(setq extra (concat feed-subject "<br /><br />" extra)))
|
||||||
(setq author (or (nnrss-node-text rss-ns 'author item)
|
(setq author (or (nnrss-node-text rss-ns 'author item)
|
||||||
(nnrss-node-text dc-ns 'creator item)
|
(nnrss-node-text dc-ns 'creator item)
|
||||||
(nnrss-node-text dc-ns 'contributor item)))
|
(nnrss-node-text dc-ns 'contributor item)))
|
||||||
(setq date (or (nnrss-node-text dc-ns 'date item)
|
(setq date (nnrss-normalize-date
|
||||||
(nnrss-node-text rss-ns 'pubDate item)
|
(or (nnrss-node-text dc-ns 'date item)
|
||||||
(message-make-date)))
|
(nnrss-node-text rss-ns 'pubDate item))))
|
||||||
(setq comments (nnrss-node-text rss-ns 'comments item))
|
(setq comments (nnrss-node-text rss-ns 'comments item))
|
||||||
(when (setq enclosure (cadr (assq (intern (concat rss-ns "enclosure")) item)))
|
(when (setq enclosure (cadr (assq (intern (concat rss-ns "enclosure")) item)))
|
||||||
(let ((url (cdr (assq 'url enclosure)))
|
(let ((url (cdr (assq 'url enclosure)))
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
2006-01-10 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||||
|
|
||||||
|
* gnus.texi (RSS): Document nnrss-wash-html-in-text-plain-parts.
|
||||||
|
|
||||||
|
2006-01-06 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||||
|
|
||||||
|
* gnus.texi (RSS): Addition.
|
||||||
|
|
||||||
|
2005-12-22 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||||
|
|
||||||
|
* gnus.texi (Summary Post Commands): Fix function bound to `S O p'.
|
||||||
|
|
||||||
|
2005-12-19 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||||
|
|
||||||
|
* emacs-mime.texi (Display Customization): Add setting example to
|
||||||
|
mm-discouraged-alternatives.
|
||||||
|
|
||||||
2006-01-09 Stefan Monnier <monnier@iro.umontreal.ca>
|
2006-01-09 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||||
|
|
||||||
* flymake.texi (Obtaining Flymake): Remove chapter since Emacs's
|
* flymake.texi (Obtaining Flymake): Remove chapter since Emacs's
|
||||||
|
@ -323,10 +323,28 @@ you could say something like:
|
|||||||
@end lisp
|
@end lisp
|
||||||
|
|
||||||
Adding @code{"image/.*"} might also be useful. Spammers use it as the
|
Adding @code{"image/.*"} might also be useful. Spammers use it as the
|
||||||
prefered part of @samp{multipart/alternative} messages. See also
|
prefered part of @samp{multipart/alternative} messages, and you might
|
||||||
|
not notice there are other parts. See also
|
||||||
@code{gnus-buttonized-mime-types} (@pxref{MIME Commands, ,MIME Commands,
|
@code{gnus-buttonized-mime-types} (@pxref{MIME Commands, ,MIME Commands,
|
||||||
gnus, Gnus Manual}), to which adding @code{"multipart/alternative"}
|
gnus, Gnus Manual}), to which adding @code{"multipart/alternative"}
|
||||||
enables you to choose manually one of two types those mails include.
|
enables you to choose manually one of two types those mails include.
|
||||||
|
For example, you can set those variables like:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(setq gnus-buttonized-mime-types
|
||||||
|
'("multipart/alternative" "multipart/signed")
|
||||||
|
mm-discouraged-alternatives
|
||||||
|
'("text/html" "image/.*"))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
In this case, Gnus will display radio buttons for such a kind of spam
|
||||||
|
message as follows:
|
||||||
|
|
||||||
|
@example
|
||||||
|
1. (*) multipart/alternative ( ) image/gif
|
||||||
|
|
||||||
|
2. (*) text/plain ( ) text/html
|
||||||
|
@end example
|
||||||
|
|
||||||
@item mm-inline-large-images
|
@item mm-inline-large-images
|
||||||
@vindex mm-inline-large-images
|
@vindex mm-inline-large-images
|
||||||
|
@ -5491,7 +5491,7 @@ default, the message is decoded and forwarded as an rfc822 @acronym{MIME} sectio
|
|||||||
@cindex digests
|
@cindex digests
|
||||||
@cindex making digests
|
@cindex making digests
|
||||||
Digest the current series and forward the result to a newsgroup
|
Digest the current series and forward the result to a newsgroup
|
||||||
(@code{gnus-uu-digest-mail-forward}). This command uses the
|
(@code{gnus-uu-digest-post-forward}). This command uses the
|
||||||
process/prefix convention.
|
process/prefix convention.
|
||||||
|
|
||||||
@item S u
|
@item S u
|
||||||
@ -15886,6 +15886,10 @@ the value of @code{default-file-name-coding-system}. If you are using
|
|||||||
XEmacs and want to use non-@acronym{ASCII} group names, you should set
|
XEmacs and want to use non-@acronym{ASCII} group names, you should set
|
||||||
the value for the @code{nnmail-pathname-coding-system} variable properly.
|
the value for the @code{nnmail-pathname-coding-system} variable properly.
|
||||||
|
|
||||||
|
The @code{nnrss} back end generates @samp{multipart/alternative}
|
||||||
|
@acronym{MIME} articles in which each contains a @samp{text/plain} part
|
||||||
|
and a @samp{text/html} part.
|
||||||
|
|
||||||
@cindex OPML
|
@cindex OPML
|
||||||
You can also use the following commands to import and export your
|
You can also use the following commands to import and export your
|
||||||
subscriptions from a file in @acronym{OPML} format (Outline Processor
|
subscriptions from a file in @acronym{OPML} format (Outline Processor
|
||||||
@ -15923,6 +15927,15 @@ If you set @code{nnrss-use-local} to @code{t}, @code{nnrss} will read
|
|||||||
the feeds from local files in @code{nnrss-directory}. You can use
|
the feeds from local files in @code{nnrss-directory}. You can use
|
||||||
the command @code{nnrss-generate-download-script} to generate a
|
the command @code{nnrss-generate-download-script} to generate a
|
||||||
download script using @command{wget}.
|
download script using @command{wget}.
|
||||||
|
|
||||||
|
@item nnrss-wash-html-in-text-plain-parts
|
||||||
|
Non-@code{nil} means that @code{nnrss} renders text in @samp{text/plain}
|
||||||
|
parts as @acronym{HTML}. The function specified by the
|
||||||
|
@code{mm-text-html-renderer} variable (@pxref{Display Customization,
|
||||||
|
,Display Customization, emacs-mime, The Emacs MIME Manual}) will be used
|
||||||
|
to render text. If it is @code{nil}, which is the default, text will
|
||||||
|
simply be folded. Leave it @code{nil} if you prefer to see
|
||||||
|
@samp{text/html} parts.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
The following code may be helpful, if you want to show the description in
|
The following code may be helpful, if you want to show the description in
|
||||||
@ -15940,6 +15953,7 @@ the summary buffer.
|
|||||||
|
|
||||||
The following code may be useful to open an nnrss url directly from the
|
The following code may be useful to open an nnrss url directly from the
|
||||||
summary buffer.
|
summary buffer.
|
||||||
|
|
||||||
@lisp
|
@lisp
|
||||||
(require 'browse-url)
|
(require 'browse-url)
|
||||||
|
|
||||||
@ -15962,6 +15976,31 @@ summary buffer.
|
|||||||
(add-to-list 'nnmail-extra-headers nnrss-url-field)
|
(add-to-list 'nnmail-extra-headers nnrss-url-field)
|
||||||
@end lisp
|
@end lisp
|
||||||
|
|
||||||
|
Even if you have added @code{"text/html"} to the
|
||||||
|
@code{mm-discouraged-alternatives} variable (@pxref{Display
|
||||||
|
Customization, ,Display Customization, emacs-mime, The Emacs MIME
|
||||||
|
Manual}) since you don't want to see @acronym{HTML} parts, it might be
|
||||||
|
more useful especially in @code{nnrss} groups to display
|
||||||
|
@samp{text/html} parts. Here's an example of setting
|
||||||
|
@code{mm-discouraged-alternatives} as a group parameter (@pxref{Group
|
||||||
|
Parameters}) in order to display @samp{text/html} parts only in
|
||||||
|
@code{nnrss} groups:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
;; @r{Set the default value of @code{mm-discouraged-alternatives}.}
|
||||||
|
(eval-after-load "gnus-sum"
|
||||||
|
'(add-to-list
|
||||||
|
'gnus-newsgroup-variables
|
||||||
|
'(mm-discouraged-alternatives
|
||||||
|
. '("text/html" "image/.*"))))
|
||||||
|
|
||||||
|
;; @r{Display @samp{text/html} parts in @code{nnrss} groups.}
|
||||||
|
(add-to-list
|
||||||
|
'gnus-parameters
|
||||||
|
'("\\`nnrss:" (mm-discouraged-alternatives nil)))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
|
||||||
@node Customizing W3
|
@node Customizing W3
|
||||||
@subsection Customizing W3
|
@subsection Customizing W3
|
||||||
@cindex W3
|
@cindex W3
|
||||||
|
Loading…
Reference in New Issue
Block a user