summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2011-11-15 18:36:54 -0500
committerGlenn Morris <rgm@gnu.org>2011-11-15 18:36:54 -0500
commitd20faa20cff77bc4b64a9ceb5da267996786853c (patch)
tree6dd683b9a397ab6bfc703d31973bfb495a9d6869 /lisp
parentb018182ccdc0e8ecc1156ed4fa06a7464b0de572 (diff)
downloademacs-d20faa20cff77bc4b64a9ceb5da267996786853c.tar.gz
emacs-d20faa20cff77bc4b64a9ceb5da267996786853c.tar.bz2
emacs-d20faa20cff77bc4b64a9ceb5da267996786853c.zip
Add optional arguments to rmailmm to force state, not just toggle.
* lisp/mail/rmailmm.el (rmail-mime-toggle-raw): Remove entity arg, which wasn't being used. Add optional arg to force given state. (rmail-mime): Add optional arg to force given state.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/mail/rmailmm.el52
2 files changed, 34 insertions, 24 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9b76ce5e22e..387afa667fe 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2011-11-15 Glenn Morris <rgm@gnu.org>
+
+ * mail/rmailmm.el (rmail-mime-toggle-raw): Remove entity arg,
+ which wasn't being used. Add optional arg to force given state.
+ (rmail-mime): Add optional arg to force given state.
+
2011-11-15 Juanma Barranquero <lekktu@gmail.com>
* allout.el (allout-encryption-plaintext-sanitization-regexps):
diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el
index 46cd4bbfb37..f3b539c52d0 100644
--- a/lisp/mail/rmailmm.el
+++ b/lisp/mail/rmailmm.el
@@ -357,13 +357,17 @@ The value is a vector [INDEX HEADER TAGLINE BODY END], where
(dolist (child (rmail-mime-entity-children entity))
(rmail-mime-raw-mode child)))
-(defun rmail-mime-toggle-raw (entity)
- "Toggle on and off the raw display mode of MIME-entity ENTITY."
+(defun rmail-mime-toggle-raw (&optional state)
+ "Toggle on and off the raw display mode of MIME-entity at point.
+With optional argument STATE, force the specified display mode.
+Use `raw' for raw mode, and any other non-nil value for decoded mode."
(let* ((pos (if (eobp) (1- (point-max)) (point)))
(entity (get-text-property pos 'rmail-mime-entity))
(current (aref (rmail-mime-entity-display entity) 0))
(segment (rmail-mime-entity-segment pos entity)))
- (if (not (eq (aref current 0) 'raw))
+ (if (or (eq state 'raw)
+ (and (not state)
+ (not (eq (aref current 0) 'raw))))
;; Enter the raw mode.
(rmail-mime-raw-mode entity)
;; Enter the shown mode.
@@ -1265,35 +1269,35 @@ available."
(setq font-lock-defaults '(rmail-font-lock-keywords t t nil nil)))
;;;###autoload
-(defun rmail-mime (&optional arg)
- "Toggle displaying of a MIME message.
+(defun rmail-mime (&optional arg state)
+ "Toggle the display of a MIME message.
The actual behavior depends on the value of `rmail-enable-mime'.
-If `rmail-enable-mime' is non-nil (default), this command changes the
-display of a MIME message between decoded presentation form and raw data.
-
-With ARG, toggle the display of the current MIME entity only.
-
-If `rmail-enable-mime' is nil, this creates a temporary
-\"*RMAIL*\" buffer holding a decoded copy of the message. Inline
-content-types are handled according to
-`rmail-mime-media-type-handlers-alist'. By default, this
-displays text and multipart messages, and offers to download
-attachments as specified by `rmail-mime-attachment-dirs-alist'."
- (interactive "P")
+If `rmail-enable-mime' is non-nil (the default), this command toggles
+the display of a MIME message between decoded presentation form and
+raw data. With optional prefix argument ARG, it toggles the display only
+of the MIME entity at point, if there is one. The optional argument
+STATE forces a particular display state, rather than toggling.
+`raw' forces raw mode, any other non-nil value forces decoded mode.
+
+If `rmail-enable-mime' is nil, this creates a temporary \"*RMAIL*\"
+buffer holding a decoded copy of the message. Inline content-types are
+handled according to `rmail-mime-media-type-handlers-alist'.
+By default, this displays text and multipart messages, and offers to
+download attachments as specified by `rmail-mime-attachment-dirs-alist'.
+The arguments ARG and STATE have no effect in this case."
+ (interactive (list current-prefix-arg nil))
(if rmail-enable-mime
(with-current-buffer rmail-buffer
(if (rmail-mime-message-p)
(let ((rmail-mime-mbox-buffer rmail-view-buffer)
(rmail-mime-view-buffer rmail-buffer)
- (entity (get-text-property (point) 'rmail-mime-entity)))
- (if arg
- (if entity
- (rmail-mime-toggle-raw entity))
- (goto-char (point-min))
- (rmail-mime-toggle-raw
- (get-text-property (point) 'rmail-mime-entity))))
+ (entity (get-text-property
+ (progn
+ (or arg (goto-char (point-min)))
+ (point)) 'rmail-mime-entity)))
+ (if (or (not arg) entity) (rmail-mime-toggle-raw state)))
(message "Not a MIME message")))
(let* ((data (rmail-apply-in-message rmail-current-message 'buffer-string))
(buf (get-buffer-create "*RMAIL*"))