Fix inserting parts with `E' in Gnus
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Sat, 14 Feb 2015 05:01:20 +0000 (16:01 +1100)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Sat, 14 Feb 2015 05:01:20 +0000 (16:01 +1100)
* lisp/mm-decode.el (mm-head-p): New function.
(mm-display-part): Go to a blank line when inserting parts internally.

lisp/ChangeLog
lisp/gnus-art.el
lisp/mm-decode.el

index 8110acc..9f93a30 100644 (file)
@@ -1,3 +1,8 @@
+2015-02-14  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * mm-decode.el (mm-head-p): New function.
+       (mm-display-part): Go to a blank line when inserting parts internally.
+
 2015-02-13  Lars Ingebrigtsen  <larsi@gnus.org>
 
        * gnus-msg.el (gnus-msg-mail): Don't let-bind `gnus-newsgroup-name' so
index 1e31630..c9197e4 100644 (file)
@@ -5506,7 +5506,8 @@ If no internal viewer is available, use an external viewer."
         (gnus-mime-view-part-as-type
          nil (lambda (type) (mm-inlinable-p handle type)))
       (when handle
-       (gnus-bind-safe-url-regexp (mm-display-part handle))))))
+       (gnus-bind-safe-url-regexp
+        (mm-display-part handle nil t))))))
 
 (defun gnus-mime-action-on-part (&optional action)
   "Do something with the MIME attachment at \(point\)."
index 3fdcdba..459c793 100644 (file)
@@ -791,6 +791,14 @@ MIME-Version header before proceeding."
 (autoload 'mailcap-parse-mailcaps "mailcap")
 (autoload 'mailcap-mime-info "mailcap")
 
+(defun mm-head-p (&optional point)
+  "Return non-nil if point is in the article header."
+  (let ((point (or point (point))))
+    (save-excursion
+      (goto-char point)
+      (and (not (re-search-backward "^$" nil t))
+          (re-search-forward "^$" nil t)))))
+
 (defun mm-display-part (handle &optional no-default force)
   "Display the MIME part represented by HANDLE.
 Returns nil if the part is removed; inline if displayed inline;
@@ -824,6 +832,10 @@ external if displayed external."
          'inline)
         ((and (mm-inlinable-p ehandle)
               (mm-inlined-p ehandle))
+         (when force
+           (if (mm-head-p)
+               (re-search-forward "^$" nil t)
+             (forward-line 1)))
          (mm-display-inline handle)
          'inline)
         ((or method