+2005-09-27 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * mm-uu.el (mm-uu-emacs-sources-regexp): Make variable
+ customizable. Change default value.
+ (mm-uu-diff-groups-regexp): Change default value.
+ (mm-uu-type-alist): Added doc string.
+ (mm-uu-configure): Added doc string. Make it interactive.
+ (mm-uu-diff-groups-regexp): Fix missing quotes from previous
+ commit.
+
+2005-09-27 Simon Josefsson <jas@extundo.com>
+
+ * message.el (message-idna-to-ascii-rhs-1): Reformat.
+
+2005-09-27 Arne J\e,Ax\e(Brgensen <arne@arnested.dk>
+
+ * message.el (message-remove-duplicates): New function.
+ Implementation borrowed from `gnus-remove-duplicates'.
+ (message-idna-to-ascii-rhs): Also encode idna addresses in
+ Reply-To:, Mail-Reply-To: and Mail-Followup-To:.
+ (message-idna-to-ascii-rhs-1): When `message-use-idna' is 'ask
+ only ask about the same idna domain once per header and also tell
+ in what header to replace the idna domain.
+
+ * gnus-art.el (article-decode-idna-rhs): Also decode idna
+ addresses in Reply-To:, Mail-Reply-To: and Mail-Followup-To:.
+ (article-decode-idna-rhs): Fix regexp so that all idna-address in
+ a header is decoded and not just the last one.
+
+2005-09-27 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-art.el (gnus-mime-display-single): Don't modify text if it
+ has been decoded.
+
+ * mm-decode.el (mm-insert-part): Don't modify text if it has been
+ decoded.
+
+ * mm-view.el (mm-inline-text): Don't strip text props unless
+ decoding enriched or richtext parts.
+
2005-09-25 Romain Francoise <romain@orebokech.com>
* gnus-agent.el (gnus-agent-expire-group, gnus-agent-expire):
(autoload 'idna-to-unicode "idna")
(defun article-decode-idna-rhs ()
- "Decode IDNA strings in RHS in From:, To: and Cc: headers in current buffer."
+ "Decode IDNA strings in RHS in various headers in current buffer.
+The following headers are decoded: From:, To:, Cc:, Reply-To:,
+Mail-Reply-To: and Mail-Followup-To:."
(when gnus-use-idna
(save-restriction
(let ((inhibit-point-motion-hooks t)
(inhibit-read-only t))
(article-narrow-to-head)
(goto-char (point-min))
- (while (re-search-forward "@.*\\(xn--[-A-Za-z0-9.]*\\)[ \t\n\r,>]" nil t)
+ (while (re-search-forward "@[^ \t\n\r,>]*\\(xn--[-A-Za-z0-9.]*\\)[ \t\n\r,>]" nil t)
(let (ace unicode)
(when (save-match-data
(and (setq ace (match-string 1))
(save-excursion
(and (re-search-backward "^[^ \t]" nil t)
- (looking-at "From\\|To\\|Cc")))
+ (looking-at "From\\|To\\|Cc\\|Reply-To\\|Mail-Reply-To\\|Mail-Followup-To")))
(setq unicode (idna-to-unicode ace))))
(unless (string= ace unicode)
(replace-match unicode nil nil nil 1)))))))))
(forward-line -1)
(setq beg (point)))
(gnus-article-insert-newline)
- (mm-insert-inline handle
- (let ((charset
- (mail-content-type-get
- (mm-handle-type handle) 'charset)))
- (if (eq charset 'gnus-decoded)
- (mm-get-part handle)
- (mm-decode-string (mm-get-part handle)
- charset))))
+ (mm-insert-inline
+ handle
+ (let ((charset (mail-content-type-get (mm-handle-type handle)
+ 'charset)))
+ (cond ((not charset)
+ (mm-string-as-multibyte (mm-get-part handle)))
+ ((eq charset 'gnus-decoded)
+ (with-current-buffer (mm-handle-buffer handle)
+ (buffer-string)))
+ (t
+ (mm-decode-string (mm-get-part handle) charset)))))
(goto-char (point-max))))
;; Do highlighting.
(save-excursion
;;; End of functions adopted from `message-utils.el'.
+(defun message-remove-duplicates (list)
+ (let (new)
+ (while list
+ (or (member (car list) new)
+ (setq new (cons (car list) new)))
+ (setq list (cdr list)))
+ (nreverse new)))
+
(defun message-remove-header (header &optional is-regexp first reverse)
"Remove HEADER in the narrowed buffer.
If IS-REGEXP, HEADER is a regular expression.
(let ((field (message-fetch-field header))
rhs ace address)
(when field
- (dolist (address (mail-header-parse-addresses field))
- (setq address (car address)
- rhs (downcase (or (cadr (split-string address "@")) ""))
- ace (downcase (idna-to-ascii rhs)))
+ (dolist (rhs
+ (message-remove-duplicates
+ (mapcar (lambda (rhs) (or (cadr (split-string rhs "@")) ""))
+ (mapcar 'downcase
+ (mapcar
+ 'car (mail-header-parse-addresses field))))))
+ (setq ace (downcase (idna-to-ascii rhs)))
(when (and (not (equal rhs ace))
(or (not (eq message-use-idna 'ask))
- (y-or-n-p (format "Replace %s with %s? " rhs ace))))
+ (y-or-n-p (format "Replace %s with %s in %s:? "
+ rhs ace header))))
(goto-char (point-min))
(while (re-search-forward (concat "^" header ":") nil t)
(message-narrow-to-field)
(message-narrow-to-head)
(message-idna-to-ascii-rhs-1 "From")
(message-idna-to-ascii-rhs-1 "To")
+ (message-idna-to-ascii-rhs-1 "Reply-To")
+ (message-idna-to-ascii-rhs-1 "Mail-Reply-To")
+ (message-idna-to-ascii-rhs-1 "Mail-Followup-To")
(message-idna-to-ascii-rhs-1 "Cc")))))
(defun message-generate-headers (headers)
(defun mm-insert-part (handle)
"Insert the contents of HANDLE in the current buffer."
(save-excursion
- (insert (if (mm-multibyte-p)
- (mm-string-as-multibyte (mm-get-part handle))
- (mm-get-part handle)))))
+ (insert
+ (cond ((eq (mail-content-type-get (mm-handle-type handle) 'charset)
+ 'gnus-decoded)
+ (with-current-buffer (mm-handle-buffer handle)
+ (buffer-string)))
+ ((mm-multibyte-p)
+ (mm-string-as-multibyte (mm-get-part handle)))
+ (t
+ (mm-get-part handle))))))
(defun mm-file-name-delete-whitespace (file-name)
"Remove all whitespace characters from FILE-NAME."
"The default disposition of uu parts.
This can be either \"inline\" or \"attachment\".")
-(defvar mm-uu-emacs-sources-regexp "gnu\\.emacs\\.sources"
- "The regexp of Emacs sources groups.")
+(defcustom mm-uu-emacs-sources-regexp "\\.emacs\\.sources"
+ "The regexp of Emacs sources groups."
+ :version "22.1"
+ :type 'regexp
+ :group 'gnus-article-mime)
-(defcustom mm-uu-diff-groups-regexp "gnus\\.commits"
- "*Regexp matching diff groups."
+(defcustom mm-uu-diff-groups-regexp
+ "\\(gmane\\|gnu\\)\\..*\\(diff\\|commit\\|cvs\\|bug\\|devel\\)"
+ "Regexp matching diff groups."
:version "22.1"
:type 'regexp
:group 'gnus-article-mime)
nil
mm-uu-diff-extract
nil
- mm-uu-diff-test)))
+ mm-uu-diff-test))
+ "A list of specifications for non-MIME attachments.
+Each element consist of the following entries: label,
+start-regexp, end-regexp, extract-function, test-function.
+
+After modifying this list you must run \\[mm-uu-configure].")
(defcustom mm-uu-configure-list '((shar . disabled))
"A list of mm-uu configuration.
(member (cons key val) mm-uu-configure-list))
(defun mm-uu-configure (&optional symbol value)
+ "Configure detection of non-MIME attachments."
+ (interactive)
(if symbol (set-default symbol value))
(setq mm-uu-beginning-regexp nil)
(mapcar (lambda (entry)
(goto-char (point-max))))
(save-restriction
(narrow-to-region b (point))
- (set-text-properties (point-min) (point-max) nil)
(when (or (equal type "enriched")
(equal type "richtext"))
+ (set-text-properties (point-min) (point-max) nil)
(ignore-errors
(enriched-decode (point-min) (point-max))))
(mm-handle-set-undisplayer
+2005-09-26 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus.texi (Server Buffer Format): Document the %a format spec.
+
2005-09-25 Richard M. Stallman <rms@gnu.org>
* search.texi (Regexp Search): Doc search-whitespace-regexp.
@item s
The opened/closed/denied status of the server.
+
+@item a
+Whether this server is agentized.
@end table
@vindex gnus-server-mode-line-format