sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 9fd3ec2d6f184f2d349b262ad9193044da60be26
parent 7be936cde7b96e535a11e795dc73cc4ddfb51f15
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date:   Sun, 24 Dec 2006 22:53:56 +0000

minor bugfixes


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

Diffstat:
M lib/sup.rb | 2 +-
M lib/sup/index.rb | 5 ++++-
M lib/sup/message.rb | 2 ++
M lib/sup/modes/thread-index-mode.rb | 1 +
M lib/sup/poll.rb | 2 +-
5 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/lib/sup.rb b/lib/sup.rb
@@ -8,7 +8,7 @@ class Object
   ## this is for debugging purposes because i keep calling #id on the
   ## wrong object and i want it to throw an exception
   def id
-    raise "wrong id called"
+    raise "wrong id called on #{self.inspect}"
   end
 end
 
diff --git a/lib/sup/index.rb b/lib/sup/index.rb
@@ -2,7 +2,8 @@
 
 require 'thread'
 require 'fileutils'
-require_gem 'ferret', ">= 0.10.13"
+require 'ferret'
+#require_gem 'ferret', ">= 0.10.13"
 
 module Redwood
 
@@ -87,6 +88,8 @@ class Index
       source ||= entry[:source_id].to_i
       source_info ||= entry[:source_info].to_i
     end
+
+    ## this happens sometimes. i'm not sure why. ferret bug?
     raise "no entry and no source info for message #{m.id}" unless source && source_info
 
     raise "deleting non-corresponding entry #{docid}" unless @index[docid][:message_id] == m.id
diff --git a/lib/sup/message.rb b/lib/sup/message.rb
@@ -145,6 +145,7 @@ class Message
     @status = header["status"]
   end
 
+  def broken?; @source.nil?; end
   def snippet; @snippet || to_chunks && @snippet; end
   def is_list_message?; !@list_address.nil?; end
   def is_draft?; DraftLoader === @source; end
@@ -154,6 +155,7 @@ class Message
   end
 
   def save index
+    return if broken?
     index.update_message self if @dirty
     @dirty = false
   end
diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
@@ -320,6 +320,7 @@ protected
   end
 
   def update_text_for_line l
+    return unless l # not sure why this happens, but it does, occasionally
     @text[l] = text_for_thread @threads[l]
     buffer.mark_dirty if buffer
   end
diff --git a/lib/sup/poll.rb b/lib/sup/poll.rb
@@ -54,7 +54,7 @@ class PollManager
       num_inbox = 0
       source.each do |offset, labels|
         start_offset ||= offset
-        yield " Found message at #{offset} with labels #{labels * ', '}"
+        yield "Found message at #{offset} with labels #{labels * ', '}"
         begin
           m = Redwood::Message.new :source => source, :source_info => offset,
                                    :labels => labels