lib/sup/modes/thread-view-mode.rb in sup-0.6 vs lib/sup/modes/thread-view-mode.rb in sup-0.7
- old
+ new
@@ -28,10 +28,11 @@
k.add :toggle_detailed_header, "Toggle detailed header", 'h'
k.add :show_header, "Show full message header", 'H'
k.add :activate_chunk, "Expand/collapse or activate item", :enter
k.add :expand_all_messages, "Expand/collapse all messages", 'E'
k.add :edit_draft, "Edit draft", 'e'
+ k.add :send_draft, "Send draft", 'y'
k.add :edit_labels, "Edit or add labels for a thread", 'l'
k.add :expand_all_quotes, "Expand/collapse all quotes in a message", 'o'
k.add :jump_to_next_open, "Jump to next open message", 'n'
k.add :jump_to_prev_open, "Jump to previous open message", 'p'
k.add :align_current_message, "Align current message in buffer", 'z'
@@ -257,11 +258,12 @@
def save_to_disk
chunk = @chunk_lines[curpos] or return
case chunk
when Chunk::Attachment
- fn = BufferManager.ask_for_filename :filename, "Save attachment to file: ", chunk.filename
+ default_dir = File.join(($config[:default_attachment_save_dir] || "."), chunk.filename)
+ fn = BufferManager.ask_for_filename :filename, "Save attachment to file: ", default_dir
save_to_file(fn) { |f| f.print chunk.raw_content } if fn
else
m = @message_lines[curpos]
fn = BufferManager.ask_for_filename :filename, "Save message to file: "
return unless fn
@@ -281,10 +283,22 @@
else
BufferManager.flash "Not a draft message!"
end
end
+ def send_draft
+ m = @message_lines[curpos] or return
+ if m.is_draft?
+ mode = ResumeMode.new m
+ BufferManager.spawn "Send message", mode
+ BufferManager.kill_buffer self.buffer
+ mode.send_message
+ else
+ BufferManager.flash "Not a draft message!"
+ end
+ end
+
def jump_to_first_open loose_alignment=false
m = @message_lines[0] or return
if @layout[m].state != :closed
jump_to_message m, loose_alignment
else
@@ -640,10 +654,10 @@
[[[:missing_message_color, "#{prefix}<one or more unreceived messages>"]]]
when nil
[[[:missing_message_color, "#{prefix}<an unreceived message>"]]]
when Message
message_patina_lines(chunk, state, start, parent, prefix, color, star_color) +
- (chunk.is_draft? ? [[[:draft_notification_color, prefix + " >>> This message is a draft. To edit, hit 'e'. <<<"]]] : [])
+ (chunk.is_draft? ? [[[:draft_notification_color, prefix + " >>> This message is a draft. Hit 'e' to edit, 'y' to send. <<<"]]] : [])
else
raise "Bad chunk: #{chunk.inspect}" unless chunk.respond_to?(:inlineable?) ## debugging
if chunk.inlineable?
chunk.lines.map { |line| [[chunk.color, "#{prefix}#{line}"]] }