+2001-06-08 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * lisp/lpath.el: Fbind `xml-node-children' for XEmacsen and old FSF
+ Emacsen.
+
2001-06-07 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/nnshimbun.el (nnshimbun-request-expire-articles): Prefer the
;; @(#) xml.el --- XML parser
-;; Copyright (C) 2000 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001 Free Software Foundation, Inc.
;; Author: Emmanuel Briot <briot@gnat.com>
;; Maintainer: Emmanuel Briot <briot@gnat.com>
;; This was an invalid start tag
(error "XML: Invalid attribute list")
))))
+ (t ;; This is not a tag.
+ (error "XML: Invalid character."))
))
(defun xml-parse-attlist (end)
+2001-06-03 Dale Hagglund <rdh@best.com>
+
+ * gnus-mlspl.el (gnus-group-split-fancy): Fix generation of split
+ restrict clauses.
+
+2001-06-07 16:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ From Benjamin Rutt <brutt+news@bloomington.in.us>
+
+ * message.el (message-wide-reply-confirm-recipients): New variable.
+
+2001-06-06 Mark Thomas <mthomas@edrc.cmu.edu>
+
+ * nnmail.el (nnmail-fix-eudora-headers): Change the In-Reply-To
+ fix so it works with XEmacs.
+
+2001-06-07 16:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * nnrss.el (nnrss-retrieve-headers): Support description as extra
+ headers.
+
+2001-06-07 15:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * nnrss.el: Fix a few bugs.
+
2001-06-05 Simon Josefsson <jas@extundo.com>
* mm-decode.el (mm-handle-set-external-undisplayer): Don't
(list 'any split-regexp)
;; Generate RESTRICTs for SPLIT-EXCLUDEs.
(if (listp split-exclude)
- (let ((seq split-exclude)
- res)
- (while seq
- (push (cons '- (pop seq))
- res))
- (apply #'nconc (nreverse res)))
+ (apply #'append
+ (mapcar (lambda (arg) (list '- arg))
+ split-exclude))
(list '- split-exclude))
(list group-clean))
split)
(let ((functions-variables
(cond
((featurep 'xemacs)
- '((propertize xml-parse-region)))
+ '((propertize xml-node-children xml-parse-region)))
((>= emacs-major-version 21)
'((function-max-args smiley-encode-buffer)))
((boundp 'MULE)
coding-system-get compose-mail file-name-extension
find-coding-systems-region function-max-args get-charset-property
propertize shell-command-to-string smiley-encode-buffer
- xml-parse-region)))
+ xml-node-children xml-parse-region)))
(t
'((function-max-args
- propertize smiley-encode-buffer xml-parse-region))))))
+ propertize smiley-encode-buffer
+ xml-node-children xml-parse-region))))))
(maybe-fbind (car functions-variables))
(maybe-bind (car (cdr functions-variables))))
:version "21.1"
:group 'message)
+(defcustom message-wide-reply-confirm-recipients nil
+ "Whether to confirm a wide reply to multiple email recipients.
+If this variable is nil, don't ask whether to reply to all recipients.
+If this variable is non-nil, pose the question \"Reply to all
+recipients?\" before a wide reply to multiple recipients. If the user
+answers yes, reply to all recipients as usual. If the user answers
+no, only reply back to the author."
+ :group 'message-headers
+ :type 'boolean)
+
;;; Internal variables.
(defvar message-sending-message "Sending...")
(lambda (addr) (cdr addr)) ccalist ", "))))
(when (string-match "^ +" (cdr ccs))
(setcdr ccs (substring (cdr ccs) (match-end 0))))
- (push ccs follow-to)))))
+ (push ccs follow-to)))
+ ;; Allow the user to be asked whether or not to reply to all
+ ;; recipients in a wide reply.
+ (if (and ccalist wide message-wide-reply-confirm-recipients
+ (not (y-or-n-p "Reply to all recipients?")))
+ (setq follow-to (delq (assoc 'Cc follow-to) follow-to)))))
follow-to))
;;;###autoload
(beginning-of-line)
(insert "X-Gnus-Broken-Eudora-"))
(goto-char (point-min))
- (when (re-search-forward "^In-Reply-To:[^\n]+\\(\n[ \t]+\\)" nil t)
- (replace-match "" t t nil 1))))
+ (when (re-search-forward "^\\(In-Reply-To:[^\n]+\\)\n[ \t]+" nil t)
+ (replace-match "\\1" t))))
(custom-add-option 'nnmail-prepare-incoming-header-hook
'nnmail-fix-eudora-headers)
(defvar nnrss-use-local nil)
+(defvar nnrss-description-field 'X-Gnus-Description
+ "Field name used for DESCRIPTION.
+To use the description in headers, put this name into `nnmail-extra-headers'.")
+
(nnoo-define-basics nnrss)
;;; Interface functions
(if (setq e (assq article nnrss-group-data))
(insert (number-to-string (car e)) "\t" ;; number
(if (nth 3 e)
- (nnrss-string-as-multibyte (nth 3 e)) "")
+ (nnrss-format-string (nth 3 e)) "")
"\t" ;; subject
(if (nth 4 e)
- (nnrss-string-as-multibyte (nth 4 e)) "")
+ (nnrss-format-string (nth 4 e))
+ "(nobody)")
"\t" ;;from
(or (nth 5 e) "")
"\t" ;; date
"\t" ;; refs
"0" "\t" ;; chars
"0" "\t" ;; lines
+ "" "\t" ;; Xref
+ (if (memq nnrss-description-field nnmail-extra-headers)
+ (concat (symbol-name nnrss-description-field)
+ ": "
+ (nnrss-format-string (nth 6 e)) "\t")
+ "")
"\n")))))
'nov)
(erase-buffer)
(goto-char (point-min))
(if (nth 3 e)
- (insert "Subject: " (nnrss-string-as-multibyte (nth 3 e)) "\n"))
+ (insert "Subject: " (nnrss-format-string (nth 3 e)) "\n"))
(if (nth 4 e)
- (insert "From: " (nnrss-string-as-multibyte (nth 4 e)) "\n"))
+ (insert "From: " (nnrss-format-string (nth 4 e)) "\n"))
(if (nth 5 e)
- (insert "Date: " (nnrss-string-as-multibyte (nth 5 e)) "\n"))
+ (insert "Date: " (nnrss-format-string (nth 5 e)) "\n"))
(insert "Message-ID: " (format "<%d@%s.nnrss>" (car e) group) "\n")
(insert "\n")
(if (nth 6 e)
(dolist (item (nreverse xml))
(when (and (listp item)
(eq 'item (car item))
- (setq url (caddr (assq 'link (cddr item))))
+ (setq url (nnrss-node-text (assq 'link (cddr item))))
(setq url (nnrss-decode-entities-unibyte-string url))
(not (gnus-gethash url nnrss-group-hashtb)))
- (setq subject (caddr (assq 'title (cddr item))))
- (setq extra (or (caddr (assq 'description (cddr item)))
- (caddr (assq 'dc:description (cddr item)))))
- (setq author (caddr (assq 'dc:creator (cddr item))))
- (setq date (or (caddr (assq 'dc:date (cddr item)))
+ (setq subject (nnrss-node-text (assq 'title (cddr item))))
+ (setq extra (or (nnrss-node-text (assq 'description (cddr item)))
+ (nnrss-node-text (assq 'dc:description (cddr item)))))
+ (setq author (nnrss-node-text (assq 'dc:creator (cddr item))))
+ (setq date (or (nnrss-node-text (assq 'dc:date (cddr item)))
(message-make-date)))
(push
(list
(if changed
(nnrss-save-server-data ""))))
+(defun nnrss-format-string (string)
+ (nnweb-replace-in-string (nnrss-string-as-multibyte string) " *\n *" " "))
+
+(defun nnrss-node-text (node)
+ (if (stringp node) node
+ (mapconcat 'nnrss-node-text (xml-node-children node) "")))
+
(provide 'nnrss)
;;; nnrss.el ends here
+2001-06-07 16:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus.texi (RSS): Add.
+
2001-05-31 13:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
* gnus.texi (Setting Marks): Add.
\e$B$O\e(B @samp{~/News/rss/} \e$B$G$9!#\e(B
@end table
+\e$B35N,%P%C%U%!$K@bL@$rI=<($5$;$?$$$J$i$P!"0J2<$N%3!<%I$,Lr$KN)$D$G$7$g$&!#\e(B
+
+@lisp
+(add-to-list 'nnmail-extra-headers nnrss-description-field)
+(setq gnus-summary-line-format "%U%R%z%I%(%[%4L: %-15,15f%]%) %s%uX\n")
+
+(defun gnus-user-format-function-X (header)
+ (let ((descr
+ (assq nnrss-description-field (mail-header-extra header))))
+ (if descr (concat "\n\t" (cdr descr)) "")))
+@end lisp
+
@node Customizing w3
@subsection w3 \e$B$N%+%9%?%^%$%:\e(B
@cindex w3
@end table
+The following code may be helpful, if you want to show the description in
+the summary buffer.
+
+@lisp
+(add-to-list 'nnmail-extra-headers nnrss-description-field)
+(setq gnus-summary-line-format "%U%R%z%I%(%[%4L: %-15,15f%]%) %s%uX\n")
+
+(defun gnus-user-format-function-X (header)
+ (let ((descr
+ (assq nnrss-description-field (mail-header-extra header))))
+ (if descr (concat "\n\t" (cdr descr)) "")))
+@end lisp
+
@node Customizing w3
@subsection Customizing w3
@cindex w3