emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r117032: lisp/gnus/gnus-art.el (gnus-mm-display-part


From: Katsumi Yamaoka
Subject: [Emacs-diffs] trunk r117032: lisp/gnus/gnus-art.el (gnus-mm-display-part): Bugfix for the 2014-03-23 change
Date: Wed, 30 Apr 2014 04:05:33 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 117032
revision-id: address@hidden
parent: address@hidden
committer: Katsumi Yamaoka <address@hidden>
branch nick: trunk
timestamp: Wed 2014-04-30 04:05:27 +0000
message:
  lisp/gnus/gnus-art.el (gnus-mm-display-part): Bugfix for the 2014-03-23 change
modified:
  lisp/gnus/ChangeLog            changelog-20091113204419-o5vbwnq5f7feedwu-1433
  lisp/gnus/gnus-art.el          gnusart.el-20091113204419-o5vbwnq5f7feedwu-1108
=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog       2014-04-27 22:08:43 +0000
+++ b/lisp/gnus/ChangeLog       2014-04-30 04:05:27 +0000
@@ -1,3 +1,8 @@
+2014-04-30  Katsumi Yamaoka  <address@hidden>
+
+       * 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  <address@hidden>
 
        * auth-source.el (auth-source-search, auth-source-search-backends):

=== modified file 'lisp/gnus/gnus-art.el'
--- a/lisp/gnus/gnus-art.el     2014-04-28 06:30:39 +0000
+++ b/lisp/gnus/gnus-art.el     2014-04-30 04:05:27 +0000
@@ -5635,43 +5635,53 @@
   "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."


reply via email to

[Prev in Thread] Current Thread [Next in Thread]