unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Ian Main <imain@stemwinder.org>
To: notmuch@notmuchmail.org
Subject: [PATCH] VIM: Better reply handling with multiple emails
Date: Thu,  2 Oct 2014 16:50:57 -0700	[thread overview]
Message-ID: <1412293857-31489-1-git-send-email-imain@stemwinder.org> (raw)

This patch fixes reply handling when using multiple emails.  This adds a
config check for other_email and uses that information when formulating
reply headers.  It will strip out your own email addresses from the
reply and set the From: to be an email of yours found in the original
message.

Note that this is built on top of the config change patch.

    Ian
---
 vim/notmuch.vim | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 52 insertions(+), 5 deletions(-)

diff --git a/vim/notmuch.vim b/vim/notmuch.vim
index b251af6..fbd0e21 100644
--- a/vim/notmuch.vim
+++ b/vim/notmuch.vim
@@ -467,6 +467,7 @@ ruby << EOF
 	end
 
 	$db_name = nil
+	$all_emails = []
 	$email = $email_name = $email_address = nil
 	$searches = []
 	$threads = []
@@ -485,8 +486,14 @@ ruby << EOF
 		$db_name = get_config_item('database.path')
 		$email_name = get_config_item('user.name')
 		$email_address = get_config_item('user.primary_email')
+		$secondary_email_addresses = get_config_item('user.primary_email')
 		$email_name = get_config_item('user.name')
 		$email = "%s <%s>" % [$email_name, $email_address]
+		other_emails = get_config_item('user.other_email')
+		$all_emails = other_emails.split("\n")
+		# Add the primary to this too as we use it for checking
+		# addresses when doing a reply
+		$all_emails.unshift($email_address)
 	end
 
 	def vim_puts(s)
@@ -562,14 +569,54 @@ ruby << EOF
 		end
 	end
 
+	def is_our_address(address)
+		$all_emails.each do |addy|
+			if address.to_s.index(addy) != nil
+				return addy
+			end
+		end
+		return nil
+	end
+
 	def open_reply(orig)
 		reply = orig.reply do |m|
-			# fix headers
-			if not m[:reply_to]
-				m.to = [orig[:from].to_s, orig[:to].to_s]
+			m.cc = []
+			email_addr = $email_address
+			# Append addresses to the new to: from the original from:
+			# so long as they are not ours.
+			if orig[:from]
+				orig[:from].each do |o|
+					if not is_our_address(o)
+						m.to << o
+					end
+				end
+			end
+			# This copies the cc list to the new email while
+			# stripping out our own addresses and sets the from:
+			# address to ours if it finds one.
+			if orig[:cc]
+				orig[:cc].each do |o|
+					if is_our_address(o)
+						email_addr = is_our_address(o)
+					else
+						m.cc << o
+					end
+				end
+			end
+			# This copies the to list to the new email while
+			# stripping out our own addresses and sets the from:
+			# address to ours if it finds one.
+			if orig[:to]
+				orig[:to].each do |o|
+					if is_our_address(o)
+						email_addr = is_our_address(o)
+					else
+						m.to << o
+					end
+				end
 			end
-			m.cc = orig[:cc]
-			m.from = $email
+			m.to = m[:reply_to] if m[:reply_to]
+			m.from = "#{$email_name} <#{email_addr}>"
 			m.charset = 'utf-8'
 		end
 
-- 
1.9.3

             reply	other threads:[~2014-10-02 23:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-02 23:50 Ian Main [this message]
2014-10-27 20:33 ` [PATCH v2] VIM: Better reply handling with multiple emails Ian Main
2014-10-27 20:35 ` [PATCH v3] " Ian Main

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1412293857-31489-1-git-send-email-imain@stemwinder.org \
    --to=imain@stemwinder.org \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).