## yields each message, its depth, and its parent. the message yield
## parameter can be a Message object, or :fake_root, or nil (no
- ## message found but the presence of one induced from other
+ ## message found but the presence of one deduced from other
## messages).
def each fake_root=false
adj = 0
def first; each { |m, *o| return m if m }; nil; end
def dirty?; any? { |m, *o| m && m.dirty? }; end
def date; map { |m, *o| m.date if m }.compact.max; end
- def snippet; argfind { |m, *o| m && m.snippet }; end
+ def snippet; sort_by { |m, d, p| -d }.argfind { |m, d, p| m && !m.snippet.empty? && m.snippet } || "" end
def authors; map { |m, *o| m.from if m }.compact.uniq; end
def apply_label t; each { |m, *o| m && m.add_label(t) }; end