:type 'list)
(defconst mime-edit-split-ignored-field-regexp
- "\\(^Content-\\|^Subject:\\|^Mime-Version:\\)")
+ "\\(^Content-\\|^Subject:\\|^Mime-Version:\\|Message-Id:\\)")
(defvar mime-edit-split-blind-field-regexp
"\\(^[BDFbdf]cc:\\|^cc:[ \t]*$\\)")
;;; @@ about PGP
;;;
-(defvar mime-edit-signing-type 'pgp-elkins
- "*PGP signing type (pgp-elkins, pgp-kazu or nil).")
+(defvar mime-edit-signing-type 'pgp-mime
+ "*PGP signing type (pgp-mime, pgp-kazu or nil).")
-(defvar mime-edit-encrypting-type 'pgp-elkins
- "*PGP encrypting type (pgp-elkins, pgp-kazu or nil).")
+(defvar mime-edit-encrypting-type 'pgp-mime
+ "*PGP encrypting type (pgp-mime, pgp-kazu or nil).")
;;; @@ about tag
(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))
- ))
+ (if (boundp 'enable-multibyte-characters)
+ (concat "Emacs " ver
+ (if enable-multibyte-characters
+ (concat ", MULE " mule-version)
+ " (with raw setting)")
+ (if (featurep 'meadow)
+ (concat ", " (Meadow-version))
+ ))
+ (concat "MULE " mule-version " based on Emacs " ver))
ver)))
"Body of X-Emacs field.
If variable `mime-edit-insert-x-emacs-field' is not nil, it is
(defvar mime-edit-mode-flag nil)
(make-variable-buffer-local 'mime-edit-mode-flag)
+(defvar mime-edit-mode-entity-prefix "\C-c\C-x"
+ "Keymap prefix for MIME-Edit mode commands to insert entity or set status.")
+(defvar mime-edit-mode-entity-map (make-sparse-keymap)
+ "Keymap for MIME-Edit mode commands to insert entity or set status.")
+
+(define-key mime-edit-mode-entity-map "\C-t" 'mime-edit-insert-text)
+(define-key mime-edit-mode-entity-map "\C-i" 'mime-edit-insert-file)
+(define-key mime-edit-mode-entity-map "\C-e" 'mime-edit-insert-external)
+(define-key mime-edit-mode-entity-map "\C-v" 'mime-edit-insert-voice)
+(define-key mime-edit-mode-entity-map "\C-y" 'mime-edit-insert-message)
+(define-key mime-edit-mode-entity-map "\C-m" 'mime-edit-insert-mail)
+(define-key mime-edit-mode-entity-map "\C-w" 'mime-edit-insert-signature)
+(define-key mime-edit-mode-entity-map "\C-s" 'mime-edit-insert-signature)
+(define-key mime-edit-mode-entity-map "\C-k" 'mime-edit-insert-key)
+(define-key mime-edit-mode-entity-map "t" 'mime-edit-insert-tag)
+
+(define-key mime-edit-mode-entity-map "7" 'mime-edit-set-transfer-level-7bit)
+(define-key mime-edit-mode-entity-map "8" 'mime-edit-set-transfer-level-8bit)
+(define-key mime-edit-mode-entity-map "/" 'mime-edit-set-split)
+(define-key mime-edit-mode-entity-map "s" 'mime-edit-set-sign)
+(define-key mime-edit-mode-entity-map "v" 'mime-edit-set-sign)
+(define-key mime-edit-mode-entity-map "e" 'mime-edit-set-encrypt)
+(define-key mime-edit-mode-entity-map "h" 'mime-edit-set-encrypt)
+(define-key mime-edit-mode-entity-map "p" 'mime-edit-preview-message)
+(define-key mime-edit-mode-entity-map "\C-z" 'mime-edit-exit)
+(define-key mime-edit-mode-entity-map "?" 'mime-edit-help)
+
+(defvar mime-edit-mode-enclosure-prefix "\C-c\C-m"
+ "Keymap prefix for MIME-Edit mode commands about enclosure.")
+(defvar mime-edit-mode-enclosure-map (make-sparse-keymap)
+ "Keymap for MIME-Edit mode commands about enclosure.")
+
+(define-key mime-edit-mode-enclosure-map
+ "\C-a" 'mime-edit-enclose-alternative-region)
+(define-key mime-edit-mode-enclosure-map
+ "\C-p" 'mime-edit-enclose-parallel-region)
+(define-key mime-edit-mode-enclosure-map
+ "\C-m" 'mime-edit-enclose-mixed-region)
+(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)
+(define-key mime-edit-mode-enclosure-map
+ "\C-e" 'mime-edit-enclose-encrypted-region)
+(define-key mime-edit-mode-enclosure-map
+ "\C-q" 'mime-edit-enclose-quote-region)
+
(defvar mime-edit-mode-map (make-sparse-keymap)
"Keymap for MIME-Edit mode commands.")
-
-(define-key mime-edit-mode-map
- "\C-c\C-x\C-t" 'mime-edit-insert-text)
-(define-key mime-edit-mode-map
- "\C-c\C-x\C-i" 'mime-edit-insert-file)
-(define-key mime-edit-mode-map
- "\C-c\C-x\C-e" 'mime-edit-insert-external)
-(define-key mime-edit-mode-map
- "\C-c\C-x\C-v" 'mime-edit-insert-voice)
-(define-key mime-edit-mode-map
- "\C-c\C-x\C-y" 'mime-edit-insert-message)
-(define-key mime-edit-mode-map
- "\C-c\C-x\C-m" 'mime-edit-insert-mail)
-(define-key mime-edit-mode-map
- "\C-c\C-x\C-w" 'mime-edit-insert-signature)
(define-key mime-edit-mode-map
- "\C-c\C-x\C-s" 'mime-edit-insert-signature)
+ mime-edit-mode-entity-prefix mime-edit-mode-entity-map)
(define-key mime-edit-mode-map
- "\C-c\C-x\C-k" 'mime-edit-insert-key)
-(define-key mime-edit-mode-map
- "\C-c\C-xt" 'mime-edit-insert-tag)
-
-(define-key mime-edit-mode-map
- "\C-c\C-m\C-a" 'mime-edit-enclose-alternative-region)
-(define-key mime-edit-mode-map
- "\C-c\C-m\C-p" 'mime-edit-enclose-parallel-region)
-(define-key mime-edit-mode-map
- "\C-c\C-m\C-m" 'mime-edit-enclose-mixed-region)
-(define-key mime-edit-mode-map
- "\C-c\C-m\C-d" 'mime-edit-enclose-digest-region)
-(define-key mime-edit-mode-map
- "\C-c\C-m\C-s" 'mime-edit-enclose-signed-region)
-(define-key mime-edit-mode-map
- "\C-c\C-m\C-e" 'mime-edit-enclose-encrypted-region)
-(define-key mime-edit-mode-map
- "\C-c\C-m\C-q" 'mime-edit-enclose-quote-region)
-
-(define-key mime-edit-mode-map
- "\C-c\C-x7" 'mime-edit-set-transfer-level-7bit)
-(define-key mime-edit-mode-map
- "\C-c\C-x8" 'mime-edit-set-transfer-level-8bit)
-(define-key mime-edit-mode-map
- "\C-c\C-x/" 'mime-edit-set-split)
-(define-key mime-edit-mode-map
- "\C-c\C-xs" 'mime-edit-set-sign)
-(define-key mime-edit-mode-map
- "\C-c\C-xv" 'mime-edit-set-sign)
-(define-key mime-edit-mode-map
- "\C-c\C-xe" 'mime-edit-set-encrypt)
-(define-key mime-edit-mode-map
- "\C-c\C-xh" 'mime-edit-set-encrypt)
-(define-key mime-edit-mode-map
- "\C-c\C-x\C-p" 'mime-edit-preview-message)
-(define-key mime-edit-mode-map
- "\C-c\C-x\C-z" 'mime-edit-exit)
-(define-key mime-edit-mode-map
- "\C-c\C-x?" 'mime-edit-help)
+ mime-edit-mode-enclosure-prefix mime-edit-mode-enclosure-map)
(defconst mime-edit-menu-title "MIME-Edit")
;;; @ functions
;;;
+(defvar mime-edit-touched-flag nil)
+
;;;###autoload
(defun mime-edit-mode ()
"MIME minor mode for editing the tagged MIME message.
(interactive)
(if mime-edit-mode-flag
(mime-edit-exit)
- (if (and (boundp 'mime-edit-touched-flag)
- mime-edit-touched-flag)
+ (if mime-edit-touched-flag
(mime-edit-again)
(make-local-variable 'mime-edit-touched-flag)
(setq mime-edit-touched-flag t)
(let ((bb (match-beginning 0))
(be (match-end 0))
(type (buffer-substring (match-beginning 1)(match-end 1)))
- end-exp eb ee)
+ end-exp eb)
(setq end-exp (format "--}-<<%s>>\n" type))
(widen)
(if (re-search-forward end-exp nil t)
- (progn
- (setq eb (match-beginning 0))
- (setq ee (match-end 0))
- )
+ (setq eb (match-beginning 0))
(setq eb (point-max))
- (setq ee (point-max))
)
(narrow-to-region be eb)
(goto-char be)
(if (re-search-forward mime-edit-multipart-beginning-regexp nil t)
- (let (ret)
+ (progn
(narrow-to-region (match-beginning 0)(point-max))
(mime-edit-find-inmost)
)
(mime-edit-enquote-region bb eb)
)
((string-equal type "signed")
- (cond ((eq mime-edit-signing-type 'pgp-elkins)
- (mime-edit-sign-pgp-elkins bb eb boundary)
+ (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 "encrypted")
- (cond ((eq mime-edit-encrypting-type 'pgp-elkins)
- (mime-edit-encrypt-pgp-elkins bb eb boundary)
+ (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)
(replace-match (concat "-" (substring tag 2)))
)))))
-(defun mime-edit-sign-pgp-elkins (beg end boundary)
+(defun mime-edit-sign-pgp-mime (beg end boundary)
(save-excursion
(save-restriction
(narrow-to-region beg end)
(mime-edit-translate-region beg end boundary))
(ctype (car ret))
(encoding (nth 1 ret))
- (parts (nth 3 ret))
- (pgp-boundary (concat "pgp-sign-" boundary))
- )
+ (pgp-boundary (concat "pgp-sign-" boundary)))
(goto-char beg)
(insert (format "Content-Type: %s\n" ctype))
(if encoding
(vector from recipients header)
))
-(defun mime-edit-encrypt-pgp-elkins (beg end boundary)
+(defun mime-edit-encrypt-pgp-mime (beg end boundary)
(save-excursion
(save-restriction
(let (from recipients header)
(mime-edit-translate-region beg end boundary))
(ctype (car ret))
(encoding (nth 1 ret))
- (parts (nth 3 ret))
- (pgp-boundary (concat "pgp-" boundary))
- )
+ (pgp-boundary (concat "pgp-" boundary)))
(goto-char beg)
(insert header)
(insert (format "Content-Type: %s\n" ctype))
(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))
(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 "\""))
;; 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)
(goto-char (point-min))
(let ((ctl (mime-read-Content-Type)))
(if ctl
- (let ((type (car ctl))
- (stype (car (cdr ctl)))
- (params (cdr (cdr ctl)))
- )
+ (let ((type (mime-content-type-primary-type ctl))
+ (stype (mime-content-type-subtype ctl))
+ (params (mime-content-type-parameters ctl)))
(cond
((and (eq type 'application)(eq stype 'pgp-signature))
(delete-region (point-min)(point-max))