From: Katsumi Yamaoka Date: Wed, 30 Apr 2014 04:05:27 +0000 (+0000) Subject: lisp/gnus/gnus-art.el (gnus-mm-display-part): Bugfix for the 2014-03-23 change X-Git-Tag: emacs-25.0.90~2640^2~175 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=853095568a0d692ee43ab4dc06537dbb46901d57;p=emacs.git lisp/gnus/gnus-art.el (gnus-mm-display-part): Bugfix for the 2014-03-23 change --- diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index f766dd539cf..7d880016ad7 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,8 @@ +2014-04-30 Katsumi Yamaoka + + * gnus-art.el (gnus-mm-display-part): Don't move point while toggling + a part; redisplay a button (enbugged in 2014-02-05). + 2014-04-27 Teodor Zlatanov * auth-source.el (auth-source-search, auth-source-search-backends): diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 0d68c5442f9..ef50a0064ae 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -5635,43 +5635,53 @@ all parts." "Display HANDLE and fix MIME button." (let ((id (get-text-property (point) 'gnus-part)) (point (point)) - (inhibit-read-only t)) - (forward-line 1) - (prog1 - (let ((window (selected-window)) - (mail-parse-charset gnus-newsgroup-charset) - (mail-parse-ignored-charsets - (if (gnus-buffer-live-p gnus-summary-buffer) - (with-current-buffer gnus-summary-buffer - gnus-newsgroup-ignored-charsets) - nil))) - (save-excursion - (unwind-protect - (let ((win (gnus-get-buffer-window (current-buffer) t)) - (beg (point))) - (when win - (select-window win)) - (goto-char point) - (forward-line) - (if (mm-handle-displayed-p handle) - ;; This will remove the part. - (mm-display-part handle) - (save-window-excursion - (save-restriction - (narrow-to-region (point) - (if (eobp) (point) (1+ (point)))) - (gnus-bind-safe-url-regexp (mm-display-part handle)) - ;; We narrow to the part itself and - ;; then call the treatment functions. - (goto-char (point-min)) - (forward-line 1) - (narrow-to-region (point) (point-max)) - (gnus-treat-article - nil id - (gnus-article-mime-total-parts) - (mm-handle-media-type handle)))))) - (if (window-live-p window) - (select-window window)))))))) + (inhibit-read-only t) + (window (selected-window)) + (mail-parse-charset gnus-newsgroup-charset) + (mail-parse-ignored-charsets + (if (gnus-buffer-live-p gnus-summary-buffer) + (with-current-buffer gnus-summary-buffer + gnus-newsgroup-ignored-charsets) + nil)) + retval) + (unwind-protect + (progn + (let ((win (gnus-get-buffer-window (current-buffer) t))) + (when win + (select-window win) + (goto-char point))) + (forward-line) + (if (mm-handle-displayed-p handle) + ;; This will remove the part. + (setq retval (mm-display-part handle)) + (save-window-excursion + (save-restriction + ;; FIXME: nothing is displayed in the article buffer + ;; while prompting a user for a file name. + (narrow-to-region (point) + (if (eobp) (point) (1+ (point)))) + (gnus-bind-safe-url-regexp + (setq retval (mm-display-part handle))) + ;; We narrow to the part itself and + ;; then call the treatment functions. + (goto-char (point-min)) + (forward-line 1) + (narrow-to-region (point) (point-max)) + (gnus-treat-article + nil id + (gnus-article-mime-total-parts) + (mm-handle-media-type handle)))))) + (if (window-live-p window) + (select-window window)) + (goto-char point) + ;; Toggle the button appearance between `[button]...' and `[button]'. + (let ((end (next-single-property-change point 'gnus-data))) + (delete-region (previous-single-property-change end 'gnus-data) end)) + (gnus-insert-mime-button + handle id (list (mm-handle-displayed-p handle))) + (delete-char -1) + (goto-char point)) + retval)) (defun gnus-article-goto-part (n) "Go to MIME part N."