(mime-file-types): Abolish setting for text/richtext.
[elisp/semi.git] / mime-edit.el
index c66b48e..1aa3c2f 100644 (file)
 (require 'mail-utils)
 (require 'mel)
 (require 'mime-view)
-(require 'eword-encode)
 (require 'signature)
 (require 'alist)
 
 ;;;
 
 (defconst mime-edit-version-string
-  `,(concat (car mime-module-version) " "
-           (mapconcat #'number-to-string (cddr mime-module-version) ".")
-           " - \"" (cadr mime-module-version) "\""))
+  `,(concat (car mime-user-interface-version) " "
+           (mapconcat #'number-to-string
+                      (cddr mime-user-interface-version) ".")
+           " - \"" (cadr mime-user-interface-version) "\""))
 
 
 ;;; @ variables
@@ -184,18 +184,11 @@ To insert a signature file automatically, call the function
      ("plain"
       ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
       )
-     ("richtext"
-      ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
-      )
-     ("enriched"
-      ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
-      )
-     ("x-latex"
-      ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
-      )
-     ("html"
-      ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
-      )
+     ("enriched")
+     ("html")
+     ("css") ; rfc2318
+     ("xml") ; rfc2376
+     ("x-latex")
      ("x-rot13-47-48")
      )
     ("message"
@@ -214,9 +207,13 @@ To insert a signature file automatically, call the function
        ("tftp"        ("site") ("name"))
        ("afs"         ("site") ("name"))
        ("local-file"  ("site") ("name"))
-       ("mail-server" ("server" "ftpmail@nic.karrn.ad.jp"))
+       ("mail-server"
+       ("server" "ftpmail@nic.karrn.ad.jp")
+       ("subject"))
+       ("url"         ("url"))
        ))
      ("rfc822")
+     ("news")
      )
     ("application"
      ("octet-stream" ("type" "" "tar" "shar"))
@@ -248,10 +245,6 @@ To insert a signature file automatically, call the function
      nil
      "inline"          (("filename" . file))
      )
-    ("\\.rtf$"
-     "text"    "richtext"      nil
-     nil
-     nil               nil)
     ("\\.html$"
      "text"    "html"          nil
      nil
@@ -441,10 +434,11 @@ If encoding is nil, it is determined from its contents."
     (iso-2022-jp       7 "base64")
     (iso-2022-kr       7 "base64")
     (euc-kr            8 "base64")
-    (cn-gb2312         8 "quoted-printable")
+    (cn-gb2312         8 "base64")
+    (gb2312            8 "base64")
     (cn-big5           8 "base64")
-    (gb2312            8 "quoted-printable")
     (big5              8 "base64")
+    (shift_jis         8 "base64")
     (iso-2022-jp-2     7 "base64")
     (iso-2022-int-1    7 "base64")
     ))
@@ -464,23 +458,6 @@ If encoding is nil, it is determined from its contents."
   "A string formatted version of mime-transfer-level")
 (make-variable-buffer-local 'mime-transfer-level-string)
 
-(defun mime-make-charset-default-encoding-alist (transfer-level)
-  (mapcar (function
-          (lambda (charset-type)
-            (let ((charset  (car charset-type))
-                  (type     (nth 1 charset-type))
-                  (encoding (nth 2 charset-type))
-                  )
-              (if (<= type transfer-level)
-                  (cons charset (mime-encoding-name type))
-                (cons charset encoding)
-                ))))
-         mime-charset-type-list))
-
-(defvar mime-edit-charset-default-encoding-alist
-  (mime-make-charset-default-encoding-alist mime-transfer-level))
-(make-variable-buffer-local 'mime-edit-charset-default-encoding-alist)
-
 
 ;;; @@ about message inserting
 ;;;
@@ -525,24 +502,17 @@ If it is not specified for a major-mode,
 (defconst mime-edit-split-ignored-field-regexp
   "\\(^Content-\\|^Subject:\\|^Mime-Version:\\|Message-Id:\\)")
 
-(defvar mime-edit-split-blind-field-regexp
-  "\\(^[BDFbdf]cc:\\|^cc:[ \t]*$\\)")
+(defcustom mime-edit-split-blind-field-regexp
+  "\\(^[BDFbdf]cc:\\|^cc:[ \t]*$\\)"
+  "*Regular expression to match field-name to be ignored when split sending."
+  :group 'mime-edit
+  :type 'regexp)
 
 (defvar mime-edit-split-message-sender-alist nil)
 
 (defvar mime-edit-news-reply-mode-server-running nil)
 
 
-;;; @@ about PGP
-;;;
-
-(defvar mime-edit-signing-type 'pgp-mime
-  "*PGP signing type (pgp-mime, pgp-kazu or nil).")
-
-(defvar mime-edit-encrypting-type 'pgp-mime
-  "*PGP encrypting type (pgp-mime, pgp-kazu or nil).")
-
-
 ;;; @@ about tag
 ;;;
 
@@ -587,28 +557,54 @@ If it is not specified for a major-mode,
 ;;; @@ optional header fields
 ;;;
 
-(defvar mime-edit-insert-x-emacs-field t
-  "*If non-nil, insert X-Emacs header field.")
-
-(defvar mime-edit-x-emacs-value
-  (if (featurep 'xemacs)
-      (concat emacs-version (if (featurep 'mule)
-                               " with mule"
-                             " without mule"))
-    (let ((ver (if (string-match "\\.[0-9]+$" emacs-version)
-                  (substring emacs-version 0 (match-beginning 0))
-                emacs-version)))
-      (if (featurep 'mule)
-         (concat "Emacs " ver
-                 (if enable-multibyte-characters
-                     (concat ", MULE " mule-version)
-                   " (with raw setting)")
-                 (if (featurep 'meadow)
-                     (concat ", " (Meadow-version))
-                   ))
-       ver)))
-  "Body of X-Emacs field.
-If variable `mime-edit-insert-x-emacs-field' is not nil, it is
+(defvar mime-edit-insert-user-agent-field t
+  "*If non-nil, insert User-Agent header field.")
+
+(defvar mime-edit-user-agent-value
+  (concat (car mime-user-interface-version)
+         "/"
+         (mapconcat #'number-to-string
+                    (cddr mime-user-interface-version) ".")
+         " ("
+         (cadr mime-user-interface-version)
+         ") "
+         (car mime-library-version)
+         "/"
+         (mapconcat #'number-to-string
+                    (cddr mime-library-version) ".")
+         " ("
+         (cadr mime-library-version)
+         ") "
+         (if (featurep 'xemacs)
+             (concat "XEmacs"
+                     (if (string-match "\\s +\\\"" emacs-version)
+                         (concat "/"
+                                 (substring emacs-version 0
+                                            (match-beginning 0))
+                                 " (" xemacs-codename ")")
+                       " (" emacs-version ")")
+                     (if (featurep 'mule) " MULE"))
+           (let ((ver (if (string-match "\\.[0-9]+$" emacs-version)
+                          (substring emacs-version 0 (match-beginning 0))
+                        emacs-version)))
+             (if (featurep 'mule)
+                 (if (boundp 'enable-multibyte-characters)
+                     (concat "Emacs/" ver
+                             (if enable-multibyte-characters
+                                 (concat " MULE/" mule-version)
+                               " (with unibyte mode)")
+                             (if (featurep 'meadow)
+                                 (let ((mver (Meadow-version)))
+                                   (if (string-match "^Meadow-" mver)
+                                       (concat " Meadow/"
+                                               (substring mver
+                                                          (match-end 0)))
+                                     ))))
+                   (concat "MULE/" mule-version
+                           " (based on Emacs " ver ")"))
+               ver))))
+  "Body of User-Agent field.
+If variable `mime-edit-insert-user-agent-field' is not nil, it is
 inserted into message header.")
 
 \f
@@ -675,9 +671,9 @@ Tspecials means any character that matches with it in header must be quoted.")
 (define-key mime-edit-mode-enclosure-map
   "\C-d" 'mime-edit-enclose-digest-region)
 (define-key mime-edit-mode-enclosure-map
-  "\C-s" 'mime-edit-enclose-signed-region)
+  "\C-s" 'mime-edit-enclose-pgp-signed-region)
 (define-key mime-edit-mode-enclosure-map
-  "\C-e" 'mime-edit-enclose-encrypted-region)
+  "\C-e" 'mime-edit-enclose-pgp-encrypted-region)
 (define-key mime-edit-mode-enclosure-map
   "\C-q" 'mime-edit-enclose-quote-region)
 
@@ -705,8 +701,8 @@ Tspecials means any character that matches with it in header must be quoted.")
     (parallel  "Enclose as parallel"   mime-edit-enclose-parallel-region)
     (mixed     "Enclose as serial"     mime-edit-enclose-mixed-region)
     (digest    "Enclose as digest"     mime-edit-enclose-digest-region)
-    (signed    "Enclose as signed"     mime-edit-enclose-signed-region)
-    (encrypted "Enclose as encrypted"  mime-edit-enclose-encrypted-region)
+    (signed    "Enclose as signed"     mime-edit-enclose-pgp-signed-region)
+    (encrypted "Enclose as encrypted"  mime-edit-enclose-pgp-encrypted-region)
     (quote     "Verbatim region"       mime-edit-enclose-quote-region)
     (key       "Insert Public Key"     mime-edit-insert-key)
     (split     "About split"           mime-edit-set-split)
@@ -721,7 +717,7 @@ Tspecials means any character that matches with it in header must be quoted.")
        ;; modified by Pekka Marjola <pema@iki.fi>
        ;;      1995/9/5 (c.f. [tm-en:69])
        (defun mime-edit-define-menu-for-xemacs ()
-        "Define menu for Emacs 19."
+        "Define menu for XEmacs."
         (cond ((featurep 'menubar)
                (make-local-variable 'current-menubar)
                (set-buffer-menubar current-menubar)
@@ -824,24 +820,27 @@ Following commands are available in addition to major mode commands:
 \\[mime-edit-insert-tag]       insert a new MIME tag.
 
 \[make enclosure (maybe multipart)\]
-\\[mime-edit-enclose-alternative-region]       enclose as multipart/alternative.
-\\[mime-edit-enclose-parallel-region]  enclose as multipart/parallel.
-\\[mime-edit-enclose-mixed-region]     enclose as multipart/mixed.
-\\[mime-edit-enclose-digest-region]    enclose as multipart/digest.
-\\[mime-edit-enclose-signed-region]    enclose as PGP signed.
-\\[mime-edit-enclose-encrypted-region] enclose as PGP encrypted.
-\\[mime-edit-enclose-quote-region]     enclose as verbose mode (to avoid to expand tags)
+\\[mime-edit-enclose-alternative-region]   enclose as multipart/alternative.
+\\[mime-edit-enclose-parallel-region]     enclose as multipart/parallel.
+\\[mime-edit-enclose-mixed-region]        enclose as multipart/mixed.
+\\[mime-edit-enclose-digest-region]       enclose as multipart/digest.
+\\[mime-edit-enclose-pgp-signed-region]           enclose as PGP signed.
+\\[mime-edit-enclose-pgp-encrypted-region] enclose as PGP encrypted.
+\\[mime-edit-enclose-quote-region]        enclose as verbose mode
+                                          (to avoid to expand tags)
 
 \[other commands\]
 \\[mime-edit-set-transfer-level-7bit]  set transfer-level as 7.
 \\[mime-edit-set-transfer-level-8bit]  set transfer-level as 8.
-\\[mime-edit-set-split]        set message splitting mode.
-\\[mime-edit-set-sign] set PGP-sign mode.
-\\[mime-edit-set-encrypt]      set PGP-encryption mode.
-\\[mime-edit-preview-message]  preview editing MIME message.
-\\[mime-edit-exit]     exit and translate into a MIME compliant message.
-\\[mime-edit-help]     show this help.
-\\[mime-edit-maybe-translate]  exit and translate if in MIME mode, then split.
+\\[mime-edit-set-split]                        set message splitting mode.
+\\[mime-edit-set-sign]                 set PGP-sign mode.
+\\[mime-edit-set-encrypt]              set PGP-encryption mode.
+\\[mime-edit-preview-message]          preview editing MIME message.
+\\[mime-edit-exit]                     exit and translate into a MIME
+                                       compliant message.
+\\[mime-edit-help]                     show this help.
+\\[mime-edit-maybe-translate]          exit and translate if in MIME mode,
+                                       then split.
 
 Additional commands are available in some major modes:
 C-c C-c                exit, translate and run the original command.
@@ -1019,9 +1018,8 @@ If optional argument SUBTYPE is not nil, text/SUBTYPE tag is inserted."
            (insert "\n")
            (forward-char -1)
            ))
-      (if (and (member (cadr ret) '("enriched" "richtext"))
-              (fboundp 'enriched-mode)
-              )
+      (if (and (member (cadr ret) '("enriched"))
+              (fboundp 'enriched-mode))
          (enriched-mode t)
        (if (boundp 'enriched-mode)
            (enriched-mode -1)
@@ -1618,21 +1616,18 @@ Parameter must be '(PROMPT CHOICE1 (CHOISE2 ...))."
          (cond ((string-equal type "quote")
                 (mime-edit-enquote-region bb eb)
                 )
-               ((string-equal type "signed")
-                (cond ((eq mime-edit-signing-type 'pgp-mime)
-                       (mime-edit-sign-pgp-mime bb eb boundary)
-                       )
-                      ((eq mime-edit-signing-type 'pgp-kazu)
-                       (mime-edit-sign-pgp-kazu bb eb boundary)
-                       ))
+               ((string-equal type "pgp-signed")
+                (mime-edit-sign-pgp-mime bb eb boundary)
+                )
+               ((string-equal type "pgp-encrypted")
+                (mime-edit-encrypt-pgp-mime bb eb boundary)
+                )
+               ((string-equal type "kazu-signed")
+                (mime-edit-sign-pgp-kazu bb eb boundary)
+                )
+               ((string-equal type "kazu-encrypted")
+                (mime-edit-encrypt-pgp-kazu bb eb boundary)
                 )
-               ((string-equal type "encrypted")
-                (cond ((eq mime-edit-encrypting-type 'pgp-mime)
-                       (mime-edit-encrypt-pgp-mime bb eb boundary)
-                       )
-                      ((eq mime-edit-encrypting-type 'pgp-kazu)
-                       (mime-edit-encrypt-pgp-kazu bb eb boundary)
-                       )))
                (t
                 (setq boundary
                       (nth 2 (mime-edit-translate-region bb eb
@@ -1771,9 +1766,7 @@ Content-Transfer-Encoding: 7bit
       (let* ((ret
              (mime-edit-translate-region beg end boundary))
             (ctype    (car ret))
-            (encoding (nth 1 ret))
-            (parts    (nth 3 ret))
-            )
+            (encoding (nth 1 ret)))
        (goto-char beg)
        (insert (format "Content-Type: %s\n" ctype))
        (if encoding
@@ -1793,10 +1786,9 @@ Content-Transfer-Encoding: 7bit
 
 (defun mime-edit-encrypt-pgp-kazu (beg end boundary)
   (save-excursion
-    (let (from recipients header)
+    (let (recipients header)
       (let ((ret (mime-edit-make-encrypt-recipient-header)))
-       (setq from (aref ret 0)
-             recipients (aref ret 1)
+       (setq recipients (aref ret 1)
              header (aref ret 2))
        )
       (save-restriction
@@ -1804,9 +1796,7 @@ Content-Transfer-Encoding: 7bit
        (let* ((ret
                (mime-edit-translate-region beg end boundary))
               (ctype    (car ret))
-              (encoding (nth 1 ret))
-              (parts    (nth 3 ret))
-              )
+              (encoding (nth 1 ret)))
          (goto-char beg)
          (insert header)
          (insert (format "Content-Type: %s\n" ctype))
@@ -1876,10 +1866,10 @@ Content-Transfer-Encoding: 7bit
       (let ((contype (car ret))                ;Content-Type
            (encoding (nth 1 ret))      ;Content-Transfer-Encoding
            )
-       ;; Insert X-Emacs field
-       (and mime-edit-insert-x-emacs-field
-            (or (mail-position-on-field "X-Emacs")
-                (insert mime-edit-x-emacs-value)
+       ;; Insert User-Agent field
+       (and mime-edit-insert-user-agent-field
+            (or (mail-position-on-field "User-Agent")
+                (insert mime-edit-user-agent-value)
                 ))
        ;; Make primary MIME headers.
        (or (mail-position-on-field "MIME-Version")
@@ -1901,17 +1891,15 @@ Content-Transfer-Encoding: 7bit
              (insert encoding)))
        ))))
 
-(defun mime-edit-translate-single-part-tag (&optional prefix)
+(defun mime-edit-translate-single-part-tag (boundary &optional prefix)
   "Translate single-part-tag to MIME header."
   (if (re-search-forward mime-edit-single-part-tag-regexp nil t)
       (let* ((beg (match-beginning 0))
             (end (match-end 0))
-            (tag (buffer-substring beg end))
-            )
+            (tag (buffer-substring beg end)))
        (delete-region beg end)
        (let ((contype (mime-edit-get-contype tag))
-             (encoding (mime-edit-get-encoding tag))
-             )
+             (encoding (mime-edit-get-encoding tag)))
          (insert (concat prefix "--" boundary "\n"))
          (save-restriction
            (narrow-to-region (point)(point))
@@ -1956,9 +1944,8 @@ Content-Transfer-Encoding: 7bit
         (t
          ;; It's a multipart message.
          (goto-char (point-min))
-         (and (mime-edit-translate-single-part-tag)
-              (while (mime-edit-translate-single-part-tag "\n"))
-              )
+         (and (mime-edit-translate-single-part-tag boundary)
+              (while (mime-edit-translate-single-part-tag boundary "\n")))
          ;; Define Content-Type as "multipart/mixed".
          (setq contype
                (concat "multipart/mixed;\n boundary=\"" boundary "\""))
@@ -2044,12 +2031,17 @@ Content-Transfer-Encoding: 7bit
        ;; Define encoding and encode text if necessary.
        (or encoding    ;Encoding is not specified.
            (let* ((encoding
-                   (cdr
-                    (assq charset
-                          mime-edit-charset-default-encoding-alist)
-                    ))
-                  (beg (mime-edit-content-beginning))
-                  )
+                   (let (bits conv)
+                     (let ((ret (cdr (assq charset mime-charset-type-list))))
+                       (if ret
+                           (setq bits (car ret)
+                                 conv (nth 1 ret))
+                         (setq bits 8
+                               conv "quoted-printable")))
+                     (if (<= bits mime-transfer-level)
+                         (mime-encoding-name bits)
+                       conv)))
+                  (beg (mime-edit-content-beginning)))
              (encode-mime-charset-region beg (mime-edit-content-end)
                                          charset)
              ;; Protect "From " in beginning of line
@@ -2074,11 +2066,8 @@ Content-Transfer-Encoding: 7bit
                  (save-restriction
                    (narrow-to-region beg (mime-edit-content-end))
                    (goto-char beg)
-                   (while (re-search-forward "\\([^\r]\\)\n" nil t)
-                     (replace-match
-                      (concat (buffer-substring (match-beginning 0)
-                                                (match-end 1)) "\r\n"))
-                     )))
+                   (while (re-search-forward "\\(\\=\\|[^\r]\\)\n" nil t)
+                     (replace-match "\\1\r\n"))))
              (goto-char beg)
              (mime-encode-region beg (mime-edit-content-end) encoding)
              (mime-edit-define-encoding encoding)
@@ -2091,9 +2080,7 @@ Content-Transfer-Encoding: 7bit
        ;; encoded.
        (let* ((encoding "base64")      ;Encode in BASE64 by default.
               (beg (mime-edit-content-beginning))
-              (end (mime-edit-content-end))
-              (body (buffer-substring beg end))
-              )
+              (end (mime-edit-content-end)))
          (mime-encode-region beg end encoding)
          (mime-edit-define-encoding encoding))
        (forward-line 1)
@@ -2180,19 +2167,18 @@ and insert data encoded as ENCODING."
 (defun mime-edit-enclose-region-internal (type beg end)
   (save-excursion
     (goto-char beg)
-    (let ((current (point)))
-      (save-restriction
-       (narrow-to-region beg end)
-       (insert (format "--<<%s>>-{\n" type))
-       (goto-char (point-max))
-       (insert (format "--}-<<%s>>\n" type))
-       (goto-char (point-max))
+    (save-restriction
+      (narrow-to-region beg end)
+      (insert (format "--<<%s>>-{\n" type))
+      (goto-char (point-max))
+      (insert (format "--}-<<%s>>\n" type))
+      (goto-char (point-max))
+      )
+    (or (looking-at mime-edit-beginning-tag-regexp)
+       (eobp)
+       (insert (mime-make-text-tag) "\n")
        )
-      (or (looking-at mime-edit-beginning-tag-regexp)
-         (eobp)
-         (insert (mime-make-text-tag) "\n")
-         )
-      )))
+    ))
 
 (defun mime-edit-enclose-quote-region (beg end)
   (interactive "*r")
@@ -2219,19 +2205,25 @@ and insert data encoded as ENCODING."
   (mime-edit-enclose-region-internal 'alternative beg end)
   )
 
-(defun mime-edit-enclose-signed-region (beg end)
+(defun mime-edit-enclose-pgp-signed-region (beg end)
   (interactive "*r")
-  (if mime-edit-signing-type
-      (mime-edit-enclose-region-internal 'signed beg end)
-    (message "Please specify signing type.")
-    ))
+  (mime-edit-enclose-region-internal 'pgp-signed beg end)
+  )
 
-(defun mime-edit-enclose-encrypted-region (beg end)
+(defun mime-edit-enclose-pgp-encrypted-region (beg end)
   (interactive "*r")
-  (if mime-edit-signing-type
-      (mime-edit-enclose-region-internal 'encrypted beg end)
-    (message "Please specify encrypting type.")
-    ))
+  (mime-edit-enclose-region-internal 'pgp-encrypted beg end)
+  )
+
+(defun mime-edit-enclose-kazu-signed-region (beg end)
+  (interactive "*r")
+  (mime-edit-enclose-region-internal 'kazu-signed beg end)
+  )
+
+(defun mime-edit-enclose-kazu-encrypted-region (beg end)
+  (interactive "*r")
+  (mime-edit-enclose-region-internal 'kazu-encrypted beg end)
+  )
 
 (defun mime-edit-insert-key (&optional arg)
   "Insert a pgp public key."
@@ -2267,8 +2259,6 @@ Optional TRANSFER-LEVEL is a number of transfer-level, 7 or 8."
        (setq mime-transfer-level 8)
       (setq mime-transfer-level 7)
       ))
-  (setq mime-edit-charset-default-encoding-alist
-       (mime-make-charset-default-encoding-alist mime-transfer-level))
   (message (format "Current transfer-level is %d bit"
                   mime-transfer-level))
   (setq mime-transfer-level-string
@@ -2290,18 +2280,18 @@ Optional TRANSFER-LEVEL is a number of transfer-level, 7 or 8."
 ;;; @ pgp
 ;;;
 
+(defvar mime-edit-pgp-processing nil)
+(make-variable-buffer-local 'mime-edit-pgp-processing)
+
 (defun mime-edit-set-sign (arg)
   (interactive
    (list
     (y-or-n-p "Do you want to sign? ")
     ))
   (if arg
-      (if mime-edit-signing-type
-         (progn
-           (setq mime-edit-pgp-processing 'sign)
-           (message "This message will be signed.")
-           )
-       (message "Please specify signing type.")
+      (progn
+       (setq mime-edit-pgp-processing 'sign)
+       (message "This message will be signed.")
        )
     (if (eq mime-edit-pgp-processing 'sign)
        (setq mime-edit-pgp-processing nil)
@@ -2315,12 +2305,9 @@ Optional TRANSFER-LEVEL is a number of transfer-level, 7 or 8."
     (y-or-n-p "Do you want to encrypt? ")
     ))
   (if arg
-      (if mime-edit-encrypting-type
-         (progn
-           (setq mime-edit-pgp-processing 'encrypt)
-           (message "This message will be encrypt.")
-           )
-       (message "Please specify encrypting type.")
+      (progn
+       (setq mime-edit-pgp-processing 'encrypt)
+       (message "This message will be encrypt.")
        )
     (if (eq mime-edit-pgp-processing 'encrypt)
        (setq mime-edit-pgp-processing nil)
@@ -2328,9 +2315,6 @@ Optional TRANSFER-LEVEL is a number of transfer-level, 7 or 8."
     (message "This message will not be encrypt.")
     ))
 
-(defvar mime-edit-pgp-processing nil)
-(make-variable-buffer-local 'mime-edit-pgp-processing)
-
 (defun mime-edit-pgp-enclose-buffer ()
   (let ((beg (save-excursion
               (goto-char (point-min))
@@ -2341,10 +2325,10 @@ Optional TRANSFER-LEVEL is a number of transfer-level, 7 or 8."
        )
     (if beg
        (cond ((eq mime-edit-pgp-processing 'sign)
-              (mime-edit-enclose-signed-region beg end)
+              (mime-edit-enclose-pgp-signed-region beg end)
               )
              ((eq mime-edit-pgp-processing 'encrypt)
-              (mime-edit-enclose-encrypted-region beg end)
+              (mime-edit-enclose-pgp-encrypted-region beg end)
               ))
       )))
 
@@ -2513,7 +2497,7 @@ Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n"
         (concat "^" (regexp-quote separator) "$"))
        (replace-match "")
       )
-    (mime-view-mode)
+    (mime-view-buffer)
     ))
 
 (defun mime-edit-quitting-method ()
@@ -2537,7 +2521,7 @@ Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n"
 
 (defvar mime-edit-again-ignored-field-regexp
   (concat "^\\(" "Content-.*\\|Mime-Version"
-         (if mime-edit-insert-x-emacs-field "\\|X-Emacs")
+         (if mime-edit-insert-user-agent-field "\\|User-Agent")
          "\\):")
   "Regexp for deleted header fields when `mime-edit-again' is called.")