]> git.cworth.org Git - sup/commitdiff
single-key to, cc and subject eiditng in edit-message-mode thanks to Eyal Oren
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Fri, 2 Nov 2007 02:19:27 +0000 (02:19 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Fri, 2 Nov 2007 02:19:27 +0000 (02:19 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@656 5c8cc53c-5e98-4d25-b20a-d8db53a31250

lib/sup/modes/edit-message-mode.rb

index 17985db1b12b5941e9b10d6ca5b4521125704e7a..b92800953b0b4d741592a3840f8a2743001273fa 100644 (file)
@@ -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