commit 2cde2aeb826cb80d94dec045fa105e2e791ef1b6
parent 27e464c508856eefe3c27811293c19d5197c07c1
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date: Wed, 5 Dec 2007 18:38:25 +0000
more tweaks of detailed-header hook
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@739 5c8cc53c-5e98-4d25-b20a-d8db53a31250
Diffstat:
3 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/lib/sup/imap.rb b/lib/sup/imap.rb
@@ -141,6 +141,7 @@ class IMAP < Source
@ids << id
@imap_state[id] = { :id => v.seqno, :flags => v.attr["FLAGS"] }
end
+ Redwood::log "done fetching IMAP headers"
end
synchronized :scan_mailbox
diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb
@@ -17,9 +17,10 @@ class ThreadViewMode < LineCursorMode
Add or remove headers from the detailed header display of a message.
Variables:
message: The message whose headers are to be formatted.
- headers: A hash of header name, value pairs for the default display.
+ headers: A hash of header (name, value) pairs, initialized to the default
+ headers.
Return value:
- A hash of the same form of 'headers'.
+ None. The variable 'headers' should be modified in place.
EOS
register_keymap do |k|
@@ -465,10 +466,9 @@ private
addressee_lines += format_person_list " Bcc: ", m.bcc
end
- headers = {
- "Date" => "#{m.date.strftime DATE_FORMAT} (#{m.date.to_nice_distance_s})",
- "Subject" => m.subj,
- }
+ headers = OrderedHash.new
+ headers["Date"] = "#{m.date.strftime DATE_FORMAT} (#{m.date.to_nice_distance_s})"
+ headers["Subject"] = m.subj
show_labels = @thread.labels - LabelManager::HIDDEN_RESERVED_LABELS
unless show_labels.empty?
@@ -478,7 +478,7 @@ private
headers["In reply to"] = "#{parent.from.mediumname}'s message of #{parent.date.strftime DATE_FORMAT}"
end
- headers = (HookManager.run("detailed-headers", :message => m, :headers => headers)) || headers
+ HookManager.run "detailed-headers", :message => m, :headers => headers
from_line + (addressee_lines + headers.map { |k, v| " #{k}: #{v}" }).map { |l| [[color, prefix + " " + l]] }
end
diff --git a/lib/sup/util.rb b/lib/sup/util.rb
@@ -573,3 +573,27 @@ class SavingHash
defer_all_other_method_calls_to :hash
end
+
+class OrderedHash < Hash
+ alias_method :store, :[]=
+ alias_method :each_pair, :each
+
+ def initialize
+ @keys = []
+ end
+
+ def []=(key, val)
+ @keys << key unless member?(key)
+ super
+ end
+
+ def delete(key)
+ @keys.delete(key)
+ super
+ end
+
+ def each
+ @keys.each { |k| yield k, self[k] }
+ end
+end
+