[MERGE] Remove the temporary elisp file created for attachments by EmacsMail.

Christophe TROESTLER Christophe.Troestler+bzr at umh.ac.be
Sat Jun 21 17:05:16 BST 2008


Hi,

Following the recent discussion about "bzr send", I decided to give it
a try.  I encountered the following problems.

1) My mailer is "Mew", an Emacs package, and "bzr help send" did not
mention that one can use mail_client=emacsclient in
~/.bazaar/bazaar.conf in order to use the default Emacs client.

2) The method _prepare_send_function in EmacsMail did not have a
mew-user-agent case.  It also failed because not all mail packages
define the function mail-text.

3) The command arguments for emacsclient did not properly escape the
"To" and "Subject" fields when they were containing double quotes.

4) The temporary elisp file was not removed (as noted in a FIXME in
the function _prepare_send_function).

The attached bundle (created with "bzr send http://bazaar-vcs.org/bzr/bzr.dev/
--mail-to=bazaar at lists.canonical.com") corrects all 4 problems above.

May you please consider including it (or something like it) in bzr ?

Best regards,
ChriS
-------------- next part --------------
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: christophe.troestler at umh.ac.be-20080621155000-\
#   noms4eiymhpqqiqv
# target_branch: http://bazaar-vcs.org/bzr/bzr.dev/
# testament_sha1: cf7d2d4eef67198ceab07b2827855dc4a25c8f92
# timestamp: 2008-06-21 17:52:20 +0200
# base_revision_id: pqm at pqm.ubuntu.com-20080620010918-64z4xylh1ap5hgyf
# 
# Begin patch
=== modified file 'bzrlib/builtins.py'
--- bzrlib/builtins.py	2008-06-17 03:55:49 +0000
+++ bzrlib/builtins.py	2008-06-21 12:52:33 +0000
@@ -4167,8 +4167,9 @@
     
     To use a specific mail program, set the mail_client configuration option.
     (For Thunderbird 1.5, this works around some bugs.)  Supported values for
-    specific clients are "evolution", "kmail", "mutt", and "thunderbird";
-    generic options are "default", "editor", "mapi", and "xdg-email".
+    specific clients are "evolution", "emacsclient", "kmail", "mutt", and
+    "thunderbird"; generic options are "default", "editor", "mapi", and
+    "xdg-email".
 
     If mail is being sent, a to address is required.  This can be supplied
     either on the commandline, by setting the submit_to configuration

=== modified file 'bzrlib/mail_client.py'
--- bzrlib/mail_client.py	2008-04-13 11:48:00 +0000
+++ bzrlib/mail_client.py	2008-06-21 15:50:00 +0000
@@ -341,16 +341,24 @@
         """
 
         _defun = r"""(defun bzr-add-mime-att (file)
-  "Attach FILe to a mail buffer as a MIME attachment."
+  "Attach FILE to a mail buffer as a MIME attachment."
   (let ((agent mail-user-agent))
-    (mail-text)
-    (newline)
     (if (and file (file-exists-p file))
         (cond
          ((eq agent 'sendmail-user-agent)
-          (etach-attach file))
+          (progn
+	    (mail-text)
+	    (newline)
+	    (etach-attach file)))
          ((or (eq agent 'message-user-agent)(eq agent 'gnus-user-agent))
-          (mml-attach-file file "text/x-patch" "BZR merge" "attachment"))
+          (progn
+	    (mail-text)
+	    (newline)
+	    (mml-attach-file file "text/x-patch" "BZR merge" "attachment")))
+	 ((eq agent 'mew-user-agent)
+	  (progn
+	    (mew-draft-prepare-attachments)
+	    (mew-attach-link file (file-name-nondirectory file))))
          (t
           (message "Unhandled MUA")))
       (error "File %s does not exist." file))))
@@ -371,9 +379,10 @@
         _subject = "nil"
 
         if to is not None:
-            _to = ("\"%s\"" % self._encode_safe(to))
+            _to = ("\"%s\"" % self._encode_safe(to).replace('"', '\\"'))
         if subject is not None:
-            _subject = ("\"%s\"" % self._encode_safe(subject))
+            _subject = ("\"%s\"" %
+                        self._encode_safe(subject).replace('"', '\\"'))
 
         # Funcall the default mail composition function
         # This will work with any mail mode including default mail-mode
@@ -385,11 +394,14 @@
         # Try to attach a MIME attachment using our wrapper function
         if attach_path is not None:
             # Do not create a file if there is no attachment
-            lmmform = '(load "%s")' % self._prepare_send_function()
+            elisp = self._prepare_send_function()
+            lmmform = '(load "%s")' % elisp
             mmform  = '(bzr-add-mime-att "%s")' % \
                 self._encode_path(attach_path, 'attachment')
+            rmform = '(delete-file "%s")' % elisp
             commandline.append(lmmform)
             commandline.append(mmform)
+            commandline.append(rmform)
 
         return commandline
 

# Begin bundle
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


More information about the bazaar mailing list