use utf8;
-my @generic = qw(^l ! * / : ; < = > ? H L M Z [ ] j k n q t z);
+my %common = (
+ 'H' => ["screen top", 'pm'], # top-page
+ 'j' => ["entry $sign{down}", 'pm'], # next-entry, next-undeleted
+ 'k' => ["entry $sign{up}", 'pm'], # previous-entry, previous-undeleted
+ 'L' => ["screen bottom", 'pm'], # bottom-page
+ '^l'=> ["redraw", 'ci'], # refresh
+ 'M' => ["screen middle", 'pm'], # middle-page
+ '^m'=> ["select", 'mi mode^m'], # select-entry, display-message
+ 'n' => ["search $sign{down}", 'po'], # search-next
+ 'q' => ["exit", 'mv mode'], # exit
+ 't' => ["tag", 'co'], # tag-entry
+ 'z' => ["page $sign{down}", 'pm'], # next-page
+ 'Z' => ["page $sign{up}", 'pm'], # previous-page
+
+ '*' => ["last entry", 'pm'], # last-entry
+ '=' => ["first entry", 'pm'], # first-entry
+ ':' => ["enter command", 'mi'], # enter-command
+ ';' => ["apply to tagged", 'mi arg'], # tag-prefix
+ '>' => ["line $sign{down}", 'pm'], # next-line
+ '<' => ["line $sign{up}", 'pm'], # previous-line
+ ']' => ["half page $sign{down}", 'pm'], # half-down
+ '[' => ["half page $sign{up}", 'pm'], # half-up
+ '?' => ["help", 'ci'], # help
+ '!' => ["invoke shell", 'ci arg'], # shell
+ '/' => ["search $sign{down}", 'po arg mode/~'], # search
+ '+/'=> ["search $sign{up}", 'po arg mode/~'], # search
+);
'' => {
desc => 'index',
- ';' => ["apply to tagged", 'mi arg'], # tag-prefix
+ %common,
+
'@' => ["display sender", 'ci'], # display-address
- ':' => ["enter command", 'mi'], # enter-command
- '=' => ["first entry", 'po'], # first-entry
- ']' => ["half page down", 'pm'], # half-down
- '[' => ["half page up", 'pm'], # half-up
- '?' => ["help", 'ci'], # help
- '!' => ["invoke shell", 'ci arg'], # shell
- '*' => ["last message", 'po'], # last-entry
- '>' => ["line $sign{down}", 'pm'], # next-line
- '<' => ["line $sign{up}", 'pm'], # previous-line
'.' => ["list new mail", 'mv'], # buffy-list #TODO
'|' => ["pipe to shell", 'mi'], # pipe-message
'$' => ["save mailbox", 'co'], # sync-mailbox
- '/' => ["search", 'po arg mode/~'], # search
'#' => ["split up thread", 'co'], # break-thread
'&' => ["thread tagged", 'co'], # link-threads
'%' => ["toggle reado$sign{_}nl$sign{_}y", 'co'], # toggle-write
'^b'=> ["url$sign{_}view", 'ci'],
'+b'=> ["search bodies"], # M <search>~b
'c' => ["open folder", 'mv'], # change-folder
- 'C' => ["copy message", 'mi'], # copy-message
- '+c'=> ["open readonly", 'mv'], # change-folder-readonly
+ 'C' => ["copy messag$sign{_}e", 'mi'], # copy-message
+ '+c'=> ["open reado$sign{_}nly", 'mv'], # change-folder-readonly
'+C'=> ["make plain copy"], # decode-copy
'd' => ["delete", 'co'], # delete-message
'D' => ["delete patt$sign{_}er$sign{_}n", 'co arg'], # delete-pattern
'g' => ["reply to all", 'mo modem', 'Group reply'], # group-reply
'G' => ["fetch POP", 'mi', 'Gather new mail'], # fetch-mail
'h' => ["toggle headers", 'me'], # display-toggle-weed
- 'H' => ["screen top", 'po'], # top-page
'^i'=> ["unread msg $sign{down}", 'po'], # next-new-then-unread
'+^i'=> ["unread msg $sign{up}"], # previous-new-then-unread
- 'j' => ["entry $sign{down}", 'po'], # next-entry, next-undeleted
- 'J' => ["messag$sign{_}e $sign{down}", 'po'], # next-entry
- 'k' => ["entry $sign{up}", 'po'], # previous-entry, previous-undeleted
- 'K' => ["messag$sign{_}e $sign{up}", 'po'], # previous-entry
+ 'j' => ["messag$sign{_}e $sign{down}", 'pm'], # next-undeleted
+ 'k' => ["messag$sign{_}e $sign{up}", 'pm'], # previous-undeleted
+ 'J' => ["any $sign{down}", 'po'], # next-entry
+ 'K' => ["any $sign{up}", 'po'], # previous-entry
'^k'=> ["extract pub keys", 'ci'], # extract-keys
'+k'=> ["send public key", 'mo modem'], # mail-key
'l' => ["limit pattern", 'me'], # limit
'L' => ["reply to list", 'mo modem'], # list-reply
- '^l'=> ["redraw", 'ci'], # refresh
'+l'=> ["show current limit", 'ci'], # show-limit
'm' => ["compo$sign{_}s$sign{_}e mail", 'mo modem'], # mail
- 'M' => ["screen middle", 'po'], # middle-page
- '^m'=> ["select", 'mi mode^m'], # select-entry, display-message
- 'n' => ["search $sign{down}", 'po'], # search-next
'N' => ["toggle new", 'co'], # toggle-new
'^n'=> ["thread $sign{down}", 'po'], # next-thread
'+n'=> ["subthr$sign{_}ead $sign{down}", 'po'], # next-subthread
'^p'=> ["thread $sign{up}", 'po'], # previous-thread
'+p'=> ["subthr$sign{_}ead $sign{up}", 'po'], # previous-subthread
'+P'=> ["check for pgp"], # check-traditional-pgp
- 'q' => ["exit or quit", 'mv'], # exit, quit
+ 'q' => ["quit", 'mv'], # quit
'Q' => ["query addr$sign{_}ess$sign{_}es", 'ci arg'], # query
'r' => ["reply to sender", 'mo modem'], # reply
'R' => ["recall postpon$sign{_}e$sign{_}d", 'mo modem'], # recall-message
'+r'=> ["mark sub$sign{_}thread r$sign{_}ead", 'co'], # read-subthread
's' => ["move", 'co'], # save-message
'+s'=> ["save and delete", 'co'], # decode-save
- 't' => ["tag", 'co'], # tag-entry
'T' => ["tag patt$sign{_}er$sign{_}n", 'co arg'], # tag-pattern
'^t'=> ["untag pattern", 'co'], # untag-pattern
'+t'=> ["tag thread", 'co'], # tag-thread
'+V'=> ["(un)collapse threads", 'me'], # collapse-all
'w' => ["set flag", 'co arg'], # set-flag
'W' => ["clear flag", 'co arg'], # clear-flag
- 'x' => ["exit menu", 'mv'], # exit
+ 'x' => ["abort", 'mv'], # exit
'y' => ["list incoming mailboxes", 'mv'], # M <change-folder>?<toggle-mailboxes>
- 'z' => ["page $sign{down}", 'pm'], # next-page
- 'Z' => ["page $sign{up}", 'pm'], # previous-page
}, # index
-' ' => {
- 'L' => ["screen bottom"], # bottom-page
-}, # general
+'m' => {
+ desc => 'compose (m)',
+
+ %common,
+
+ '|' => ["pipe attach$sign{_}m$sign{_}ent", 'co'],
+ 'a' => ["attach file", 'mi'],
+ 'A' => ["attach messag$sign{_}e", 'mi'],
+ 'b' => ["edit bcc", 'co'],
+ 'c' => ["edit cc", 'co'],
+ 'C' => ["copy file", 'mi'],
+ 'D' => ["delete entry", 'co'],
+ '^d'=> ["dispo$sign{_}sition tog$sign{_}gle", 'co'],
+ 'd' => ["desc$sign{_}ribe attach$sign{_}m$sign{_}ent", 'co'],
+ 'e' => ["edit body", 'co linkvi'],
+ 'E' => ["edit all", 'co linkvi'],
+ '^e'=> ["edit encoding", 'co'],
+ 'f' => ["edit fcc", 'co'],
+ '^f'=> ["forget pass$sign{_}phrase", 'mi'],
+ '+f'=> ["edit from", 'co'],
+ 'F' => ["filter attach$sign{_}m$sign{_}ent", 'co'],
+ 'G' => ["get attach$sign{_}m$sign{_}ent", 'ci'],
+ 'h' => ["display message", 'ci'],
+ 'i' => ["run ispell", 'mi'],
+ 'l' => ["print attach$sign{_}m$sign{_}ent", 'ci'],
+ 'm' => ["edit attach$sign{_}m$sign{_}ent", 'co', 'Mime-appropriate open'],
+ 'M' => ["edit mix", 'co'],
+ '^m'=> ["view attach$sign{_}m$sign{_}ent", 'ci'],
+ 'n' => ["new attach$sign{_}m$sign{_}ent", 'mi'],
+ 'P' => ["post$sign{_}pone", 'mv mode'],
+ 'r' => ["edit reply$sign{_}-to", 'co'],
+ 'R' => ["rename attach$sign{_}m$sign{_}ent", 'co'],
+ 's' => ["edit subject", 'co'],
+ 'S' => ["s/mime options", 'co menumS'],
+ 't' => ["edit to", 'co'],
+ '^t'=> ["ctype attach$sign{_}m$sign{_}ent", 'co'],
+ 'w' => ["copy to folder", 'mi'],
+ 'u' => ["unlink toggle", 'mi'],
+ 'U' => ["encode attach$sign{_}m$sign{_}ent", 'co'],
+ 'y' => ["send", 'mo'],
+}, # compose
'/~' => {
desc => 'search flags (/~)',
'$' => ["unrefer$sign{_}enced"],
'(' => ["in thread", 'arg'],
}, # search option
+