[gnus git] branch master updated: m0-5-134-gbf39b90 =1= message-in-body-p should not alter anything; Handle Mail mode correctly. Some code cleanup

Katsumi Yamaoka <[email protected]>
Newsgroups gmane.emacs.gnus.cvs
Message-ID <[email protected]>
       via  bf39b90afb63d0e218f98506e864478b47874735 (commit)
      from  dee0c694f05b79f8ee3a20ec30064c829288ef44 (commit)


- Log -----------------------------------------------------------------
commit bf39b90afb63d0e218f98506e864478b47874735
Author: Richard Stallman <[email protected]>
Date:   Tue Sep 18 00:53:46 2012 +0000

    message-in-body-p should not alter anything;
    Handle Mail mode correctly.  Some code cleanup

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 6ea7776..888f203 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,14 @@
+2012-09-17  Richard Stallman  <[email protected]>
+
+	* message.el (message-in-body-p): Don't set mark or modify buffer.
+
+	* mml.el (mml-attach-file): Doc fix.
+	(mml-attach-external, mml-attach-buffer, mml-attach-file):
+	Set mail-encode-mml when in Mail mode.
+	Simplify code to set HEAD and move back to HEAD.
+	(mml-insert-multipart, mml-insert-part):
+	Set mail-encode-mml when in Mail mode.
+
 2012-09-13  Katsumi Yamaoka  <[email protected]>
 
 	* gnus-util.el (gnus-timer--function): New function.
diff --git a/lisp/message.el b/lisp/message.el
index 12002b6..9593624 100644
--- a/lisp/message.el
+++ b/lisp/message.el
@@ -3204,8 +3204,12 @@ M-RET    `message-newline-and-reformat' (break the line and reformat)."
 
 (defun message-in-body-p ()
   "Return t if point is in the message body."
-  (let ((body (save-excursion (message-goto-body))))
-    (>= (point) body)))
+  (>= (point)
+      (save-excursion
+	(goto-char (point-min))
+	(or (search-forward (concat "\n" mail-header-separator "\n") nil t)
+	    (search-forward-regexp "[^:]+:\\([^\n]\\|\n[ \t]\\)+\n\n" nil t))
+	(point))))
 
 (defun message-goto-eoh ()
   "Move point to the end of the headers."
diff --git a/lisp/mml.el b/lisp/mml.el
index cc1aedf..a72962a 100644
--- a/lisp/mml.el
+++ b/lisp/mml.el
@@ -1305,7 +1305,8 @@ to specify options."
 (defun mml-attach-file (file &optional type description disposition)
   "Attach a file to the outgoing MIME message.
 The file is not inserted or encoded until you send the message with
-`\\[message-send-and-exit]' or `\\[message-send]'.
+`\\[message-send-and-exit]' or `\\[message-send]' in Message mode,
+or `\\[mail-send-and-exit]' or `\\[mail-send]' in Mail mode.
 
 FILE is the name of the file to attach.  TYPE is its
 content-type, a string of the form \"type/subtype\".  DESCRIPTION
@@ -1319,11 +1320,9 @@ body) or \"attachment\" (separate from the body)."
 	  (description (mml-minibuffer-read-description))
 	  (disposition (mml-minibuffer-read-disposition type nil file)))
      (list file type description disposition)))
-  ;; 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))))))
+  ;; If in the message header, attach at the end and leave point unchanged.
+  (let ((head (unless (message-in-body-p) (point))))
+    (if head (goto-char (point-max)))
     (mml-insert-empty-tag 'part
 			  'type type
 			  ;; icicles redefines read-file-name and returns a
@@ -1331,12 +1330,15 @@ body) or \"attachment\" (separate from the body)."
 			  'filename (mm-substring-no-properties file)
 			  'disposition (or disposition "attachment")
 			  'description description)
+    ;; When using Mail mode, make sure it does the mime encoding
+    ;; when you send the message.
+    (or (eq mail-user-agent 'message-user-agent)
+	(setq mail-encode-mml t))
     (when head
-      (unless (prog1
-		  (pos-visible-in-window-p)
-		(goto-char head))
+      (unless (pos-visible-in-window-p)
 	(message "The file \"%s\" has been attached at the end of the message"
-		 (file-name-nondirectory file))))))
+		 (file-name-nondirectory file)))
+      (goto-char head))))
 
 (defun mml-dnd-attach-file (uri action)
   "Attach a drag and drop file.
@@ -1372,21 +1374,22 @@ BUFFER is the name of the buffer to attach.  See
 	  (description (mml-minibuffer-read-description))
 	  (disposition (mml-minibuffer-read-disposition type nil)))
      (list buffer type description disposition)))
