[MERGE] EmacsMail improvements
Christophe TROESTLER
Christophe.Troestler at umh.ac.be
Tue Jul 1 11:09:54 BST 2008
Hi,
The following patch slighly improves on the previous one by adding a
content-description and moving to the beginning of the message for Mew.
Regards,
Christophe
-------------- next part --------------
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: christophe.troestler at umh.ac.be-20080701095634-\
# 4wsbozl23ms6v0bb
# target_branch: ../bzr.dev/
# testament_sha1: 0d64ee6016c41d2c21d37ae4db0173492daa159c
# timestamp: 2008-07-01 11:58:41 +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-30 09:34:02 +0000
@@ -4168,7 +4168,8 @@
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".
+ generic options are "default", "editor", "emacsclient", "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-07-01 09:56:34 +0000
@@ -328,31 +328,40 @@
This temporary file will be loaded at runtime in
_get_compose_commandline function.
- FIXME: this function does not remove the file. That's a wanted
+ This function does not remove the file. That's a wanted
behaviour since _get_compose_commandline won't run the send
mail function directly but return the eligible command line.
Removing our temporary file here would prevent our sendmail
- function to work.
-
- A possible workaround could be to load the function here with
- emacsclient --eval '(load temp)' but this is not robust since
- emacs could have been stopped between here and the call to
- mail client.
+ function to work. (The file is deleted by some elisp code
+ after being read by Emacs.)
"""
_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)
+ (if (functionp 'etach-attach)
+ (etach-attach file)
+ (mail-attach-file file))))
((or (eq agent 'message-user-agent)(eq agent 'gnus-user-agent))
- (mml-attach-file file "text/x-patch" "BZR merge" "attachment"))
+ (progn
+ (mml-attach-file file "text/x-patch" "BZR merge" "inline")))
+ ((eq agent 'mew-user-agent)
+ (progn
+ (mew-draft-prepare-attachments)
+ (mew-attach-link file (file-name-nondirectory file))
+ (let* ((nums (mew-syntax-nums))
+ (syntax (mew-syntax-get-entry mew-encode-syntax nums)))
+ (mew-syntax-set-cd syntax "BZR merge")
+ (mew-encode-syntax-print mew-encode-syntax))
+ (mew-header-goto-body)))
(t
- (message "Unhandled MUA")))
+ (message "Unhandled MUA, report it on bazaar at lists.canonical.com")))
(error "File %s does not exist." file))))
"""
@@ -371,9 +380,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 +395,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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
EdUvR4I8IXSP/xdyRThQkKR8x+Q=
More information about the bazaar
mailing list