commit 513e1af1d9376cdaca2e45e17416fee0c9b37133
parent 77c87a5487894bd6c41d1c04b1ff0e8c74590a5c
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date: Sun, 9 Sep 2007 22:40:08 +0000
message save speedup
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@558 5c8cc53c-5e98-4d25-b20a-d8db53a31250
Diffstat:
2 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/lib/sup/message.rb b/lib/sup/message.rb
@@ -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
diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb
@@ -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