]> git.cworth.org Git - sup/blobdiff - lib/sup/modes/edit-message-mode.rb
don't automatically save with dispatch-and-kill
[sup] / lib / sup / modes / edit-message-mode.rb
index 3df3176f924ac0b0ccf525adc41b6ce2acdcd059..6a7f273b4ec18d59f14919ec10c8c9e6fb9262e6 100644 (file)
@@ -50,8 +50,8 @@ EOS
     k.add :save_as_draft, "Save as draft", 'P'
     k.add :attach_file, "Attach a file", 'a'
     k.add :delete_attachment, "Delete an attachment", 'd'
-    k.add :move_cursor_right, "Move selector to the right", :right
-    k.add :move_cursor_left, "Move selector to the left", :left
+    k.add :move_cursor_right, "Move selector to the right", :right, 'l'
+    k.add :move_cursor_left, "Move selector to the left", :left, 'h'
   end
 
   def initialize opts={}
@@ -59,7 +59,7 @@ EOS
     @header_lines = []
 
     @body = opts.delete(:body) || []
-    @body += sig_lines if $config[:edit_signature]
+    @body += sig_lines if $config[:edit_signature] && !opts.delete(:have_signature)
 
     if opts[:attachments]
       @attachments = opts[:attachments].values
@@ -105,7 +105,9 @@ EOS
 
   def edit_message_or_field
     lines = DECORATION_LINES + @selectors.size
-    if (curpos - lines) >= @header_lines.length
+    if lines > curpos
+      return
+    elsif (curpos - lines) >= @header_lines.length
       edit_message
     else
       edit_field @header_lines[curpos - lines]
@@ -163,15 +165,21 @@ EOS
 protected
 
   def move_cursor_left
-    return unless curpos < @selectors.length
-    @selectors[curpos].roll_left
-    buffer.mark_dirty
+    if curpos < @selectors.length
+      @selectors[curpos].roll_left
+      buffer.mark_dirty
+    else
+      col_left
+    end
   end
 
   def move_cursor_right
-    return unless curpos < @selectors.length
-    @selectors[curpos].roll_right
-    buffer.mark_dirty
+    if curpos < @selectors.length
+      @selectors[curpos].roll_right
+      buffer.mark_dirty
+    else
+      col_right
+    end
   end
 
   def add_selector s