X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fmml.el;h=aff31e0930d5cd82ad161ca791dfdb86345f9057;hb=b9aa74f2212ac600bd6d7587faae0a83dda7f239;hp=6c0f60077560bfd1ca0deba2bfeb3b6f9df42657;hpb=b9c2fd25abbc420e25a458a516ae7b53726ef701;p=gnus diff --git a/lisp/mml.el b/lisp/mml.el index 6c0f60077..aff31e093 100644 --- a/lisp/mml.el +++ b/lisp/mml.el @@ -35,8 +35,8 @@ (autoload 'message-make-message-id "message") (autoload 'gnus-setup-posting-charset "gnus-msg") (autoload 'gnus-add-minor-mode "gnus-ems") + (autoload 'gnus-make-local-hook "gnus-util") (autoload 'message-fetch-field "message") - (autoload 'fill-flowed-encode "flow-fill") (autoload 'message-posting-charset "message")) (defcustom mml-content-type-parameters @@ -53,6 +53,12 @@ These parameters are generated in Content-Disposition header if exists." :type '(repeat (symbol :tag "Parameter")) :group 'message) +(defcustom mml-insert-mime-headers-always nil + "If non-nil, always put Content-Type: text/plain at top of empty parts. +It is necessary to work against a bug in certain clients." + :type 'boolean + :group 'message) + (defvar mml-tweak-type-alist nil "A list of (TYPE . FUNCTION) for tweaking MML parts. TYPE is a string containing a regexp to match the MIME type. FUNCTION @@ -69,7 +75,7 @@ handle to tweak the part.") (defvar mml-tweak-sexp-alist '((mml-externalize-attachments . mml-tweak-externalize-attachments)) "A list of (SEXP . FUNCTION) for tweaking MML parts. -SEXP is a s-expression. If the evaluation of SEXP is non-nil, FUNCTION +SEXP is an s-expression. If the evaluation of SEXP is non-nil, FUNCTION is called. FUNCTION is a Lisp function which is called with the MML handle to tweak the part.") @@ -209,12 +215,12 @@ one charsets.") (if (or (memq 'unknown-encoding mml-confirmation-set) (message-options-get 'unknown-encoding) (and (y-or-n-p "\ -Message contains characters with unknown encoding. Really send?") +Message contains characters with unknown encoding. Really send? ") (message-options-set 'unknown-encoding t))) (if (setq use-ascii (or (memq 'use-ascii mml-confirmation-set) (message-options-get 'use-ascii) - (and (y-or-n-p "Use ASCII as charset?") + (and (y-or-n-p "Use ASCII as charset? ") (message-options-set 'use-ascii t)))) (setq charsets (delq nil charsets)) (setq warn nil)) @@ -540,8 +546,9 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." mml-encrypt-alist)) sender recipients) (when (or sign-item encrypt-item) - (if (setq sender (cdr (assq 'sender cont))) - (message-options-set 'message-sender sender)) + (when (setq sender (cdr (assq 'sender cont))) + (message-options-set 'mml-sender sender) + (message-options-set 'message-sender sender)) (if (setq recipients (cdr (assq 'recipients cont))) (message-options-set 'message-recipients recipients)) (let ((style (mml-signencrypt-style (first (or sign-item encrypt-item))))) @@ -606,10 +613,11 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." (when (or charset parameters flowed - (not (equal type mml-generate-default-type))) + (not (equal type mml-generate-default-type)) + mml-insert-mime-headers-always) (when (consp charset) (error - "Can't encode a part with several charsets.")) + "Can't encode a part with several charsets")) (insert "Content-Type: " type) (when charset (insert "; " (mail-header-encode-parameter @@ -746,10 +754,12 @@ If HANDLES is non-nil, use it instead reparsing the buffer." (insert "<#/multipart>\n")) (textp (let ((charset (mail-content-type-get - (mm-handle-type handle) 'charset))) + (mm-handle-type handle) 'charset)) + (start (point))) (if (eq charset 'gnus-decoded) (mm-insert-part handle) - (insert (mm-decode-string (mm-get-part handle) charset)))) + (insert (mm-decode-string (mm-get-part handle) charset))) + (mml-quote-region start (point))) (goto-char (point-max))) (t (insert "<#/part>\n"))))) @@ -1070,12 +1080,21 @@ If RAW, don't highlight the article." (gnus-article-prepare-display)))) ;; Disable article-mode-map. (use-local-map nil) - (make-local-hook 'kill-buffer-hook) + (gnus-make-local-hook 'kill-buffer-hook) (add-hook 'kill-buffer-hook (lambda () (mm-destroy-parts gnus-article-mime-handles)) nil t) (setq buffer-read-only t) (local-set-key "q" (lambda () (interactive) (kill-buffer nil))) + (local-set-key "=" (lambda () (interactive) (delete-other-windows))) + (local-set-key "\r" + (lambda () + (interactive) + (widget-button-press (point)))) + (local-set-key gnus-mouse-2 + (lambda (event) + (interactive "@e") + (widget-button-press (widget-event-point event) event))) (goto-char (point-min))))) (defun mml-validate ()