sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit c267f5df934ef077d59aec0c5ad67c965b5ded74
parent 86db2c43393c9981291945ba810c53272849f0df
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date:   Sat, 10 Feb 2007 18:41:35 +0000

re-save edited drafts if the user doesn't want to discard them; leave them alone if unedited

git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@316 5c8cc53c-5e98-4d25-b20a-d8db53a31250

Diffstat:
M lib/sup/modes/edit-message-mode.rb | 7 +++----
M lib/sup/modes/resume-mode.rb | 22 +++++++++++++---------
2 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/lib/sup/modes/edit-message-mode.rb b/lib/sup/modes/edit-message-mode.rb
@@ -9,6 +9,7 @@ class EditMessageMode < LineCursorMode
   NON_EDITABLE_HEADERS = %w(Message-Id Date)
 
   attr_reader :status
+  bool_reader :edited
 
   register_keymap do |k|
     k.add :send_message, "Send message", 'y'
@@ -42,7 +43,7 @@ class EditMessageMode < LineCursorMode
   end
 
   def killable?
-    !@edited || BufferManager.ask_yes_or_no("Discard message?")
+    !edited? || BufferManager.ask_yes_or_no("Discard message?")
   end
 
 protected
@@ -105,7 +106,7 @@ protected
   end
 
   def send_message
-    return false unless @edited || BufferManager.ask_yes_or_no("Message unedited. Really send?")
+    return unless edited? || BufferManager.ask_yes_or_no("Message unedited. Really send?")
 
     raise "no message id!" unless header["Message-Id"]
     date = Time.now
@@ -124,14 +125,12 @@ protected
 
     BufferManager.kill_buffer buffer
     BufferManager.flash "Message sent!"
-    true
   end
 
   def save_as_draft
     DraftManager.write_draft { |f| write_message f, false }
     BufferManager.kill_buffer buffer
     BufferManager.flash "Saved for later editing."
-    true
   end
 
   def sig_lines
diff --git a/lib/sup/modes/resume-mode.rb b/lib/sup/modes/resume-mode.rb
@@ -12,18 +12,22 @@ class ResumeMode < ComposeMode
   end
 
   def killable?
-    unless @safe
-      case BufferManager.ask_yes_or_no "Discard draft?"
-      when true
+    return true if @safe
+
+    case BufferManager.ask_yes_or_no "Discard draft?"
+    when true
+      DraftManager.discard @id
+      BufferManager.flash "Draft discarded."
+      true
+    when false
+      if edited?
+        DraftManager.write_draft { |f| write_message f, false }
         DraftManager.discard @id
-        BufferManager.flash "Draft discarded."
-        true
-      when false
         BufferManager.flash "Draft saved."
-        true
-      else
-        false
       end
+      true
+    else
+      false
     end
   end