]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new user option mml-attach-file-at-the-end
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 4 Nov 2021 05:09:08 +0000 (06:09 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 4 Nov 2021 05:09:08 +0000 (06:09 +0100)
* lisp/gnus/mml.el (mml-attach-file-at-the-end): New user option.
(mml-attach-file): Use it.

etc/NEWS
lisp/gnus/mml.el

index 48ce2e4fcff1557ef7ef82df1916e34b99cf0c58..8161c5b4c5cb0fe7071d5fbc27d56b9c8004d3d6 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -151,7 +151,14 @@ change the terminal used on a remote host.
 \f
 * Changes in Specialized Modes and Packages in Emacs 29.1
 
+** Message
+
+---
+*** New user option 'mml-attach-file-at-the-end'.
+If non-nil, 'C-c C-a' will put attached files at the end of the message.
+
 ** EIEIO
+
 +++
 *** 'slot-value' can now be used to read slots of 'cl-defstruct' objects
 
index 5f35e73cd7c98b4a5b566156dc38ecd27a9d73e3..079c1b5122546d7bab10f90eb6c853b5683bd67d 100644 (file)
@@ -1409,6 +1409,13 @@ to specify options."
   :version "22.1" ;; Gnus 5.10.9
   :group 'message)
 
+(defcustom mml-attach-file-at-the-end nil
+  "If non-nil, \\[mml-attach-file] attaches files at the end of the message.
+If nil, files are attached at point."
+  :type 'boolean
+  :version "29.1"
+  :group 'message)
+
 ;;;###autoload
 (defun mml-attach-file (file &optional type description disposition)
   "Attach a file to the outgoing MIME message.
@@ -1423,6 +1430,8 @@ specifies how the attachment is intended to be displayed.  It can
 be either \"inline\" (displayed automatically within the message
 body) or \"attachment\" (separate from the body).
 
+Also see the `mml-attach-file-at-the-end' variable.
+
 If given a prefix interactively, no prompting will be done for
 the TYPE, DESCRIPTION or DISPOSITION values.  Instead defaults
 will be computed and used."
@@ -1440,8 +1449,11 @@ will be computed and used."
                         (mml-minibuffer-read-disposition type nil file))))
      (list file type description disposition)))
   ;; 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)))
+  (let ((at-end (and (or (not (message-in-body-p))
+                         mml-attach-file-at-the-end)
+                     (point))))
+    (when at-end
+      (goto-char (point-max)))
     (mml-insert-empty-tag 'part
                          'type type
                          ;; icicles redefines read-file-name and returns a
@@ -1451,13 +1463,13 @@ will be computed and used."
                          '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 (eq mail-user-agent 'message-user-agent)
+      (setq mail-encode-mml t))
+    (when at-end
       (unless (pos-visible-in-window-p)
        (message "The file \"%s\" has been attached at the end of the message"
                 (file-name-nondirectory file)))
-      (goto-char head))))
+      (goto-char at-end))))
 
 (defun mml-dnd-attach-file (uri _action)
   "Attach a drag and drop file.