lib/sup/modes/edit_message_mode.rb in sup-0.14.1.1 vs lib/sup/modes/edit_message_mode.rb in sup-0.15.0
- old
+ new
@@ -195,25 +195,33 @@
def save_message_to_file
sig = sig_lines.join("\n")
@file = Tempfile.new ["sup.#{self.class.name.gsub(/.*::/, '').camel_to_hyphy}", ".eml"]
@file.puts format_headers(@header - NON_EDITABLE_HEADERS).first
@file.puts
- @file.puts @body.join("\n")
+
+ begin
+ text = @body.join("\n")
+ rescue Encoding::CompatibilityError
+ text = @body.map { |x| x.fix_encoding! }.join("\n")
+ debug "encoding problem while writing message, trying to rescue, but expect errors: #{text}"
+ end
+
+ @file.puts text
@file.puts sig if ($config[:edit_signature] and !@sig_edited)
@file.close
end
def set_sig_edit_flag
sig = sig_lines.join("\n")
if $config[:edit_signature]
- pbody = @body.join("\n")
+ pbody = @body.map { |x| x.fix_encoding! }.join("\n").fix_encoding!
blen = pbody.length
slen = sig.length
if blen > slen and pbody[blen-slen..blen] == sig
@sig_edited = false
- @body = pbody[0..blen-slen].split("\n")
+ @body = pbody[0..blen-slen].fix_encoding!.split("\n")
else
@sig_edited = true
end
end
end
@@ -317,11 +325,11 @@
BufferManager.flash "Can't read #{fn}: #{e.message}"
end
end
def delete_attachment
- i = curpos - @attachment_lines_offset - DECORATION_LINES - 2
+ i = curpos - @attachment_lines_offset - (@selectors.empty? ? 0 : DECORATION_LINES) - @selectors.size
if i >= 0 && i < @attachments.size && BufferManager.ask_yes_or_no("Delete attachment #{@attachment_names[i]}?")
@attachments.delete_at i
@attachment_names.delete_at i
update
end
@@ -549,13 +557,13 @@
@header.each do |k, v|
next if v.nil? || v.empty?
m.header[k] =
case v
when String
- (k.match(/subject/i) ? mime_encode_subject(v) : mime_encode_address(v)).fix_encoding!
+ (k.match(/subject/i) ? mime_encode_subject(v).dup.fix_encoding! : mime_encode_address(v)).dup.fix_encoding!
when Array
- (v.map { |v| mime_encode_address v }.join ", ").fix_encoding!
+ (v.map { |v| mime_encode_address v }.join ", ").dup.fix_encoding!
end
end
m.header["Date"] = date.rfc2822
m.header["Message-Id"] = @message_id
@@ -633,15 +641,15 @@
def mentions_attachments?
if HookManager.enabled? "mentions-attachments"
HookManager.run "mentions-attachments", :header => @header, :body => @body
else
- @body.any? { |l| l =~ /^[^>]/ && l =~ /\battach(ment|ed|ing|)\b/i }
+ @body.any? { |l| l.fix_encoding! =~ /^[^>]/ && l.fix_encoding! =~ /\battach(ment|ed|ing|)\b/i }
end
end
def top_posting?
- @body.join("\n") =~ /(\S+)\s*Excerpts from.*\n(>.*\n)+\s*\Z/
+ @body.map { |x| x.fix_encoding! }.join("\n").fix_encoding! =~ /(\S+)\s*Excerpts from.*\n(>.*\n)+\s*\Z/
end
def sig_lines
p = Person.from_address(@header["From"])
from_email = p && p.email