Fix point motion when removing displayed MIME part
authorKatsumi Yamaoka <yamaoka@jpl.org>
Thu, 26 Feb 2015 06:38:44 +0000 (06:38 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Thu, 26 Feb 2015 06:38:44 +0000 (06:38 +0000)
* gnus-art.el (gnus-mime-inline-part, gnus-mm-display-part):
Fix point motion when removing displayed MIME part.

lisp/ChangeLog
lisp/gnus-art.el

index 7bae046..2047481 100644 (file)
@@ -1,7 +1,9 @@
 2015-02-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-       * gnus-art.el (gnus-article-edit-part): Make jumping to the next part
-       really work when deleting or stripping.
+       * gnus-art.el (gnus-mime-inline-part, gnus-mm-display-part):
+       Fix point motion when removing displayed MIME part.
+       (gnus-article-edit-part): Make jumping to the next part really work
+       when deleting or stripping.
        (gnus-mime-buttonize-attachments-in-header): Make header attachment
        buttons identical to the ones in the article body so as to work deleting
        and stripping.
index 9ecfd47..b854716 100644 (file)
@@ -5361,7 +5361,10 @@ Compressed files like .gz and .bz2 are decompressed."
                                                              'gnus-data))))
        (setq b btn))
       (if (and (not arg) (mm-handle-undisplayer handle))
-         (mm-remove-part handle)
+         (progn
+           (setq b (copy-marker b)
+                 btn (copy-marker btn))
+           (mm-remove-part handle))
        (cond
         ((not arg) nil)
         ((numberp arg)
@@ -5375,6 +5378,9 @@ Compressed files like .gz and .bz2 are decompressed."
          (forward-line 1))
        (mm-display-inline handle))
       ;; Toggle the button appearance between `[button]...' and `[button]'.
+      (when (markerp btn)
+       (setq btn (prog1 (marker-position btn)
+                   (set-marker btn nil))))
       (goto-char btn)
       (let ((displayed-p (mm-handle-displayed-p handle)))
        (gnus-insert-mime-button handle (get-text-property btn 'gnus-part)
@@ -5410,6 +5416,9 @@ Compressed files like .gz and .bz2 are decompressed."
                   '((gnus-treat-highlight-headers
                      gnus-article-highlight-headers))))
              (gnus-treat-article 'head)))))
+      (when (markerp b)
+       (setq b (prog1 (marker-position b)
+                 (set-marker b nil))))
       (goto-char b))))
 
 (defun gnus-mime-set-charset-parameters (handle charset)
@@ -5732,7 +5741,8 @@ all parts."
                point (previous-single-property-change start 'gnus-data))
          (if (mm-handle-displayed-p handle)
              ;; This will remove the part.
-             (setq retval (mm-display-part handle))
+             (setq point (copy-marker point)
+                   retval (mm-display-part handle))
            (let ((part (or (and (mm-inlinable-p handle)
                                 (mm-inlined-p handle)
                                 t)
@@ -5763,6 +5773,9 @@ all parts."
                                            ,(point-max-marker)))))))
                    (part
                     (mm-display-inline handle))))))
+      (when (markerp point)
+       (setq point (prog1 (marker-position point)
+                     (set-marker point nil))))
       (goto-char point)
       ;; Toggle the button appearance between `[button]...' and `[button]'.
       (let ((displayed-p (mm-handle-displayed-p handle)))