Function: rmail-edit-current-message
rmail-edit-current-message is an autoloaded, interactive and
byte-compiled function defined in rmailedit.el.gz.
Signature
(rmail-edit-current-message)
Documentation
Edit the contents of this message.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/mail/rmailedit.el.gz
;;;###autoload
(defun rmail-edit-current-message ()
"Edit the contents of this message."
(interactive)
(if (zerop rmail-total-messages)
(error "No messages in this buffer"))
(rmail-modify-format)
(setq-local rmail-old-pruned (rmail-msg-is-pruned))
(rmail-edit-mode)
(setq-local rmail-old-mime-state
(and rmail-enable-mime
;; If you use something else, you are on your own.
(eq rmail-mime-feature 'rmailmm)
(rmail-mime-message-p)
(let ((entity (get-text-property (point-min) 'rmail-mime-entity)))
;; rmailmm has got its hands on the message.
;; Even if the message is in `raw' state, boundaries etc
;; are still missing. All we can do is insert the real
;; raw message. (Bug#9840)
;; FIXME? Since the 2012-09-17 changes to rmail-mime,
;; can we just use that function now?
(when (and entity
(not (equal "text/plain"
(car (rmail-mime-entity-type entity)))))
(let ((inhibit-read-only t))
(erase-buffer)
(insert-buffer-substring
rmail-view-buffer
(aref (rmail-mime-entity-header entity) 0)
(aref (rmail-mime-entity-body entity) 1)))
(goto-char (point-min))
;; t = decoded; raw = raw.
(aref (aref (rmail-mime-entity-display entity) 0) 0)))))
(setq-local rmail-old-text
(save-restriction
(widen)
(buffer-substring (point-min) (point-max))))
(setq-local rmail-old-headers (rmail-edit-headers-alist t))
(setq buffer-read-only nil)
(setq buffer-undo-list nil)
;; Whether the buffer is initially marked as modified or not
;; depends on whether or not the underlying rmail buffer was so marked.
;; Given the way this works, it has to.
;; If you kill the edit buffer, you've killed your rmail buffer.
(force-mode-line-update)
(if (and (eq (key-binding "\C-c\C-c") 'rmail-cease-edit)
(eq (key-binding "\C-c\C-]") 'rmail-abort-edit))
(message "Editing: Type C-c C-c to return to Rmail, C-c C-] to abort")
(message "%s" (substitute-command-keys
"Editing: Type \\[rmail-cease-edit] to return to Rmail, \\[rmail-abort-edit] to abort"))))