Skip to content

Instantly share code, notes, and snippets.

@jrhorn424
Last active February 20, 2016 14:53
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jrhorn424/7496538 to your computer and use it in GitHub Desktop.
Save jrhorn424/7496538 to your computer and use it in GitHub Desktop.
Fastmail keybindings for MailMate
#####################################################################################################
### WARNING: not kept up to date. I don't know the format well, and comments were causing issues. ###
### See next file for up-to-date mappings. ###
#####################################################################################################
{
// Keybindings to emulate Fastmail shortcuts in MailMate
// From: http://fastmail.wikia.com/wiki/KeyboardShortcuts
// Created by Jeffrey Horn <hello@jrhorn.me>
// See: http://manual.mailmate-app.com/key_binding_selectors
"n" = "nextMessage:";
"p" = "previousMessage:";
"j" = "nextThread:";
"k" = "previousThread:";
"o" = "openMessages:";
"\U000D" = "openMessages:"; // Enter
"\U000A" = "openMessages:"; // Return
"y" = "archive:";
"m" = ( "toggleMuteState:", "archive:" ); // FIXME: Should be 'markAsMuted:'
"e" = "expandThread:"; // FIXME: should be 'toggleThread:'
"E" = "collapseThread:"; // extra, not in Fastmail by default
"g" = "goToMailbox:";
"/" = "mailboxSearch:";
"#" = "deleteMessage:";
"d" = "deleteMessage:";
"m" = "moveToMailbox:";
"!" = "moveToJunk:";
"r" = "reply:";
"a" = "replyAll:";
"c" = "newMessage:";
"f" = "forwardMessage:";
"s" = "toggleFlag:"; // extra, not in Fastmail by default
"M" = ( "toggleMuteState:", "archive:" ); // FIXME: Should be 'markAsMuted:' // extra, not in Fastmail by default
"z" = "undo:";
// Only in MailMate
"N" = "moveDownAndModifySelection:";
"P" = "moveUpAndModifySelection:";
"J" = "moveDownAndModifySelection:";
"K" = "moveUpAndModifySelection:";
"Z" = "redo:";
"." = {
"r" = "toggleReadState:"; // FIXME: should be 'markAsRead:'
"u" = "toggleReadState:"; // FIXME: should be 'markAsUnread:'
"p" = "toggleFlag:"; // FIXME: should be 'markAsFlagged:'
"n" = "toggleFlag:"; // FIXME: should be 'markAsUnflagged:'
};
"*" = {
"a" = "selectAll:";
"r" = ( "selectWithFilter:", "#flags.flag = '\\Seen'"); // Selects all mail you've read.
"u" = ( "selectWithFilter:", "#flags.flag !=[x] '\\Seen'"); // Selects all unread mail.
"p" = ( "selectWithFilter:", "#flags.flag = '\\Flagged'"); // Selects all starred mail.
"n" = ( "selectWithFilter:", "#flags.flag !=[x] '\\Flagged'"); // Selects all unstarred mail.
};
"'" = {
"a" = "selectAll:";
"n" = "deselectAll:";
"r" = ( "selectWithFilter:", "#flags.flag = '\\Seen'"); // Selects all mail you've read.
"u" = ( "selectWithFilter:", "#flags.flag !=[x] '\\Seen'"); // Selects all unread mail.
"p" = ( "selectWithFilter:", "#flags.flag = '\\Flagged'"); // Selects all starred mail.
"n" = ( "selectWithFilter:", "#flags.flag !=[x] '\\Flagged'"); // Selects all unstarred mail.
};
}
/*
Not included above:
x = Select conversation
u = Refresh all sources
% = Permanently deletes all messages from any folders in the selected conversations
L = Displays external images
other various keys relevant to Fastmail's unique UI
// composer
Ctrl-Enter = send message
Ctrl-s = save message to Drafts folder
Shift-Alt-Ctrl-Backspace = discard message being composed
*/
{
n = "nextMessage:";
p = "previousMessage:";
j = "nextThread:";
k = "previousThread:";
o = "openMessages:";
"\n" = "openMessages:";
"\n" = "openMessages:";
y = "archive:";
m = "moveToMailbox:";
e = "expandThread:";
E = "collapseThread:";
g = "goToMailbox:";
"/" = "searchAllMessages:";
d = "deleteMessage:";
"!" = "moveToJunk:";
r = "reply:";
a = "replyAll:";
c = "newMessage:";
f = "forwardMessage:";
s = "toggleFlag:";
M = (
"toggleMuteState:",
"archive:",
);
z = "undo:";
N = "moveDownAndModifySelection:";
P = "moveUpAndModifySelection:";
J = "moveDownAndModifySelection:";
K = "moveUpAndModifySelection:";
Z = "redo:";
"." = {
r = "toggleReadState:";
u = "toggleReadState:";
p = "toggleFlag:";
n = "toggleFlag:";
};
"*" = {
a = "selectAll:";
r = (
"selectWithFilter:",
"#flags.flag = '\\Seen'",
);
u = (
"selectWithFilter:",
"#flags.flag !=[x] '\\Seen'",
);
p = (
"selectWithFilter:",
"#flags.flag = '\\Flagged'",
);
n = (
"selectWithFilter:",
"#flags.flag !=[x] '\\Flagged'",
);
};
"'" = {
a = "selectAll:";
n = (
"selectWithFilter:",
"#flags.flag !=[x] '\\Flagged'",
);
r = (
"selectWithFilter:",
"#flags.flag = '\\Seen'",
);
u = (
"selectWithFilter:",
"#flags.flag !=[x] '\\Seen'",
);
p = (
"selectWithFilter:",
"#flags.flag = '\\Flagged'",
);
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment