From 513e1af1d9376cdaca2e45e17416fee0c9b37133 Mon Sep 17 00:00:00 2001 From: wmorgan Date: Sun, 9 Sep 2007 22:40:08 +0000 Subject: [PATCH] message save speedup git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@558 5c8cc53c-5e98-4d25-b20a-d8db53a31250 --- lib/sup/message.rb | 20 ++++++++++++-------- lib/sup/modes/thread-view-mode.rb | 5 ++++- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/sup/message.rb b/lib/sup/message.rb index 2b13e97..0bbc97e 100644 --- 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 index 4252437..2c2df04 100644 --- 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 -- 2.45.2