From: wmorgan Date: Fri, 2 Nov 2007 02:19:27 +0000 (+0000) Subject: single-key to, cc and subject eiditng in edit-message-mode thanks to Eyal Oren X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=c6263674e539d93768512bfaa5cdee22b9c51411;p=sup single-key to, cc and subject eiditng in edit-message-mode thanks to Eyal Oren git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@656 5c8cc53c-5e98-4d25-b20a-d8db53a31250 --- diff --git a/lib/sup/modes/edit-message-mode.rb b/lib/sup/modes/edit-message-mode.rb index 17985db..b928009 100644 --- a/lib/sup/modes/edit-message-mode.rb +++ b/lib/sup/modes/edit-message-mode.rb @@ -30,7 +30,10 @@ EOS register_keymap do |k| k.add :send_message, "Send message", 'y' - k.add :edit_field, "Edit field", 'e' + k.add :edit_message_or_field, "Edit selected field", 'e' + k.add :edit_to, "Edit To:", 't' + k.add :edit_cc, "Edit Cc:", 'c' + k.add :edit_subject, "Edit Subject", 's' k.add :edit_message, "Edit message", :enter k.add :save_as_draft, "Save as draft", 'P' k.add :attach_file, "Attach a file", 'a' @@ -59,33 +62,18 @@ EOS ## a hook def handle_new_text header, body; end - def edit_field + def edit_message_or_field if (curpos - @skip_top_rows) >= @header_lines.length edit_message else - case(field = @header_lines[curpos - @skip_top_rows]) - when "Subject" - text = BufferManager.ask :subject, "Subject: ", @header[field] - @header[field] = parse_header field, text if text - else - default = - case field - when *MULTI_HEADERS - @header[field].join(", ") - else - @header[field] - end - - contacts = BufferManager.ask_for_contacts :people, "#{field}: ", default - if contacts - text = contacts.map { |s| s.longname }.join(", ") - @header[field] = parse_header field, text - end - end - update + edit_field @header_lines[curpos - @skip_top_rows] end end + def edit_to; edit_field "To" end + def edit_cc; edit_field "Cc" end + def edit_subject; edit_field "Subject" end + def edit_message @file = Tempfile.new "sup.#{self.class.name.gsub(/.*::/, '').camel_to_hyphy}" @file.puts format_headers(@header - NON_EDITABLE_HEADERS).first @@ -300,6 +288,30 @@ EOS private + def edit_field field + case field + when "Subject" + text = BufferManager.ask :subject, "Subject: ", @header[field] + @header[field] = parse_header field, text if text + else + default = + case field + when *MULTI_HEADERS + @header[field].join(", ") + else + @header[field] + end + + contacts = BufferManager.ask_for_contacts :people, "#{field}: ", default + if contacts + text = contacts.map { |s| s.longname }.join(", ") + @header[field] = parse_header field, text + end + end + + update + end + def sanitize_body body body.gsub(/^From /, ">From ") end