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={}
@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
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]
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