sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 8869d7f45399511379de84fedecbf4ed2104295f
parent f68139cdaae8c3790e63a2828d5cf25f79f2ad84
Author: William Morgan <wmorgan-sup@masanjin.net>
Date:   Thu,  9 Apr 2009 13:10:48 -0400

add unsaved? attribute to modes

This will be used for displaying a little '*' in buffer-list-mode.

Diffstat:
M lib/sup/mode.rb | 1 +
M lib/sup/modes/edit-message-mode.rb | 2 ++
M lib/sup/modes/resume-mode.rb | 2 ++
M lib/sup/modes/thread-index-mode.rb | 2 +-
4 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/lib/sup/mode.rb b/lib/sup/mode.rb
@@ -24,6 +24,7 @@ class Mode
   end
 
   def killable?; true; end
+  def unsaved?; false end
   def draw; end
   def focus; end
   def blur; end
diff --git a/lib/sup/modes/edit-message-mode.rb b/lib/sup/modes/edit-message-mode.rb
@@ -145,6 +145,8 @@ EOS
     !edited? || BufferManager.ask_yes_or_no("Discard message?")
   end
 
+  def unsaved?; edited? end
+
   def attach_file
     fn = BufferManager.ask_for_filename :attachment, "File name (enter for browser): "
     return unless fn
diff --git a/lib/sup/modes/resume-mode.rb b/lib/sup/modes/resume-mode.rb
@@ -11,6 +11,8 @@ class ResumeMode < EditMessageMode
     super :header => header, :body => body, :have_signature => true
   end
 
+  def unsaved?; !@safe end
+
   def killable?
     return true if @safe
 
diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
@@ -77,6 +77,7 @@ EOS
     end
   end
 
+  def unsaved?; dirty? end
   def lines; @text.length; end
   def [] i; @text[i]; end
   def contains_thread? t; @threads.include?(t) end
@@ -732,7 +733,6 @@ protected
       (t.labels - @hidden_labels).map { |label| [:label_color, "+#{label} "] } +
       [[:snippet_color, snippet]
     ]
-
   end
 
   def dirty?; @mutex.synchronize { (@hidden_threads.keys + @threads).any? { |t| t.dirty? } } end