]> git.notmuchmail.org Git - sup/commitdiff
re-save edited drafts if the user doesn't want to discard them; leave them alone...
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Sat, 10 Feb 2007 18:41:35 +0000 (18:41 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Sat, 10 Feb 2007 18:41:35 +0000 (18:41 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@316 5c8cc53c-5e98-4d25-b20a-d8db53a31250

lib/sup/modes/edit-message-mode.rb
lib/sup/modes/resume-mode.rb

index 6ad1097b3eabd30c2816c776e54f7e8b4ad67772..c0050ae3385e84d159c50a2b42297b2b95109f67 100644 (file)
@@ -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
index 923eb2cb6ad2e44ae66b1a81313c31dce92e2ef3..d9292bff79c2a03dc90d6f63814125bb2a1d9e10 100644 (file)
@@ -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