end
begin
+ extend CanSpawnComposeMode
Redwood::start
Index.load
end
when :compose
- to = BufferManager.ask_for_contacts(:people, "To: ") or next
- cc = BufferManager.ask_for_contacts(:people, "Cc: ") or next if $config[:ask_for_cc]
- bcc = BufferManager.ask_for_contacts(:people, "Bcc: ") or next if $config[:ask_for_bcc]
-
- mode = ComposeMode.new :to => to, :cc => cc, :bcc => bcc
- bm.spawn "New Message", mode
- mode.edit_message
+ spawn_compose_mode
when :poll
reporting_thread { PollManager.poll }
when :recall_draft
module Redwood
+module CanSpawnComposeMode
+ def spawn_compose_mode opts={}
+ to = opts[:to] || BufferManager.ask_for_contacts(:people, "To: ") or return
+ cc = opts[:cc] || BufferManager.ask_for_contacts(:people, "Cc: ") or return if $config[:ask_for_cc]
+ bcc = opts[:bcc] || BufferManager.ask_for_contacts(:people, "Bcc: ") or return if $config[:ask_for_bcc]
+
+ mode = ComposeMode.new :to => to, :cc => cc, :bcc => bcc
+ BufferManager.spawn "New Message", mode
+ mode.edit_message
+ end
+end
+
class ComposeMode < EditMessageMode
def initialize opts={}
header = {
module Redwood
class ThreadViewMode < LineCursorMode
+ include CanSpawnComposeMode
+
## this holds all info we need to lay out a message
class MessageLayout
attr_accessor :top, :bot, :prev, :next, :depth, :width, :state, :color, :star_color, :orig_new
def compose
p = @person_lines[curpos]
- mode =
- if p
- ComposeMode.new :to => [p]
- else
- ComposeMode.new
- end
- BufferManager.spawn "Compose message", mode
- mode.edit_message
+ if p
+ spawn_compose_mode :to => [p]
+ else
+ spawn_compose_mode
+ end
end
def edit_labels