sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 35538e7f1236c303fc475c2afd47f6d45eb601cd
parent 7eaddc742be34c11d84903dd6da4068d77ad45a8
Author: Gaute Hope <eg@gaute.vetsj.com>
Date:   Mon, 31 Mar 2014 13:19:50 +0200

async: option for always async

Diffstat:
M bin/sup | 4 ++--
M lib/sup.rb | 3 ++-
M lib/sup/modes/compose_mode.rb | 4 ++--
M lib/sup/modes/contact_list_mode.rb | 2 +-
M lib/sup/modes/edit_message_mode.rb | 22 +++++++++++++++++++---
M lib/sup/modes/forward_mode.rb | 2 +-
M lib/sup/modes/thread_view_mode.rb | 4 ++--
M lib/sup/person.rb | 2 +-
8 files changed, 30 insertions(+), 13 deletions(-)
diff --git a/bin/sup b/bin/sup
@@ -223,7 +223,7 @@ begin
     to = Person.from_address_list $opts[:compose]
     mode = ComposeMode.new :to => to, :subj => $opts[:subject]
     BufferManager.spawn "New Message", mode
-    mode.edit_message
+    mode.default_edit_message
   end
 
   unless $opts[:no_threads]
@@ -337,7 +337,7 @@ begin
         Index.each_id_by_date(:label => :draft) { |mid, builder| m = builder.call }
         r = ResumeMode.new(m)
         BufferManager.spawn "Edit message", r
-        r.edit_message
+        r.default_edit_message
       else
         b, new = BufferManager.spawn_unless_exists("All drafts") { LabelSearchResultsMode.new [:draft] }
         b.mode.load_threads :num => b.content_height if new
diff --git a/lib/sup.rb b/lib/sup.rb
@@ -333,7 +333,8 @@ EOM
       :col_jump => 2,
       :stem_language => "english",
       :sync_back_to_maildir => false,
-      :continuous_scroll => false
+      :continuous_scroll => false,
+      :always_edit_async => false,
     }
     if File.exists? filename
       config = Redwood::load_yaml_obj filename
diff --git a/lib/sup/modes/compose_mode.rb b/lib/sup/modes/compose_mode.rb
@@ -16,7 +16,7 @@ class ComposeMode < EditMessageMode
     super :header => header, :body => (opts[:body] || [])
   end
 
-  def edit_message
+  def default_edit_message
     edited = super
     BufferManager.kill_buffer self.buffer unless edited
     edited
@@ -31,7 +31,7 @@ class ComposeMode < EditMessageMode
 
     mode = ComposeMode.new :from => from, :to => to, :cc => cc, :bcc => bcc, :subj => subj
     BufferManager.spawn "New Message", mode
-    mode.edit_message
+    mode.default_edit_message
   end
 end
 
diff --git a/lib/sup/modes/contact_list_mode.rb b/lib/sup/modes/contact_list_mode.rb
@@ -71,7 +71,7 @@ class ContactListMode < LineCursorMode
     when :regular
       mode = ComposeMode.new :to => people
       BufferManager.spawn "new message", mode
-      mode.edit_message
+      mode.default_edit_message
     end
   end
 
diff --git a/lib/sup/modes/edit_message_mode.rb b/lib/sup/modes/edit_message_mode.rb
@@ -79,8 +79,8 @@ EOS
     k.add :edit_to, "Edit To:", 't'
     k.add :edit_cc, "Edit Cc:", 'c'
     k.add :edit_subject, "Edit Subject", 's'
-    k.add :edit_message, "Edit message", :enter
-    k.add :edit_message_async, "Edit message asynchronously", 'E'
+    k.add :default_edit_message, "Edit message (default)", :enter
+    k.add :alternate_edit_message, "Edit message (alternate, asynchronously)", 'E'
     k.add :save_as_draft, "Save as draft", 'P'
     k.add :attach_file, "Attach a file", 'a'
     k.add :delete_attachment, "Delete an attachment", 'd'
@@ -182,7 +182,7 @@ EOS
     if lines > curpos
       return
     elsif (curpos - lines) >= @header_lines.length
-      edit_message
+      default_edit_message
     else
       edit_field @header_lines[curpos - lines]
     end
@@ -226,6 +226,22 @@ EOS
     end
   end
 
+  def default_edit_message
+    if $config[:always_edit_async]
+      return edit_message_async
+    else
+      return edit_message
+    end
+  end
+
+  def alternate_edit_message
+    if $config[:always_edit_async]
+      return edit_message
+    else
+      return edit_message_async
+    end
+  end
+
   def edit_message
     old_from = @header["From"] if @account_selector
 
diff --git a/lib/sup/modes/forward_mode.rb b/lib/sup/modes/forward_mode.rb
@@ -59,7 +59,7 @@ class ForwardMode < EditMessageMode
       end
 
     BufferManager.spawn title, mode
-    mode.edit_message
+    mode.default_edit_message
   end
 
 protected
diff --git a/lib/sup/modes/thread_view_mode.rb b/lib/sup/modes/thread_view_mode.rb
@@ -352,7 +352,7 @@ EOS
     m = @message_lines[curpos] or return
     mode = ComposeMode.new(:body => m.quotable_body_lines, :to => m.to, :cc => m.cc, :subj => m.subj, :bcc => m.bcc, :refs => m.refs, :replytos => m.replytos)
     BufferManager.spawn "edit as new", mode
-    mode.edit_message
+    mode.default_edit_message
   end
 
   def save_to_disk
@@ -421,7 +421,7 @@ EOS
       mode = ResumeMode.new m
       BufferManager.spawn "Edit message", mode
       BufferManager.kill_buffer self.buffer
-      mode.edit_message
+      mode.default_edit_message
     else
       BufferManager.flash "Not a draft message!"
     end
diff --git a/lib/sup/person.rb b/lib/sup/person.rb
@@ -119,7 +119,7 @@ class Person
 
   def self.from_address_list ss
     return [] if ss.nil?
-    ss.split_on_commas.map { |s| self.from_address s }
+    ss.dup.split_on_commas.map { |s| self.from_address s }
   end
 
   ## see comments in self.from_address