From 0b356874a1e3b071eef94a42a0d160b4078f4cb7 Mon Sep 17 00:00:00 2001 From: wmorgan Date: Sat, 20 Jan 2007 01:19:56 +0000 Subject: [PATCH] don't collapse one-line quotes and signatures git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@268 5c8cc53c-5e98-4d25-b20a-d8db53a31250 --- lib/sup/message.rb | 2 +- lib/sup/modes/thread-view-mode.rb | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/sup/message.rb b/lib/sup/message.rb index 2ab2859..9a6b2cc 100644 --- a/lib/sup/message.rb +++ b/lib/sup/message.rb @@ -301,7 +301,7 @@ private when :quote newstate = nil - if line =~ QUOTE_PATTERN || line =~ QUOTE_START_PATTERN || line =~ /^\s*$/ + if line =~ QUOTE_PATTERN || line =~ QUOTE_START_PATTERN #|| line =~ /^\s*$/ chunk_lines << line elsif line =~ SIG_PATTERN && (lines.length - i) < MAX_SIG_DISTANCE newstate = :sig diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb index 0568f1b..1684233 100644 --- a/lib/sup/modes/thread-view-mode.rb +++ b/lib/sup/modes/thread-view-mode.rb @@ -131,6 +131,7 @@ class ThreadViewMode < LineCursorMode chunk = @chunk_lines[curpos] or return case chunk when Message, Message::Quote, Message::Signature + return if chunk.lines.length == 1 unless chunk.is_a? Message # too small to expand/close l = @layout[chunk] l.state = (l.state != :closed ? :closed : :open) cursor_down if l.state == :closed @@ -235,7 +236,7 @@ class ThreadViewMode < LineCursorMode def expand_all_quotes if(m = @message_lines[curpos]) - quotes = m.chunks.select { |c| c.is_a?(Message::Quote) || c.is_a?(Message::Signature) } + quotes = m.chunks.select { |c| (c.is_a?(Message::Quote) || c.is_a?(Message::Signature)) && c.lines.length > 1 } numopen = quotes.inject(0) { |s, c| s + (@layout[c].state == :open ? 1 : 0) } newstate = numopen > quotes.length / 2 ? :closed : :open quotes.each { |c| @layout[c].state = newstate } @@ -433,22 +434,20 @@ private end t.map { |line| [[:none, "#{prefix}#{line}"]] } when Message::Quote + return [[[:quote_color, "#{prefix}#{chunk.lines.first}"]]] if chunk.lines.length == 1 case state when :closed [[[:quote_patina_color, "#{prefix}+ (#{chunk.lines.length} quoted lines)"]]] when :open - t = chunk.lines - [[[:quote_patina_color, "#{prefix}- (#{chunk.lines.length} quoted lines)"]]] + - t.map { |line| [[:quote_color, "#{prefix}#{line}"]] } + [[[:quote_patina_color, "#{prefix}- (#{chunk.lines.length} quoted lines)"]]] + chunk.lines.map { |line| [[:quote_color, "#{prefix}#{line}"]] } end when Message::Signature + return [[[:sig_patina_color, "#{prefix}#{chunk.lines.first}"]]] if chunk.lines.length == 1 case state when :closed [[[:sig_patina_color, "#{prefix}+ (#{chunk.lines.length}-line signature)"]]] when :open - t = chunk.lines - [[[:sig_patina_color, "#{prefix}- (#{chunk.lines.length}-line signature)"]]] + - t.map { |line| [[:sig_color, "#{prefix}#{line}"]] } + [[[:sig_patina_color, "#{prefix}- (#{chunk.lines.length}-line signature)"]]] + chunk.lines.map { |line| [[:sig_color, "#{prefix}#{line}"]] } end else raise "unknown chunk type #{chunk.class.name}" -- 2.45.2