sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit c0d67ca3447a10fbad9977da1b76592f150ab1c2
parent 8258760c40ce9697f2e16634702d45a88ffab62d
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date:   Mon,  9 Jul 2007 00:20:14 +0000

labelmanager bugfix (deletion) and now only saves if modified

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

Diffstat:
M lib/sup/label.rb | 17 +++++++++++++++--
M lib/sup/modes/label-list-mode.rb | 2 +-
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/lib/sup/label.rb b/lib/sup/label.rb
@@ -22,6 +22,7 @@ class LabelManager
         []
       end
     @labels = {}
+    @modified = false
     labels.each { |t| @labels[t] = true }
 
     self.class.i_am_the_instance self
@@ -40,9 +41,21 @@ class LabelManager
     string.downcase.intern
   end
   
-  def << t; @labels[t] = true unless @labels.member?(t) || RESERVED_LABELS.member?(t); end
-  def delete t; @labels.delete t; end
+  def << t
+    unless @labels.member?(t) || RESERVED_LABELS.member?(t)
+      @labels[t] = true
+      @modified = true
+    end
+  end
+
+  def delete t
+    if @labels.delete t
+      @modified = true
+    end
+  end
+
   def save
+    return unless @modified
     File.open(@fn, "w") { |f| f.puts @labels.keys }
   end
 end
diff --git a/lib/sup/modes/label-list-mode.rb b/lib/sup/modes/label-list-mode.rb
@@ -44,7 +44,7 @@ protected
     counts.map do |label, string, total, unread|
       if total == 0 && !LabelManager::RESERVED_LABELS.include?(label)
         Redwood::log "no hits for label #{label}, deleting"
-        LabelManager.delete t
+        LabelManager.delete label
         next
       end