Benny,
Tried the modification to display tags in columns as noted in the ticket
site and changed the code you supplied to use two of my tags. I get the
column in my display but don't see anything in the column, even after
adding one of the two chosen tags to a new message. attaching my plist.
Rob McClure
sharkez at g
On 17 May 2014, at 13:27, Benny Kjær Nielsen wrote:
On 16 May 2014, at 6:46, David Rees wrote:
I'm very excited about the gmail label support you are building into
MailMate, its the key feature I keep looking for in an OSX client.
Simply
showing them as folders isn't enough for folks who active use Gmail.
Once I make a gmail label a tag I lose it it as a folder on the left
however. So its hard to quickly see all emails with a given tag
(which is
something a Gmail user is pretty used to).
I've tried working around this with smart folder submailboxes on
Tags/Keywords, but it seems to be showing "Raw Flags" as described in
ticket
374<http://freron.lighthouseapp.com/projects/58672-mailmate/tickets/374-Column-for-Showing-Tags-Keywords#ticket-374-3>.
That unfortunately doesn't do the job since I get submailboxes like
"@0,
\Flagged" and "$NotJunk, @0, \Answered, \Flagged, \Seen" (@0 is my
gmail
label name).
It's slightly better if you use the virtual `Tags` header instead of
`Tags/Keywords`, but it'll only work well if you have at most 1 tag
per message. This is because submailboxes cannot handle multi-value
headers yet. This is almost only a problem for flags/tags and
recipient headers, but those are of course important problems.
Is there anything I can do to work around this? I was thinking I
could
perhaps try changing the submailbox format name from ${#flags.flag}",
but
even if I can get that to narrow it down just to the label name it
won't
handle the case of multiple labels on the same message.
Yes, so currently your only alternative is to manually create smart
mailboxes for each tag.
On the plus side I answered your question in the [ticket
system](http://freron.lighthouseapp.com/projects/58672/tickets/374)
about how to manually add a (hardcoded) “Tags” column. Other users
might find that interesting as well.
--
Benny
_______________________________________________
mailmate mailing list
mailmate@lists.freron.com
http://lists.freron.com/listinfo/mailmate
{
columns = {
attachments = {
formatting = {
doubleClick = {
mailboxSelection = "ALL_BODY_PARTS";
queryFormatting = {
formatString = "#parent-body-part = ${#body-part-id}
and ((content-type.type exists and content-type.type != text and
content-type.type != multipart) or content-disposition.type = attachment)";
separator = " or ";
};
setFormatting = {
string = "ALL_BODY_PARTS";
};
titleFormatting = {
formatString = "Attachments from
${from.name:${from.address}}";
separator = " or ";
};
};
matchQuery = hasAttachments;
string = AttachmentTemplate;
};
matchQueries = {
hasAttachments = "#attachments-count != '0'";
};
maximumWidth = 16;
menuTitle = Attachments;
minimumWidth = 16;
sortAsInteger = 1;
sortKey = "#attachments-count";
titleImage = HeaderAttachment;
type = image;
};
date = {
formatting = {
children = (
{
formatString = "${#date-received}";
maximumValue = 1;
onlyIfCollapsed = 1;
},
{
doubleClick = {
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#date-received.day =
'${#date-received.day}'";
separator = " or ";
};
titleFormatting = {
formatString =
"\U201c${#date-received.day}\U201d";
prefixString = "Date is ";
separator = " or ";
};
};
formatString = "${#date-received}";
}
);
type = firstMatch;
};
sortKey = "#date-received";
sortMaximumValue = 1;
title = "Date Received";
type = date;
};
dateSent = {
formatting = {
children = (
{
formatString = "${#date-sent}";
maximumValue = 1;
onlyIfCollapsed = 1;
},
{
doubleClick = {
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#date-sent.day =
'${#date-sent.day}'";
separator = " or ";
};
titleFormatting = {
formatString = "\U201c${#date-sent.day}\U201d";
prefixString = "Date is ";
separator = " or ";
};
};
formatString = "${#date-sent}";
}
);
type = firstMatch;
};
sortKey = "#date-sent";
sortMaximumValue = 1;
title = "Date Sent";
type = date;
};
dateSentRelative = {
formatting = {
doubleClick = {
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#date-sent.day = '${#date-sent.day}'";
separator = " or ";
};
titleFormatting = {
formatString = "\U201c${#date-sent.day}\U201d";
prefixString = "Date is ";
separator = " or ";
};
};
formatString = "${#date-sent}";
};
menuTitle = "Date Sent (relative)";
sortKey = "#date-sent";
title = "Date Sent";
type = relativeDate;
};
flag = {
formatting = {
children = (
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = '\\Flagged'";
};
titleFormatting = {
string = Flagged;
};
};
matchQuery = isFlag7;
string = Flag0;
},
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = '\\Flagged'";
};
titleFormatting = {
string = Flagged;
};
};
matchQuery = isFlag6;
string = Flag6;
},
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = '\\Flagged'";
};
titleFormatting = {
string = Flagged;
};
};
matchQuery = isFlag5;
string = Flag5;
},
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = '\\Flagged'";
};
titleFormatting = {
string = Flagged;
};
};
matchQuery = isFlag3;
string = Flag3;
},
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = '\\Flagged'";
};
titleFormatting = {
string = Flagged;
};
};
matchQuery = isFlag4;
string = Flag4;
},
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = '\\Flagged'";
};
titleFormatting = {
string = Flagged;
};
};
matchQuery = isFlag2;
string = Flag2;
},
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = '\\Flagged'";
};
titleFormatting = {
string = Flagged;
};
};
matchQuery = isFlag1;
string = Flag1;
},
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = '\\Flagged'";
};
titleFormatting = {
string = Flagged;
};
};
matchQuery = isFlagged;
string = Flag0;
},
{
doubleClick = {
queryFormatting = {
string = "x-priority.value = '1' or
x-priority.value = '2'";
};
titleFormatting = {
string = "High priority";
};
};
matchQuery = isHighPriority;
string = HighPriority;
}
);
type = firstMatch;
};
matchQueries = {
isFlag1 = "#flags.flag = '\\Flagged' and #flags.flag =
'$MailFlagBit0'";
isFlag2 = "#flags.flag = '\\Flagged' and #flags.flag =
'$MailFlagBit1'";
isFlag3 = "#flags.flag = '\\Flagged' and #flags.flag =
'$MailFlagBit0' and #flags.flag = '$MailFlagBit1'";
isFlag4 = "#flags.flag = '\\Flagged' and #flags.flag =
'$MailFlagBit2'";
isFlag5 = "#flags.flag = '\\Flagged' and #flags.flag =
'$MailFlagBit0' and #flags.flag = '$MailFlagBit2'";
isFlag6 = "#flags.flag = '\\Flagged' and #flags.flag =
'$MailFlagBit1' and #flags.flag = '$MailFlagBit2'";
isFlag7 = "#flags.flag = '\\Flagged' and #flags.flag =
'$MailFlagBit0' and #flags.flag = '$MailFlagBit1' and #flags.flag =
'$MailFlagBit2'";
isFlagged = "#flags.flag = '\\Flagged'";
isHighPriority = "x-priority.value = '1' or x-priority.value =
'2'";
};
maximumWidth = 16;
menuTitle = Flag;
minimumWidth = 16;
sortKey = "#flags.flagged";
titleImage = HeaderFlag;
type = image;
};
flags = {
formatting = {
formatString = "${#flags}";
};
minimumWidth = 60;
title = "Raw Flags";
};
from = {
formatting = {
doubleClick = {
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "from.address = '${from.address}'";
separator = " or ";
};
titleFormatting = {
formatString = "\U201c${from.address}\U201d";
prefixString = "From ";
separator = " or ";
};
titleImage = NSUser;
};
formatString = "${from.name:${from.address}}";
placeholderString = "(No Sender)";
};
relatedSearches = (
{
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "from.address = '${from.address}'";
separator = " or ";
};
titleFormatting = {
formatString = "From \U201c${from.address}\U201d";
separator = " or ";
};
titleImage = NSUser;
},
{
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "from.name = '${from.name}'";
separator = " or ";
};
titleFormatting = {
formatString = "From \U201c${from.name}\U201d";
separator = " or ";
};
titleImage = NSUser;
},
{
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#any-address.address =
'${from.address}'";
separator = " or ";
};
titleFormatting = {
formatString = "From or To \U201c${from.address}\U201d";
separator = " or ";
};
titleImage = NSUser;
},
{
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#any-address.name = '${from.name}'";
separator = " or ";
};
titleFormatting = {
formatString = "From or To \U201c${from.name}\U201d";
separator = " or ";
};
titleImage = NSUser;
}
);
sortKey = "from.name,from.address";
title = From;
};
lastViewed = {
formatting = {
doubleClick = {
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#date-received.day =
'${#date-last-viewed.day}'";
separator = " or ";
};
titleFormatting = {
formatString = "\U201c${#date-last-viewed.day}\U201d";
prefixString = "Date is ";
separator = " or ";
};
};
};
sortKey = "#date-last-viewed";
title = "Last Viewed";
type = date;
};
mailbox = {
formatting = {
children = (
{
formatString = "${#source.path.noinbox} \U2013 ";
},
{
formatString = "${#source-name}";
}
);
};
sortKey = "#source.path.noinbox";
title = "Source Mailbox";
};
mailer = {
sortKey = "#mailer.name";
title = Mailer;
};
msgid = {
minimumWidth = 50;
sortAsInteger = 1;
sortKey = "#body-part-id";
title = "Msg ID";
};
pendingSubmissionDate = {
formatting = {
doubleClick = {
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#send-later-date.day =
'${#send-later-date.day}'";
separator = " or ";
};
titleFormatting = {
formatString = "\U201c${#send-later-date.day}\U201d";
prefixString = "Pending date is ";
separator = " or ";
};
};
formatString = "${#send-later-date}";
};
sortKey = "#send-later-date";
sortMaximumValue = 1;
title = "Pending Submission";
type = date;
};
pendingSubmissionDateRelative = {
formatting = {
doubleClick = {
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#send-later-date.day =
'${#send-later-date.day}'";
separator = " or ";
};
titleFormatting = {
formatString = "\U201c${#send-later-date.day}\U201d";
prefixString = "Pending date is ";
separator = " or ";
};
};
formatString = "${#send-later-date}";
};
menuTitle = "Pending Submission (relative)";
sortKey = "#send-later-date";
title = "Pending Submission";
type = relativeDate;
};
read = {
alwaysSearchOnDoubleClick = 1;
formatting = {
children = (
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = '\\Deleted'";
};
titleFormatting = {
string = Deleted;
};
};
matchQuery = isDeleted;
string = Deleted;
},
{
doubleClick = {
queryFormatting = {
string = "#flags.flag !=[x] '\\Seen'";
};
titleFormatting = {
string = Unread;
};
};
matchQuery = isUnread;
string = StateUnread;
},
{
matchQuery = isUnread;
onlyIfCollapsed = 1;
recursively = 1;
string = StateUnreadGray;
},
{
doubleClick = {
mailboxSelection = SENT;
messageSelection = onlyIfSingleMessage;
queryFormatting = {
formatString = "in-reply-to = '${message-id}'";
separator = " or ";
};
setFormatting = {
string = SENT;
};
titleFormatting = {
formatString = "Replies to
\U201c${subject}\U201d";
separator = " or ";
};
};
matchQuery = isRepliedPersonally;
string = ReplyTemplate;
},
{
doubleClick = {
mailboxSelection = "ALL_MESSAGES";
messageSelection = onlyIfSingleMessage;
queryFormatting = {
formatString = "references = '${message-id}'";
separator = " or ";
};
setFormatting = {
string = "ALL_MESSAGES";
};
titleFormatting = {
formatString = "Forwardings of
\U201c${subject}\U201d";
separator = " or ";
};
};
matchQuery = isForwarded;
string = ForwardTemplate;
},
{
doubleClick = {
mailboxSelection = "ALL_MESSAGES";
messageSelection = onlyIfSingleMessage;
queryFormatting = {
formatString = "resent-from exists and
message-id = '${message-id}'";
separator = " or ";
};
setFormatting = {
string = "ALL_MESSAGES";
};
titleFormatting = {
formatString = "Redirections of
\U201c${subject}\U201d";
separator = " or ";
};
};
matchQuery = isRedirected;
string = RedirectTemplate;
},
{
doubleClick = {
queryFormatting = {
string = "#flags.flag !=[x] '\\Seen'";
};
titleFormatting = {
string = Unread;
};
};
string = " ";
}
);
type = firstMatch;
};
matchQueries = {
isDeleted = "#flags.flag = '\\Deleted'";
isForwarded = "#flags.flag = '$Forwarded' or #flags.flag =
'Forwarded'";
isRedirected = "#flags.flag = '$Redirected' or #flags.flag =
'Redirected'";
isRepliedPersonally = "message-id =[c] $Sent.in-reply-to or
#flags.flag = '\\Answered'";
isUnread = "#flags.flag !=[x] '\\Seen'";
};
maximumWidth = 16;
menuTitle = Read;
minimumWidth = 16;
sortKey = "#flags.seen";
titleImage = HeaderUnread;
type = image;
};
relativeDate = {
formatting = {
doubleClick = {
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#date-received.day =
'${#date-received.day}'";
separator = " or ";
};
titleFormatting = {
formatString = "\U201c${#date-received.day}\U201d";
prefixString = "Date is ";
separator = " or ";
};
};
formatString = "${#date-received}";
};
menuTitle = "Date Received (relative)";
sortKey = "#date-received";
title = "Date Received";
type = relativeDate;
};
security = {
formatting = {
children = (
{
doubleClick = {
queryFormatting = {
string = "(content-type.type = 'multipart' and
content-type.subtype = 'encrypted') or (content-type.type = 'application' and
content-type.subtype = 'pkcs7-mime')";
};
titleFormatting = {
string = Encrypted;
};
};
matchQuery = isEncrypted;
string = "\Ud83d\Udd12";
},
{
doubleClick = {
queryFormatting = {
string = "content-type.type = 'multipart' and
content-type.subtype = 'signed'";
};
titleFormatting = {
string = Signed;
};
};
matchQuery = isSigned;
string = "\U2713";
}
);
type = firstMatch;
};
matchQueries = {
isEncrypted = "(content-type.type = 'multipart' and
content-type.subtype = 'encrypted') or (content-type.type = 'application' and
content-type.subtype = 'pkcs7-mime')";
isSigned = "content-type.type = 'multipart' and
content-type.subtype = 'signed'";
};
maximumWidth = 16;
menuTitle = Security;
minimumWidth = 16;
sortKey = "content-type.subtype";
title = "\Ud83d\Udd12";
};
size = {
formatting = {
alignment = right;
formatString = "${#size.formatted}";
};
sortAsInteger = 1;
sortKey = "#size";
title = Size;
};
spamscore = {
formatting = {
formatString = "${x-spam-status.score:${x-spam-score.score}}";
};
sortAsFloat = 1;
sortKey = "x-spam-status.score,x-spam-score.score";
title = "Spam Score";
type = number;
};
spamsievescore = {
formatting = {
formatString = "${#spamsieve-score}";
};
sortAsInteger = 1;
sortKey = "#spamsieve-score";
title = "SpamSieve Score";
};
state = {
formatting = {
children = (
{
formatString = "${##progress}";
matchQuery = isInProgress;
},
{
formatString = "Waiting to retry";
matchQuery = isDelayed;
},
{
matchQuery = isPending;
string = "Pending submission";
},
{
matchQuery = isDraft;
string = Draft;
},
{
formatString = "Sent via ${#relayed.server}";
matchQuery = isSubmitted;
}
);
type = firstMatch;
};
matchQueries = {
isDelayed = "#relay exists and #relay-date exists";
isDraft = "#flags.flag = '\\Draft'";
isInProgress = "##progress exists";
isPending = "#relay exists";
isSubmitted = "#relayed exists";
};
title = State;
type = levelIndicator;
};
subject = {
formatting = {
doubleClick = {
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "subject.body = '${subject.body}'";
separator = " or ";
};
titleFormatting = {
formatString = "\U201c${subject.body}\U201d";
prefixString = "Subject is ";
separator = " or ";
};
};
formatString = "${subject.prefix:+${subject.prefix}
}${subject.blob:+[${subject.blob}] }${subject.body}";
placeholderString = "(No Subject)";
};
minimumWidth = 10;
relatedSearches = (
{
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "subject.body = '${subject.body}'";
separator = " or ";
};
titleFormatting = {
formatString = "Related to \U201c${subject.body}\U201d";
separator = " or ";
};
},
{
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "subject.blob = '${subject.blob}'";
separator = " or ";
};
titleFormatting = {
formatString = "Related to [${subject.blob}]";
separator = " or ";
};
}
);
sortKey = "subject.blob,subject.body,subject.prefix";
title = Subject;
};
tag = {
formatting = {
children = (
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = 'MU'";
};
titleFormatting = {
string = MU;
};
};
matchQuery = MU;
string = MU;
},
{
doubleClick = {
queryFormatting = {
string = "#flags.flag = 'Harmonization'";
};
titleFormatting = {
string = Harmonization;
};
};
matchQuery = Harmonization;
string = Harmonization;
}
);
type = firstMatch;
};
matchQueries = {
isSomeOtherTag = "#flags.flag = 'Harmonization'";
isSomeTag = "#flags.flag = 'MU'";
};
title = Tag;
};
to = {
formatting = {
doubleClick = {
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "to.address = '${to.address}'";
separator = " or ";
};
titleFormatting = {
formatString = "\U201c${to.address}\U201d";
prefixString = "To ";
separator = " or ";
};
};
formatString = "${to.name:${to.address}}";
placeholderString = "(No Recipient)";
};
relatedSearches = (
{
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#recipient.address =
'${#recipient.address}'";
separator = " or ";
};
titleFormatting = {
formatString = "To \U201c${#recipient.address}\U201d";
separator = " or ";
};
titleImage = NSUser;
},
{
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#recipient.name = '${#recipient.name}'";
separator = " or ";
};
titleFormatting = {
formatString = "To \U201c${#recipient.name}\U201d";
separator = " or ";
};
titleImage = NSUser;
},
{
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#any-address.address =
'${#recipient.address}'";
separator = " or ";
};
titleFormatting = {
formatString = "From or To
\U201c${#recipient.address}\U201d";
separator = " or ";
};
titleImage = NSUser;
},
{
queryFormatting = {
escapeSingleQuotes = 1;
formatString = "#any-address.name =
'${#recipient.name}'";
separator = " or ";
};
titleFormatting = {
formatString = "From or To
\U201c${#recipient.name}\U201d";
separator = " or ";
};
titleImage = NSUser;
}
);
sortKey = "to.split.name,to.split.address";
title = To;
};
uid = {
minimumWidth = 50;
sortAsInteger = 1;
sortKey = "#uid";
title = UID;
};
};
defaultColumns = (
read,
flag,
from,
subject,
date
);
defaultSortKey = "#date-received";
outlineColumn = from;
}
_______________________________________________
mailmate mailing list
mailmate@lists.freron.com
http://lists.freron.com/listinfo/mailmate