X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mime-edit.el;h=26938e93f7e347af89afed1837876efb6db81a9a;hb=5603c1513cb7f899895c1b61d4f5582ea6919753;hp=1bd2e3dd88d2a8c2a6ed8561894840f724cdd482;hpb=e2a174dfc97cf3588e6c8e9735fad472d83f6999;p=elisp%2Fsemi.git diff --git a/mime-edit.el b/mime-edit.el index 1bd2e3d..26938e9 100644 --- a/mime-edit.el +++ b/mime-edit.el @@ -1,6 +1,7 @@ ;;; mime-edit.el --- Simple MIME Composer for GNU Emacs -;; Copyright (C) 1993,94,95,96,97,98,99,2000 Free Software Foundation, Inc. +;; Copyright (C) 1993,94,95,96,97,98,99,2000,01,02,03 +;; Free Software Foundation, Inc. ;; Author: UMEDA Masanobu ;; MORIOKA Tomohiko @@ -23,8 +24,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -235,6 +236,9 @@ To insert a signature file automatically, call the function ("application" ("octet-stream" ("type" "" "tar" "shar")) ("postscript") + ("pdf") + ("msword") + ("vnd.ms-excel") ("vnd.ms-powerpoint") ("x-kiss" ("x-cnf"))) ("image" @@ -320,6 +324,11 @@ To insert a signature file automatically, call the function "base64" "attachment" (("filename" . file)) ) + ("\\.xls$" ; MS Excel + "application" "vnd.ms-excel" nil + "base64" + "attachment" (("filename" . file)) + ) ("\\.ppt$" ; MS Power Point "application" "vnd.ms-powerpoint" nil "base64" @@ -333,7 +342,12 @@ To insert a signature file automatically, call the function ) ("\\.ps$" "application" "postscript" nil - "quoted-printable" + "base64" + "attachment" (("filename" . file)) + ) + ("\\.pdf$" + "application" "pdf" nil + "base64" "attachment" (("filename" . file)) ) @@ -497,6 +511,8 @@ If encoding is nil, it is determined from its contents." (iso-8859-7 8 "quoted-printable") (iso-8859-8 8 "quoted-printable") (iso-8859-9 8 "quoted-printable") + (iso-8859-14 8 "quoted-printable") + (iso-8859-15 8 "quoted-printable") (iso-2022-jp 7 "base64") (iso-2022-jp-3 7 "base64") (iso-2022-kr 7 "base64") @@ -650,7 +666,10 @@ If it is not specified for a major-mode, (if (fboundp 'apel-version) (concat (apel-version) " ")) (if (featurep 'xemacs) - (concat (cond ((featurep 'utf-2000) + (concat (cond ((and (featurep 'chise) + (boundp 'xemacs-chise-version)) + (concat "CHISE-MULE/" xemacs-chise-version)) + ((featurep 'utf-2000) (concat "UTF-2000-MULE/" utf-2000-version)) ((featurep 'mule) "MULE")) " XEmacs" @@ -719,7 +738,7 @@ Tspecials means any character that matches with it in header must be quoted.") (concat "MIME-Version:" (mime-encode-field-body (concat " 1.0 (split by " mime-edit-version ")\n") - "MIME-Version:")) + "MIME-Version")) "MIME version field for message/partial.") @@ -1057,6 +1076,7 @@ User customizable variables (not documented all of them): paragraph-separate)) (run-hooks 'mime-edit-mode-hook) (message + "%s" (substitute-command-keys "Type \\[mime-edit-exit] to exit MIME mode, and type \\[mime-edit-help] to get help.")) )) @@ -1600,7 +1620,7 @@ Optional DELIMITER specifies parameter delimiter (';' by default)." (defun mime-prompt-for-parameter (parameter) "Ask for PARAMETER. -Parameter must be '(PROMPT CHOICE1 (CHOISE2 ...))." +Parameter must be '(PROMPT CHOICE1 (CHOICE2...))." (let* ((prompt (car parameter)) (choices (mapcar (function (lambda (e) @@ -1713,6 +1733,7 @@ Parameter must be '(PROMPT CHOICE1 (CHOISE2 ...))." ) (delete-region beg end) (or (looking-at mime-edit-beginning-tag-regexp) + (looking-at mime-edit-multipart-end-regexp) (eobp) (insert (concat (mime-make-text-tag) "\n")) ))) @@ -1772,6 +1793,13 @@ Parameter must be '(PROMPT CHOICE1 (CHOISE2 ...))." (defvar mime-edit-pgp-user-id nil) +(defun mime-edit-delete-trailing-whitespace () + (save-match-data + (save-excursion + (goto-char (point-min)) + (while (re-search-forward "[ \t]+$" nil t) + (delete-region (match-beginning 0) (match-end 0)))))) + (defun mime-edit-sign-pgp-mime (beg end boundary) (save-excursion (save-restriction @@ -1783,6 +1811,7 @@ Parameter must be '(PROMPT CHOICE1 (CHOISE2 ...))." (encoding (nth 1 ret)) (pgp-boundary (concat "pgp-sign-" boundary)) micalg) + (mime-edit-delete-trailing-whitespace) ; RFC3156 (goto-char beg) (insert (format "Content-Type: %s\n" ctype)) (if encoding @@ -1793,7 +1822,8 @@ Parameter must be '(PROMPT CHOICE1 (CHOISE2 ...))." (or mime-edit-pgp-user-id (if from (nth 1 (std11-extract-address-components from)) - pgg-default-user-id)))) + pgg-default-user-id))) + (pgg-text-mode t)) (pgg-sign-region (point-min)(point-max))) (throw 'mime-edit-error 'pgp-error) ) @@ -1884,7 +1914,8 @@ Content-Transfer-Encoding: 7bit (or mime-edit-pgp-user-id (if from (nth 1 (std11-extract-address-components from)) - pgg-default-user-id)))) + pgg-default-user-id))) + (pgg-text-mode t)) (pgg-encrypt-region (point-min) (point-max) (mapcar (lambda (recipient) @@ -2295,7 +2326,13 @@ Content-Description: S/MIME Encrypted Message][base64]]\n") (narrow-to-region beg (mime-edit-content-end)) (goto-char beg) (while (re-search-forward "\\(\\=\\|[^\r]\\)\n" nil t) - (replace-match "\\1\r\n")))) + ;; In a certain period, `replace-match' with "\\N" + ;; converted 8-bit characters into multibyte string, + ;; but it has been fixed at 2004-01-15. + ;;(replace-match "\\1\r\n")))) + (backward-char 1) + (insert "\r") + (forward-char 1)))) (goto-char beg) (mime-encode-region beg (mime-edit-content-end) (or encoding "7bit")) @@ -2605,14 +2642,10 @@ Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n" (or (cdr (assq major-mode mime-edit-message-max-lines-alist)) mime-edit-message-default-max-lines)) ) - (let* ((mime-edit-draft-file-name - (or (buffer-file-name) - (make-temp-name - (expand-file-name "mime-draft" temporary-file-directory)))) - (separator mail-header-separator) - (id (concat "\"" - (replace-space-with-underline (current-time-string)) - "@" (system-name) "\""))) + (let ((separator mail-header-separator) + (id (concat "\"" + (replace-space-with-underline (current-time-string)) + "@" (system-name) "\""))) (run-hooks 'mime-edit-before-split-hook) (let ((the-buf (current-buffer)) (copy-buf (get-buffer-create " *Original Message*")) @@ -2670,7 +2703,7 @@ Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n" (message (format "Sending %d/%d..." mime-edit-partial-number total)) (call-interactively command) - (message (format "Sending %d/%d... done" + (message (format "Sending %d/%d...done" mime-edit-partial-number total)) ) (setq mime-edit-partial-number @@ -2688,7 +2721,7 @@ Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n" (save-excursion (message (format "Sending %d/%d..." mime-edit-partial-number total)) - (message (format "Sending %d/%d... done" + (message (format "Sending %d/%d...done" mime-edit-partial-number total)) ) ))) @@ -2711,6 +2744,7 @@ Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n" ;;; (defvar mime-edit-buffer nil) ; buffer local variable +(defvar mime-edit-temp-message-buffer nil) ; buffer local variable (defun mime-edit-preview-message () "preview editing MIME message."