]> git.cworth.org Git - sup/commitdiff
message save speedup
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Sun, 9 Sep 2007 22:40:08 +0000 (22:40 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Sun, 9 Sep 2007 22:40:08 +0000 (22:40 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@558 5c8cc53c-5e98-4d25-b20a-d8db53a31250

lib/sup/message.rb
lib/sup/modes/thread-view-mode.rb

index 2b13e9724547ac24d18bd7d5f9c2f57258e86e53..0bbc97eeeceba465dfda72dd6171e2f16fd66de0 100644 (file)
@@ -264,22 +264,26 @@ The error message was:
 EOS
   end
 
-  def raw_header
+  def with_source_errors_handled
     begin
-      @source.raw_header @source_info
+      yield
     rescue SourceError => e
       Redwood::log "problem getting messages from #{@source}: #{e.message}"
       error_message e.message
     end
   end
 
+  def raw_header
+    with_source_errors_handled { @source.raw_header @source_info }
+  end
+
   def raw_full_message
-    begin
-      @source.raw_full_message @source_info
-    rescue SourceError => e
-      Redwood::log "problem getting messages from #{@source}: #{e.message}"
-      error_message(e.message)
-    end
+    with_source_errors_handled { @source.raw_full_message @source_info }
+  end
+
+  ## much faster than raw_full_message
+  def each_raw_full_message_line &b
+    with_source_errors_handled { @source.each_raw_full_message_line(@source_info, &b) }
   end
 
   def content
index 4252437e0f65bc720f53218cfdea19fb4b06ceda..2c2df048f66f36f113db23732583cac577a949e2 100644 (file)
@@ -197,7 +197,10 @@ class ThreadViewMode < LineCursorMode
     else
       m = @message_lines[curpos]
       fn = BufferManager.ask_for_filename :filename, "Save message to file: "
-      save_to_file(fn) { |f| f.print m.raw_full_message } if fn
+      next unless fn
+      save_to_file(fn) do |f|
+        m.each_raw_full_message_line { |l| f.print l }
+      end
     end
   end