From 48598095b3b777dfaa80fd85ba8246de6e18b3cd Mon Sep 17 00:00:00 2001 From: Katsumi Yamaoka Date: Thu, 26 Feb 2015 06:39:11 +0000 Subject: [PATCH] Fix point motion when removing displayed MIME part * gnus-art.el (gnus-mime-inline-part, gnus-mm-display-part): Fix point motion when removing displayed MIME part. --- lisp/gnus/ChangeLog | 6 ++++-- lisp/gnus/gnus-art.el | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 454957ecbb5..af49782a035 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,7 +1,9 @@ 2015-02-26 Katsumi Yamaoka - * 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. diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index f88e7d5eec3..5de4b5829ce 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -5360,7 +5360,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) @@ -5374,6 +5377,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) @@ -5409,6 +5415,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) @@ -5731,7 +5740,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) @@ -5762,6 +5772,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))) -- 2.39.2