changeset 104780:d44c1d7690e7

Merge from gnus--devo--0 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1632
author Miles Bader <miles@gnu.org>
date Tue, 01 Sep 2009 07:59:50 +0000
parents e921f11e0611
children fba3984b43f5
files lisp/gnus/ChangeLog lisp/gnus/mml.el
diffstat 2 files changed, 51 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Tue Sep 01 07:46:01 2009 +0000
+++ b/lisp/gnus/ChangeLog	Tue Sep 01 07:59:50 2009 +0000
@@ -3,6 +3,11 @@
 	* gnus-salt.el (gnus-pick-mouse-pick-region): Use forward-line rather
 	than goto-line.
 
+2009-08-31  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* mml.el (mml-attach-file, mml-attach-buffer, mml-attach-external):
+	Don't move point if the command is invoked inside the message header.
+
 2009-08-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* spam.el (spam-ifile-path, spam-bogofilter-path, spam-sa-learn-path)
--- a/lisp/gnus/mml.el	Tue Sep 01 07:46:01 2009 +0000
+++ b/lisp/gnus/mml.el	Tue Sep 01 07:59:50 2009 +0000
@@ -1292,14 +1292,24 @@
 	  (description (mml-minibuffer-read-description))
 	  (disposition (mml-minibuffer-read-disposition type nil file)))
      (list file type description disposition)))
-  (unless (message-in-body-p) (goto-char (point-max)))
-  (mml-insert-empty-tag 'part
-			'type type
-			;; icicles redefines read-file-name and returns a
-			;; string w/ text properties :-/
-			'filename (mm-substring-no-properties file)
-			'disposition (or disposition "attachment")
-			'description description))
+  ;; Don't move point if this command is invoked inside the message header.
+  (let ((head (unless (message-in-body-p)
+		(prog1
+		    (point)
+		  (goto-char (point-max))))))
+    (mml-insert-empty-tag 'part
+			  'type type
+			  ;; icicles redefines read-file-name and returns a
+			  ;; string w/ text properties :-/
+			  'filename (mm-substring-no-properties file)
+			  'disposition (or disposition "attachment")
+			  'description description)
+    (when head
+      (unless (prog1
+		  (pos-visible-in-window-p)
+		(goto-char head))
+	(message "The file \"%s\" has been attached at the end of the message"
+		 (file-name-nondirectory file))))))
 
 (defun mml-dnd-attach-file (uri action)
   "Attach a drag and drop file.
@@ -1335,10 +1345,21 @@
 	  (description (mml-minibuffer-read-description))
 	  (disposition (mml-minibuffer-read-disposition type nil)))
      (list buffer type description disposition)))
-  (unless (message-in-body-p) (goto-char (point-max)))
-  (mml-insert-empty-tag 'part 'type type 'buffer buffer
-			'disposition disposition
-			'description description))
+  ;; Don't move point if this command is invoked inside the message header.
+  (let ((head (unless (message-in-body-p)
+		(prog1
+		    (point)
+		  (goto-char (point-max))))))
+    (mml-insert-empty-tag 'part 'type type 'buffer buffer
+			  'disposition disposition
+			  'description description)
+    (when head
+      (unless (prog1
+		  (pos-visible-in-window-p)
+		(goto-char head))
+	(message
+	 "The buffer \"%s\" has been attached at the end of the message"
+	 buffer)))))
 
 (defun mml-attach-external (file &optional type description)
   "Attach an external file into the buffer.
@@ -1349,9 +1370,19 @@
 	  (type (mml-minibuffer-read-type file))
 	  (description (mml-minibuffer-read-description)))
      (list file type description)))
-  (unless (message-in-body-p) (goto-char (point-max)))
-  (mml-insert-empty-tag 'external 'type type 'name file
-			'disposition "attachment" 'description description))
+  ;; Don't move point if this command is invoked inside the message header.
+  (let ((head (unless (message-in-body-p)
+		(prog1
+		    (point)
+		  (goto-char (point-max))))))
+    (mml-insert-empty-tag 'external 'type type 'name file
+			  'disposition "attachment" 'description description)
+    (when head
+      (unless (prog1
+		  (pos-visible-in-window-p)
+		(goto-char head))
+	(message "The file \"%s\" has been attached at the end of the message"
+		 (file-name-nondirectory file))))))
 
 (defun mml-insert-multipart (&optional type)
   (interactive (list (completing-read "Multipart type (default mixed): "