sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 3bfbf018a6d5f873ac1ec4cac93520a5bd1ebbc5
parent eb032a4914984694fbec4cafde63d60ba2693026
Author: Rich Lane <rlane@club.cc.cmu.edu>
Date:   Thu,  6 May 2010 09:52:10 -0700

Merge branch 'master' into next

Diffstat:
M lib/sup.rb | 1 +
M lib/sup/buffer.rb | 7 +++++++
M lib/sup/modes/compose-mode.rb | 3 ++-
3 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/lib/sup.rb b/lib/sup.rb
@@ -254,6 +254,7 @@ else
     :editor => ENV["EDITOR"] || "/usr/bin/vim -f -c 'setlocal spell spelllang=en_us' -c 'set filetype=mail'",
     :thread_by_subject => false,
     :edit_signature => false,
+    :ask_for_from => false,
     :ask_for_to => true,
     :ask_for_cc => true,
     :ask_for_bcc => false,
diff --git a/lib/sup/buffer.rb b/lib/sup/buffer.rb
@@ -559,6 +559,13 @@ EOS
     end
   end
 
+  def ask_for_account domain, question
+    default = AccountManager.default_account.email
+    completions = AccountManager.user_emails
+    answer = BufferManager.ask_many_emails_with_completions domain, question, completions, default
+    AccountManager.account_for Person.from_address(answer).email if answer
+  end
+
   ## for simplicitly, we always place the question at the very bottom of the
   ## screen
   def ask domain, question, default=nil, &block
diff --git a/lib/sup/modes/compose-mode.rb b/lib/sup/modes/compose-mode.rb
@@ -21,12 +21,13 @@ class ComposeMode < EditMessageMode
   end
 
   def self.spawn_nicely opts={}
+    from = opts[:from] || (BufferManager.ask_for_account(:account, "From: ") or return if $config[:ask_for_from])
     to = opts[:to] || (BufferManager.ask_for_contacts(:people, "To: ", [opts[:to_default]]) or return if ($config[:ask_for_to] != false))
     cc = opts[:cc] || (BufferManager.ask_for_contacts(:people, "Cc: ") or return if $config[:ask_for_cc])
     bcc = opts[:bcc] || (BufferManager.ask_for_contacts(:people, "Bcc: ") or return if $config[:ask_for_bcc])
     subj = opts[:subj] || (BufferManager.ask(:subject, "Subject: ") or return if $config[:ask_for_subject])
     
-    mode = ComposeMode.new :from => opts[:from], :to => to, :cc => cc, :bcc => bcc, :subj => subj
+    mode = ComposeMode.new :from => from, :to => to, :cc => cc, :bcc => bcc, :subj => subj
     BufferManager.spawn "New Message", mode
     mode.edit_message
   end