-  ;; 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))))))
+  ;; If in the message header, attach at the end and leave point unchanged.
+  (let ((head (unless (message-in-body-p) (point))))
+    (if head (goto-char (point-max)))
     (mml-insert-empty-tag 'part 'type type 'buffer buffer
 			  'disposition disposition
 			  'description description)
+    ;; When using Mail mode, make sure it does the mime encoding
+    ;; when you send the message.
+    (or (eq mail-user-agent 'message-user-agent)
+	(setq mail-encode-mml t))
     (when head
-      (unless (prog1
-		  (pos-visible-in-window-p)
-		(goto-char head))
+      (unless (pos-visible-in-window-p)
 	(message
 	 "The buffer \"%s\" has been attached at the end of the message"
-	 buffer)))))
+	 buffer))
+      (goto-char head))))
 
 (defun mml-attach-external (file &optional type description)
   "Attach an external file into the buffer.
@@ -1397,19 +1400,20 @@ TYPE is the MIME type to use."
 	  (type (mml-minibuffer-read-type file))
 	  (description (mml-minibuffer-read-description)))
      (list file type 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))))))
+  ;; If in the message header, attach at the end and leave point unchanged.
+  (let ((head (unless (message-in-body-p) (point))))
+    (if head (goto-char (point-max)))
     (mml-insert-empty-tag 'external 'type type 'name file
 			  'disposition "attachment" 'description description)
+    ;; When using Mail mode, make sure it does the mime encoding
+    ;; when you send the message.
+    (or (eq mail-user-agent 'message-user-agent)
+	(setq mail-encode-mml t))
     (when head
-      (unless (prog1
-		  (pos-visible-in-window-p)
-		(goto-char head))
+      (unless (pos-visible-in-window-p)
 	(message "The file \"%s\" has been attached at the end of the message"
-		 (file-name-nondirectory file))))))
+		 (file-name-nondirectory file)))
+      (goto-char head))))
 
 (defun mml-insert-multipart (&optional type)
   (interactive (if (message-in-body-p)
@@ -1422,12 +1426,20 @@ TYPE is the MIME type to use."
   (or type
       (setq type "mixed"))
   (mml-insert-empty-tag "multipart" 'type type)
+  ;; When using Mail mode, make sure it does the mime encoding
+  ;; when you send the message.
+  (or (eq mail-user-agent 'message-user-agent)
+      (setq mail-encode-mml t))
   (forward-line -1))
 
 (defun mml-insert-part (&optional type)
   (interactive (if (message-in-body-p)
 		   (list (mml-minibuffer-read-type ""))
 		 (error "Use this command in the message body")))
+  ;; When using Mail mode, make sure it does the mime encoding
+  ;; when you send the message.
+  (or (eq mail-user-agent 'message-user-agent)
+      (setq mail-encode-mml t))
   (mml-insert-tag 'part 'type type 'disposition "inline"))
 
 (declare-function message-subscribed-p "message" ())

-----------------------------------------------------------------------
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we listed those
revisions in full, above.

Summary of changes:
 lisp/ChangeLog  |   11 +++++++++
 lisp/message.el |    8 +++++-
 lisp/mml.el     |   68 ++++++++++++++++++++++++++++++++----------------------
 3 files changed, 57 insertions(+), 30 deletions(-)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnus Project".

The branch, master has been updated


hooks/post-receive
-- 
Gnus Project
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.