sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 5048c339396ae70394ae2dc2bd054f61e07ec3a3
parent c6263674e539d93768512bfaa5cdee22b9c51411
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date:   Fri,  2 Nov 2007 02:26:02 +0000

tab in label-list-mode toggles hiding labels without new messages (thanks to Colin Bell)

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

Diffstat:
M lib/sup/modes/label-list-mode.rb | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/lib/sup/modes/label-list-mode.rb b/lib/sup/modes/label-list-mode.rb
@@ -4,6 +4,7 @@ class LabelListMode < LineCursorMode
   register_keymap do |k|
     k.add :select_label, "Select label", :enter
     k.add :reload, "Discard label list and reload", '@'
+    k.add :toggle_show_unread_only, "Toggle between all labels and those with unread mail", :tab
   end
 
   bool_reader :done
@@ -14,6 +15,7 @@ class LabelListMode < LineCursorMode
     @text = []
     @done = false
     @value = nil
+    @unread_only = false
     super
     regen_text
   end
@@ -22,12 +24,16 @@ class LabelListMode < LineCursorMode
   def [] i; @text[i] end
 
 protected
+  def toggle_show_unread_only
+    @unread_only = !@unread_only
+    reload
+  end
 
   def reload
     regen_text
     buffer.mark_dirty if buffer
   end
-  
+
   def regen_text
     @text = []
     labels = LabelManager.listable_labels
@@ -41,6 +47,10 @@ protected
 
     width = counts.max_of { |l, s, t, u| s.length }
 
+    if @unread_only
+      counts.delete_if { | l, s, t, u | u == 0 }
+    end
+
     @labels = []
     counts.map do |label, string, total, unread|
       if total == 0 && !LabelManager::RESERVED_LABELS.include?(label)