mirror of https://github.com/djcb/mu.git
* mu: add 'contact:' as an alias for to:/from:/cc:/bcc:
This commit is contained in:
parent
8ad01e4aa8
commit
48467099b5
6
TODO
6
TODO
|
@ -9,7 +9,6 @@
|
||||||
- put threading information in the database, and enable getting the complete
|
- put threading information in the database, and enable getting the complete
|
||||||
threads when searching
|
threads when searching
|
||||||
- refactor fill_database function in test cases
|
- refactor fill_database function in test cases
|
||||||
- add 'contact:' as alias for to: or cc: or bcc: or from:
|
|
||||||
|
|
||||||
*** mu-guile
|
*** mu-guile
|
||||||
|
|
||||||
|
@ -50,9 +49,9 @@
|
||||||
- fix unsafe temp-file handling
|
- fix unsafe temp-file handling
|
||||||
|
|
||||||
* Done (0.9.9.x)
|
* Done (0.9.9.x)
|
||||||
|
|
||||||
- mu4e: scroll down –> go to next message
|
|
||||||
|
|
||||||
|
- mu4e: scroll down –> go to next message
|
||||||
|
- mu: add contact: as a shortcut for matching from/to/cc/bcc:
|
||||||
|
|
||||||
|
|
||||||
* Done
|
* Done
|
||||||
|
@ -157,4 +156,3 @@
|
||||||
# Local Variables:
|
# Local Variables:
|
||||||
# mode: org
|
# mode: org
|
||||||
# End:
|
# End:
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,10 @@ typedef guint8 MuMsgFieldId;
|
||||||
static const MuMsgFieldId MU_MSG_FIELD_ID_NONE = (MuMsgFieldId)-1;
|
static const MuMsgFieldId MU_MSG_FIELD_ID_NONE = (MuMsgFieldId)-1;
|
||||||
#define MU_MSG_STRING_FIELD_ID_NUM (MU_MSG_FIELD_ID_UID + 1)
|
#define MU_MSG_STRING_FIELD_ID_NUM (MU_MSG_FIELD_ID_UID + 1)
|
||||||
|
|
||||||
|
/* this is a shortcut for To/From/Cc/Bcc in queries; handled specially
|
||||||
|
* in mu-query.cc and mu-str.c */
|
||||||
|
#define MU_MSG_FIELD_PSEUDO_CONTACT "contact"
|
||||||
|
|
||||||
#define mu_msg_field_id_is_valid(MFID) \
|
#define mu_msg_field_id_is_valid(MFID) \
|
||||||
((MFID) < MU_MSG_FIELD_ID_NUM)
|
((MFID) < MU_MSG_FIELD_ID_NUM)
|
||||||
|
|
||||||
|
|
|
@ -166,6 +166,9 @@ public:
|
||||||
|
|
||||||
mu_msg_field_foreach ((MuMsgFieldForeachFunc)add_prefix,
|
mu_msg_field_foreach ((MuMsgFieldForeachFunc)add_prefix,
|
||||||
&_qparser);
|
&_qparser);
|
||||||
|
|
||||||
|
/* add some convenient special prefixes */
|
||||||
|
add_special_prefixes ();
|
||||||
}
|
}
|
||||||
|
|
||||||
~_MuQuery () { mu_store_unref (_store); }
|
~_MuQuery () { mu_store_unref (_store); }
|
||||||
|
@ -181,6 +184,21 @@ public:
|
||||||
Xapian::QueryParser& query_parser () { return _qparser; }
|
Xapian::QueryParser& query_parser () { return _qparser; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void add_special_prefixes () {
|
||||||
|
char pfx[] = { '\0', '\0' };
|
||||||
|
|
||||||
|
/* add 'contact' as a shortcut for
|
||||||
|
* From/Cc/Bcc/To: */
|
||||||
|
pfx[0] = mu_msg_field_xapian_prefix(MU_MSG_FIELD_ID_FROM);
|
||||||
|
_qparser.add_prefix (MU_MSG_FIELD_PSEUDO_CONTACT, pfx);
|
||||||
|
pfx[0] = mu_msg_field_xapian_prefix(MU_MSG_FIELD_ID_TO);
|
||||||
|
_qparser.add_prefix (MU_MSG_FIELD_PSEUDO_CONTACT, pfx);
|
||||||
|
pfx[0] = mu_msg_field_xapian_prefix(MU_MSG_FIELD_ID_CC);
|
||||||
|
_qparser.add_prefix (MU_MSG_FIELD_PSEUDO_CONTACT, pfx);
|
||||||
|
pfx[0] = mu_msg_field_xapian_prefix(MU_MSG_FIELD_ID_BCC);
|
||||||
|
_qparser.add_prefix (MU_MSG_FIELD_PSEUDO_CONTACT, pfx);
|
||||||
|
}
|
||||||
|
|
||||||
Xapian::QueryParser _qparser;
|
Xapian::QueryParser _qparser;
|
||||||
MuDateRangeProcessor _date_range_processor;
|
MuDateRangeProcessor _date_range_processor;
|
||||||
MuSizeRangeProcessor _size_range_processor;
|
MuSizeRangeProcessor _size_range_processor;
|
||||||
|
|
|
@ -437,6 +437,10 @@ check_for_field (const char *str, gboolean *is_field,
|
||||||
|
|
||||||
mu_msg_field_foreach ((MuMsgFieldForeachFunc)each_check_prefix,
|
mu_msg_field_foreach ((MuMsgFieldForeachFunc)each_check_prefix,
|
||||||
&pfx);
|
&pfx);
|
||||||
|
/* also check special prefixes... */
|
||||||
|
if (!pfx.match)
|
||||||
|
pfx.match = g_str_has_prefix
|
||||||
|
(str, MU_MSG_FIELD_PSEUDO_CONTACT ":");
|
||||||
|
|
||||||
*is_field = pfx.match;
|
*is_field = pfx.match;
|
||||||
*is_range_field = pfx.range_field;
|
*is_range_field = pfx.range_field;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.TH MU-EASY 1 "July 2012" "User Manuals"
|
.TH MU-EASY 1 "October 2012" "User Manuals"
|
||||||
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
|
|
||||||
|
@ -144,6 +144,13 @@ Get all messages from Jim without an attachment:
|
||||||
\fB$ mu find from:jim AND NOT flag:attach\fR
|
\fB$ mu find from:jim AND NOT flag:attach\fR
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
Get all messages where Jack is in one of the contact fields:
|
||||||
|
.nf
|
||||||
|
\fB$ mu find contact:jack\fR
|
||||||
|
.fi
|
||||||
|
This uses the special contact: pseudo-field which matches (\fBfrom\fR,
|
||||||
|
\fBto\fR, \fBcc\fR and \fBbcc\fR).
|
||||||
|
|
||||||
Get all messages in the Sent Items folder about yoghurt:
|
Get all messages in the Sent Items folder about yoghurt:
|
||||||
.nf
|
.nf
|
||||||
\fB$mu find maildir:'/Sent Items' yoghurt\fR
|
\fB$mu find maildir:'/Sent Items' yoghurt\fR
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.TH MU FIND 1 "August 2012" "User Manuals"
|
.TH MU FIND 1 "October 2012" "User Manuals"
|
||||||
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
|
|
||||||
|
@ -105,8 +105,8 @@ search fields and their abbreviations:
|
||||||
cc,c Cc (carbon-copy) recipient(s)
|
cc,c Cc (carbon-copy) recipient(s)
|
||||||
bcc,h Bcc (blind-carbon-copy) recipient(s)
|
bcc,h Bcc (blind-carbon-copy) recipient(s)
|
||||||
from,f Message sender
|
from,f Message sender
|
||||||
subject,s Message subject
|
|
||||||
to,t To: recipient(s)
|
to,t To: recipient(s)
|
||||||
|
subject,s Message subject
|
||||||
maildir,m Maildir
|
maildir,m Maildir
|
||||||
msgid,i Message-ID
|
msgid,i Message-ID
|
||||||
prio,p Message priority ('low', 'normal' or 'high')
|
prio,p Message priority ('low', 'normal' or 'high')
|
||||||
|
@ -119,9 +119,10 @@ search fields and their abbreviations:
|
||||||
tag,x Tags for the message (\fIX-Label\fR and/or \fIX-Keywords\fR)
|
tag,x Tags for the message (\fIX-Label\fR and/or \fIX-Keywords\fR)
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
For clarity, this man-page uses the longer versions.
|
There is also the special field \fBcontact\fR, which matches all
|
||||||
|
contact-fields (\fBfrom\fR, \fBto\fR, \fBcc\fR and \fBbcc\fR).
|
||||||
|
|
||||||
`The meaning of most of these fields should be clear, but some require some
|
The meaning of most of these fields should be clear, but some require some
|
||||||
extra discusion.
|
extra discusion.
|
||||||
|
|
||||||
First, the message flags field describes certain properties of the message, as
|
First, the message flags field describes certain properties of the message, as
|
||||||
|
|
120
mu4e/mu4e.texi
120
mu4e/mu4e.texi
|
@ -7,7 +7,7 @@
|
||||||
@c Cf. Texinfo manual 14.2
|
@c Cf. Texinfo manual 14.2
|
||||||
@set txicodequoteundirected
|
@set txicodequoteundirected
|
||||||
@set txicodequotebacktick
|
@set txicodequotebacktick
|
||||||
|
|
||||||
@documentencoding UTF-8
|
@documentencoding UTF-8
|
||||||
@c %**end of header
|
@c %**end of header
|
||||||
@include version.texi
|
@include version.texi
|
||||||
|
@ -85,7 +85,7 @@ At the end of the manual, there are some example configurations, to get up to
|
||||||
speed quickly - @ref{Example configurations}. There's also a section of
|
speed quickly - @ref{Example configurations}. There's also a section of
|
||||||
@ref{FAQ}, which should help you with some
|
@ref{FAQ}, which should help you with some
|
||||||
common questions.
|
common questions.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Introduction:: How it all began
|
* Introduction:: How it all began
|
||||||
* Getting started:: Setting things up
|
* Getting started:: Setting things up
|
||||||
|
@ -130,7 +130,7 @@ Since none of the existing ones worked the way I wanted, I created my
|
||||||
own. @command{emacs} is an integral part of my workflow, so it made a lot of
|
own. @command{emacs} is an integral part of my workflow, so it made a lot of
|
||||||
sense to use it for e-mail as well. And as I already had written an e-mail
|
sense to use it for e-mail as well. And as I already had written an e-mail
|
||||||
search engine (@t{mu}), it seemed only logical to use that as a basis.
|
search engine (@t{mu}), it seemed only logical to use that as a basis.
|
||||||
|
|
||||||
@node Other mail clients
|
@node Other mail clients
|
||||||
@section Other mail clients
|
@section Other mail clients
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ OS), the below at least be helpful in identifying the packages to install.
|
||||||
|
|
||||||
We provide some instructions for Debian, Ubuntu and Fedora; if those do not
|
We provide some instructions for Debian, Ubuntu and Fedora; if those do not
|
||||||
apply to you, you can follow either @ref{Building from a release tarball} or
|
apply to you, you can follow either @ref{Building from a release tarball} or
|
||||||
@ref{Building from git}.
|
@ref{Building from git}.
|
||||||
|
|
||||||
@subsection Dependencies for Debian/Ubuntu
|
@subsection Dependencies for Debian/Ubuntu
|
||||||
|
|
||||||
|
@ -312,7 +312,7 @@ $ sudo make install
|
||||||
|
|
||||||
After this, @t{mu} and @t{mu4e} should be installed @footnote{there's a hard
|
After this, @t{mu} and @t{mu4e} should be installed @footnote{there's a hard
|
||||||
dependency between versions of @t{mu4e} and @t{mu} - you cannot combine
|
dependency between versions of @t{mu4e} and @t{mu} - you cannot combine
|
||||||
different versions} on your system, and be available from the command line
|
different versions} on your system, and be available from the command line
|
||||||
in @command{emacs}.
|
in @command{emacs}.
|
||||||
|
|
||||||
You may need to restart @command{emacs}, so it can find @t{mu4e} in its
|
You may need to restart @command{emacs}, so it can find @t{mu4e} in its
|
||||||
|
@ -350,7 +350,7 @@ not, some setup is required:
|
||||||
maildir (@file{~/Maildir}, often). Because it is such a common case, there is
|
maildir (@file{~/Maildir}, often). Because it is such a common case, there is
|
||||||
a full example of setting @t{mu4e} up with @t{offlineimap} and Gmail;
|
a full example of setting @t{mu4e} up with @t{offlineimap} and Gmail;
|
||||||
@pxref{Gmail configuration}.
|
@pxref{Gmail configuration}.
|
||||||
@item @emph{Using a local mail server} - if you are using a local mail-server
|
@item @emph{Using a local mail server} - if you are using a local mail-server
|
||||||
(such as @t{postfix} or @t{qmail}), you can teach them to deliver into a
|
(such as @t{postfix} or @t{qmail}), you can teach them to deliver into a
|
||||||
maildir as well, maybe in combination with @t{procmail}. A bit of googling
|
maildir as well, maybe in combination with @t{procmail}. A bit of googling
|
||||||
should be able to provide you with the details.
|
should be able to provide you with the details.
|
||||||
|
@ -436,7 +436,7 @@ runtime. This allows for dynamically changing them depending on context. See
|
||||||
|
|
||||||
@code{mu4e-maildir} takes an actual filesystem-path, the other folder names
|
@code{mu4e-maildir} takes an actual filesystem-path, the other folder names
|
||||||
are all relative to @code{mu4e-maildir}.
|
are all relative to @code{mu4e-maildir}.
|
||||||
|
|
||||||
@node Retrieval and indexing
|
@node Retrieval and indexing
|
||||||
@section Retrieval and indexing
|
@section Retrieval and indexing
|
||||||
|
|
||||||
|
@ -465,7 +465,7 @@ A simple setup could look something like:
|
||||||
It is possible to get notifications when the indexing process does any updates
|
It is possible to get notifications when the indexing process does any updates
|
||||||
- for example when receiving new mail. See @code{mu4e-index-updated-hook} and
|
- for example when receiving new mail. See @code{mu4e-index-updated-hook} and
|
||||||
some tips on its usage in the @ref{FAQ}.
|
some tips on its usage in the @ref{FAQ}.
|
||||||
|
|
||||||
@node Sending mail
|
@node Sending mail
|
||||||
@section Sending mail
|
@section Sending mail
|
||||||
|
|
||||||
|
@ -526,7 +526,7 @@ other, and the default key-bindings to navigate between them.
|
||||||
|
|
||||||
@cartouche
|
@cartouche
|
||||||
@verbatim
|
@verbatim
|
||||||
|
|
||||||
[C] +--------+ [RFCE]
|
[C] +--------+ [RFCE]
|
||||||
--------> | editor | <--------
|
--------> | editor | <--------
|
||||||
/ +--------+ \
|
/ +--------+ \
|
||||||
|
@ -541,7 +541,7 @@ other, and the default key-bindings to navigate between them.
|
||||||
+-----+
|
+-----+
|
||||||
| raw |
|
| raw |
|
||||||
+-----+
|
+-----+
|
||||||
|
|
||||||
Default bindings
|
Default bindings
|
||||||
----------------
|
----------------
|
||||||
R: Reply s: search .: raw view (toggle)
|
R: Reply s: search .: raw view (toggle)
|
||||||
|
@ -575,25 +575,25 @@ The main view looks something like the following:
|
||||||
@cartouche
|
@cartouche
|
||||||
@verbatim
|
@verbatim
|
||||||
* mu4e - mu for emacs version x.x C
|
* mu4e - mu for emacs version x.x C
|
||||||
|
|
||||||
Basics
|
Basics
|
||||||
|
|
||||||
* [j]ump to some maildir
|
* [j]ump to some maildir
|
||||||
* enter a [s]earch query
|
* enter a [s]earch query
|
||||||
* [C]ompose a new message
|
* [C]ompose a new message
|
||||||
|
|
||||||
Bookmarks
|
Bookmarks
|
||||||
|
|
||||||
* [bu] Unread messages
|
* [bu] Unread messages
|
||||||
* [bt] Today's messages
|
* [bt] Today's messages
|
||||||
* [bw] Last 7 days
|
* [bw] Last 7 days
|
||||||
* [bp] Messages with images
|
* [bp] Messages with images
|
||||||
Misc
|
Misc
|
||||||
|
|
||||||
* [U]pdate email & database
|
* [U]pdate email & database
|
||||||
* toggle [m]ail sending mode (direct)
|
* toggle [m]ail sending mode (direct)
|
||||||
* [f]lush queued mail
|
* [f]lush queued mail
|
||||||
|
|
||||||
* [A]bout mu4e
|
* [A]bout mu4e
|
||||||
* [H]elp
|
* [H]elp
|
||||||
* [q]uit mu4e
|
* [q]uit mu4e
|
||||||
|
@ -793,7 +793,7 @@ q,z leave the headers buffer
|
||||||
|
|
||||||
@node Marking messages
|
@node Marking messages
|
||||||
@section Marking messages
|
@section Marking messages
|
||||||
|
|
||||||
When processing messages, the first step is to @emph{mark} them for a certain
|
When processing messages, the first step is to @emph{mark} them for a certain
|
||||||
action, such as deletion or move. Then, after one or more messages are marked,
|
action, such as deletion or move. Then, after one or more messages are marked,
|
||||||
you execute (@code{mu4e-mark-execute-all}, @key{x}) these actions. This
|
you execute (@code{mu4e-mark-execute-all}, @key{x}) these actions. This
|
||||||
|
@ -826,7 +826,7 @@ affects the sort order.
|
||||||
The header field used for sorting is indicated by ``@t{V}'' or
|
The header field used for sorting is indicated by ``@t{V}'' or
|
||||||
``@t{^}''@footnote{or you can use little graphical triangles; see variable
|
``@t{^}''@footnote{or you can use little graphical triangles; see variable
|
||||||
@code{mu4e-use-fancy-chars}}, indicating the sort order (descending or
|
@code{mu4e-use-fancy-chars}}, indicating the sort order (descending or
|
||||||
ascending, respectively).
|
ascending, respectively).
|
||||||
|
|
||||||
You can change the sort order by clicking the corresponding field with the
|
You can change the sort order by clicking the corresponding field with the
|
||||||
mouse, or with @kbd{M-x mu4e-headers-change-sorting} (@key{O}); note that not
|
mouse, or with @kbd{M-x mu4e-headers-change-sorting} (@key{O}); note that not
|
||||||
|
@ -838,7 +838,7 @@ updated immediately using the new parameters. You can toggle full-search
|
||||||
|
|
||||||
If you want to change the defaults for these settings, you can use the
|
If you want to change the defaults for these settings, you can use the
|
||||||
variables @code{mu4e-headers-sortfield} and @code{mu4e-headers-show-threads}.
|
variables @code{mu4e-headers-sortfield} and @code{mu4e-headers-show-threads}.
|
||||||
|
|
||||||
@node HV Actions
|
@node HV Actions
|
||||||
@section Actions
|
@section Actions
|
||||||
|
|
||||||
|
@ -912,16 +912,16 @@ An example message view:
|
||||||
Date: Mon 19 Jan 2004 09:39:42 AM EET
|
Date: Mon 19 Jan 2004 09:39:42 AM EET
|
||||||
Maildir: /inbox
|
Maildir: /inbox
|
||||||
Attachments(2): [1]DSCN4961.JPG(1.3M), [2]DSCN4962.JPG(1.4M)
|
Attachments(2): [1]DSCN4961.JPG(1.3M), [2]DSCN4962.JPG(1.4M)
|
||||||
|
|
||||||
Hi Julia,
|
Hi Julia,
|
||||||
|
|
||||||
Some pics from our trip to Cerin Amroth. Enjoy!
|
Some pics from our trip to Cerin Amroth. Enjoy!
|
||||||
|
|
||||||
All the best,
|
All the best,
|
||||||
Randy.
|
Randy.
|
||||||
|
|
||||||
On Sun 21 Dec 2003 09:06:34 PM EET, Julia wrote:
|
On Sun 21 Dec 2003 09:06:34 PM EET, Julia wrote:
|
||||||
|
|
||||||
[....]
|
[....]
|
||||||
@end verbatim
|
@end verbatim
|
||||||
@end cartouche
|
@end cartouche
|
||||||
|
@ -945,8 +945,8 @@ using @code{mu4e-view-hide-cited}, bound to @key{h}. If you want to do this
|
||||||
automatically for every message, invoke the function in your
|
automatically for every message, invoke the function in your
|
||||||
@code{mu4e-view-mode-hook}.
|
@code{mu4e-view-mode-hook}.
|
||||||
@item For search-related operations, see @ref{Searching}.
|
@item For search-related operations, see @ref{Searching}.
|
||||||
@item You can scroll down the message using @key{SPC}; if you do this at the
|
@item You can scroll down the message using @key{SPC}; if you do this at the
|
||||||
end of a message,it automatically takes you to the next one. If you want to
|
end of a message,it automatically takes you to the next one. If you want to
|
||||||
prevent this behavior, set @code{mu4e-view-scroll-to-next} to @code{nil}.
|
prevent this behavior, set @code{mu4e-view-scroll-to-next} to @code{nil}.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
@ -1319,7 +1319,7 @@ for editing-related settings. @code{mu4e-compose-parent-message} (see above)
|
||||||
is also at your disposal.
|
is also at your disposal.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
Let's look at some examples. First, let's suppose we want to set the
|
Let's look at some examples. First, let's suppose we want to set the
|
||||||
@t{From:}-address for a reply message based on the receiver of the original:
|
@t{From:}-address for a reply message based on the receiver of the original:
|
||||||
@lisp
|
@lisp
|
||||||
|
@ -1420,7 +1420,7 @@ do this accidentally!
|
||||||
|
|
||||||
@itemize
|
@itemize
|
||||||
@item If you want use @t{mu4e} as @command{emacs}' default program for sending mail,
|
@item If you want use @t{mu4e} as @command{emacs}' default program for sending mail,
|
||||||
see @ref{Setting the default emacs mail program}.
|
see @ref{Setting the default emacs mail program}.
|
||||||
@item Normally, @t{mu4e} @emph{buries} the message buffer after sending; if you want
|
@item Normally, @t{mu4e} @emph{buries} the message buffer after sending; if you want
|
||||||
to kill the buffer instead, add something like the following to your
|
to kill the buffer instead, add something like the following to your
|
||||||
configuration:
|
configuration:
|
||||||
|
@ -1485,6 +1485,10 @@ flag:signed prio:high
|
||||||
# get all messages from Jim without an attachment:
|
# get all messages from Jim without an attachment:
|
||||||
from:jim AND NOT flag:attach
|
from:jim AND NOT flag:attach
|
||||||
|
|
||||||
|
# get all message with Alice in one of the contacts fields (to, from, cc,
|
||||||
|
# bcc):
|
||||||
|
contact:alice
|
||||||
|
|
||||||
# get all unread messages where the subject mentions Angstrom:
|
# get all unread messages where the subject mentions Angstrom:
|
||||||
# (search is case-insensitive and accent-insensitive)
|
# (search is case-insensitive and accent-insensitive)
|
||||||
subject:angstrom flag:unread
|
subject:angstrom flag:unread
|
||||||
|
@ -1689,19 +1693,19 @@ apply to messages:
|
||||||
|
|
||||||
@cartouche
|
@cartouche
|
||||||
@verbatim
|
@verbatim
|
||||||
mark for/as | keybinding | description
|
mark for/as | keybinding | description
|
||||||
--------------+-------------+--------------------------
|
--------------+-------------+--------------------------
|
||||||
'something' | <insert> | mark now, decide later
|
'something' | <insert> | mark now, decide later
|
||||||
delete | D, <delete> | delete
|
delete | D, <delete> | delete
|
||||||
flag | + | mark as 'flagged' (``starred'')
|
flag | + | mark as 'flagged' (``starred'')
|
||||||
move | m | move to some maildir
|
move | m | move to some maildir
|
||||||
read | ! | mark as read
|
read | ! | mark as read
|
||||||
refile | r | mark for refiling
|
refile | r | mark for refiling
|
||||||
trash | d | move to the trash folder
|
trash | d | move to the trash folder
|
||||||
unflag | - | remove 'flagged' mark
|
unflag | - | remove 'flagged' mark
|
||||||
unmark | u | remove mark at point
|
unmark | u | remove mark at point
|
||||||
unmark all | U | remove all marks
|
unmark all | U | remove all marks
|
||||||
unread | ? | marks as unread
|
unread | ? | marks as unread
|
||||||
@end verbatim
|
@end verbatim
|
||||||
@end cartouche
|
@end cartouche
|
||||||
|
|
||||||
|
@ -1719,7 +1723,7 @@ be@footnote{This kind of 'deferred marking' is similar to the facility in
|
||||||
like, and uses the same key binding (@key{insert}).} , using @kbd{M-x
|
like, and uses the same key binding (@key{insert}).} , using @kbd{M-x
|
||||||
mu4e-mark-resolve-deferred-marks} (@key{#}). Alternatively, @t{mu4e} will ask
|
mu4e-mark-resolve-deferred-marks} (@key{#}). Alternatively, @t{mu4e} will ask
|
||||||
you when you execute the marks (@key{x}).
|
you when you execute the marks (@key{x}).
|
||||||
|
|
||||||
@node Executing the marks
|
@node Executing the marks
|
||||||
@section Executing the marks
|
@section Executing the marks
|
||||||
|
|
||||||
|
@ -1762,7 +1766,7 @@ Custom mark functions are to be appended to the list
|
||||||
@item The name of the marker - a short string describing this marker. The
|
@item The name of the marker - a short string describing this marker. The
|
||||||
first character of this string determines its shortcut, so these should be
|
first character of this string determines its shortcut, so these should be
|
||||||
unique. If necessary, simply prefix the name with a unique character.
|
unique. If necessary, simply prefix the name with a unique character.
|
||||||
@item a predicate function, taking two arguments @var{msg} and @var{param}.
|
@item a predicate function, taking two arguments @var{msg} and @var{param}.
|
||||||
@var{msg} is the message plist (see @ref{Message functions} and @var{param} is
|
@var{msg} is the message plist (see @ref{Message functions} and @var{param} is
|
||||||
a parameter provided by the third of the marker elements (see the next
|
a parameter provided by the third of the marker elements (see the next
|
||||||
item). The predicate function should return non-@t{nil} if the message
|
item). The predicate function should return non-@t{nil} if the message
|
||||||
|
@ -1788,7 +1792,7 @@ After evaluating this expression, you can use it by pressing @key{&} in the
|
||||||
headers buffer to select a custom marker function, and then @key{M} to choose
|
headers buffer to select a custom marker function, and then @key{M} to choose
|
||||||
this particular one (@t{M} because it is the first character of the
|
this particular one (@t{M} because it is the first character of the
|
||||||
description).
|
description).
|
||||||
|
|
||||||
As you can see, it's not very hard to define simple functions to match
|
As you can see, it's not very hard to define simple functions to match
|
||||||
messages. There are more examples in the defaults for
|
messages. There are more examples in the defaults for
|
||||||
@code{mu4e-headers-custom-markers}; see @file{mu4e-headers.el} and see
|
@code{mu4e-headers-custom-markers}; see @file{mu4e-headers.el} and see
|
||||||
|
@ -1808,7 +1812,7 @@ In @ref{Folders}, we explained how you can set up @t{mu4e}'s special folders:
|
||||||
|
|
||||||
In some cases, having such static folders may not suffice - perhaps you want
|
In some cases, having such static folders may not suffice - perhaps you want
|
||||||
to change the folders depending on the context. For example, the folder for
|
to change the folders depending on the context. For example, the folder for
|
||||||
refiling could vary, based on the sender of the message.
|
refiling could vary, based on the sender of the message.
|
||||||
|
|
||||||
To make this possible, instead of setting the standard folders to a string,
|
To make this possible, instead of setting the standard folders to a string,
|
||||||
you can set them to be a @emph{function} that takes a message as its
|
you can set them to be a @emph{function} that takes a message as its
|
||||||
|
@ -1890,7 +1894,7 @@ work-email. You can achieve this with something like:
|
||||||
(setq mu4e-trash-folder
|
(setq mu4e-trash-folder
|
||||||
(lambda (msg)
|
(lambda (msg)
|
||||||
;; the 'and msg' is to handle the case where msg is nil
|
;; the 'and msg' is to handle the case where msg is nil
|
||||||
(if (and msg
|
(if (and msg
|
||||||
(mu4e-message-contact-field-matches msg :to "me@@work.com"))
|
(mu4e-message-contact-field-matches msg :to "me@@work.com"))
|
||||||
"/trash-work"
|
"/trash-work"
|
||||||
"/trash")))
|
"/trash")))
|
||||||
|
@ -2036,7 +2040,7 @@ description).
|
||||||
(add-to-list 'mu4e-view-attachment-actions
|
(add-to-list 'mu4e-view-attachment-actions
|
||||||
'("ncount lines" . count-lines-in-attachment) t)
|
'("ncount lines" . count-lines-in-attachment) t)
|
||||||
@end lisp
|
@end lisp
|
||||||
|
|
||||||
@node More example actions
|
@node More example actions
|
||||||
@section More example actions
|
@section More example actions
|
||||||
|
|
||||||
|
@ -2051,11 +2055,11 @@ browser, or listening to a message's body-text using text-to-speech.
|
||||||
@t{mu4e} is designed to be easily extendible - that is, write your own
|
@t{mu4e} is designed to be easily extendible - that is, write your own
|
||||||
emacs-lisp to make @t{mu4e} behave exactly as you want. Here, we provide some
|
emacs-lisp to make @t{mu4e} behave exactly as you want. Here, we provide some
|
||||||
guidelines for doing so.
|
guidelines for doing so.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Extension points::
|
* Extension points::
|
||||||
* Available functions::
|
* Available functions::
|
||||||
* Message functions::
|
* Message functions::
|
||||||
* Utility functions::
|
* Utility functions::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
@ -2089,7 +2093,7 @@ its docstring).
|
||||||
|
|
||||||
@node Available functions
|
@node Available functions
|
||||||
@section Available functions
|
@section Available functions
|
||||||
|
|
||||||
The whole of @t{mu4e} consists of hundreds of elisp functions. However, the
|
The whole of @t{mu4e} consists of hundreds of elisp functions. However, the
|
||||||
majority of those are for @emph{internal} use only; you can recognize them
|
majority of those are for @emph{internal} use only; you can recognize them
|
||||||
easily, because they all start with @code{mu4e~}. These function make all
|
easily, because they all start with @code{mu4e~}. These function make all
|
||||||
|
@ -2156,7 +2160,7 @@ shortcuts (@code{mu4e-maildir-shortcuts}), or the full set of available
|
||||||
maildirs.
|
maildirs.
|
||||||
@item @code{mu4e-running-p}: return @code{t} if the @t{mu4e} process is
|
@item @code{mu4e-running-p}: return @code{t} if the @t{mu4e} process is
|
||||||
running, @code{nil} otherwise.
|
running, @code{nil} otherwise.
|
||||||
@item @code{mu4e-log} logs to the @t{mu4e} debugging log if it is enabled;
|
@item @code{mu4e-log} logs to the @t{mu4e} debugging log if it is enabled;
|
||||||
see @code{mu4e-toggle-logging}.
|
see @code{mu4e-toggle-logging}.
|
||||||
@item @code{mu4e-message}, @code{mu4e-warning}, @code{mu4e-error} are the
|
@item @code{mu4e-message}, @code{mu4e-warning}, @code{mu4e-error} are the
|
||||||
@t{mu4e} equivalents of the normal @t{elisp} @code{message},
|
@t{mu4e} equivalents of the normal @t{elisp} @code{message},
|
||||||
|
@ -2165,7 +2169,7 @@ running, @code{nil} otherwise.
|
||||||
@code{error} functions.
|
@code{error} functions.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
|
||||||
@node Interaction with other tools
|
@node Interaction with other tools
|
||||||
@appendix Interaction with other tools
|
@appendix Interaction with other tools
|
||||||
|
|
||||||
|
@ -2406,7 +2410,7 @@ well; so put in your configuration:
|
||||||
|
|
||||||
@lisp
|
@lisp
|
||||||
(require 'gnus-dired)
|
(require 'gnus-dired)
|
||||||
;; make the `gnus-dired-mail-buffers' function also work on
|
;; make the `gnus-dired-mail-buffers' function also work on
|
||||||
;; message-mode derived modes, such as mu4e-compose-mode
|
;; message-mode derived modes, such as mu4e-compose-mode
|
||||||
(defun gnus-dired-mail-buffers ()
|
(defun gnus-dired-mail-buffers ()
|
||||||
"Return a list of active message buffers."
|
"Return a list of active message buffers."
|
||||||
|
@ -2527,7 +2531,7 @@ customize.
|
||||||
|
|
||||||
;; program to get mail; alternatives are 'fetchmail', 'getmail'
|
;; program to get mail; alternatives are 'fetchmail', 'getmail'
|
||||||
;; isync or your own shellscript. called when 'U' is pressed in
|
;; isync or your own shellscript. called when 'U' is pressed in
|
||||||
;; main view.
|
;; main view.
|
||||||
|
|
||||||
;; If you get your mail without an explicit command,
|
;; If you get your mail without an explicit command,
|
||||||
;; use "true" for the command (this is the default)
|
;; use "true" for the command (this is the default)
|
||||||
|
@ -2784,8 +2788,8 @@ default). This makes getting mail a no-op, but the messages are still
|
||||||
re-indexed.
|
re-indexed.
|
||||||
@item @emph{When I try to run @t{mu index} while @t{mu4e} is running I get
|
@item @emph{When I try to run @t{mu index} while @t{mu4e} is running I get
|
||||||
errors like:}
|
errors like:}
|
||||||
@verbatim
|
@verbatim
|
||||||
mu: mu_store_new_writable: xapian error
|
mu: mu_store_new_writable: xapian error
|
||||||
'Unable to get write lock on ~/.mu/xapian: already locked
|
'Unable to get write lock on ~/.mu/xapian: already locked
|
||||||
@end verbatim
|
@end verbatim
|
||||||
@emph{What to do about this?} You get this error because the underlying
|
@emph{What to do about this?} You get this error because the underlying
|
||||||
|
@ -2865,7 +2869,7 @@ see @ref{Signing and encrypting}.
|
||||||
there is no built-in support. Instead, we recommend using @t{mu4e}'s
|
there is no built-in support. Instead, we recommend using @t{mu4e}'s
|
||||||
@ref{Address autocompletion}.
|
@ref{Address autocompletion}.
|
||||||
@item @emph{After sending some messages, it seems the buffer for these
|
@item @emph{After sending some messages, it seems the buffer for these
|
||||||
messages stay around. How can I get rid of those?}
|
messages stay around. How can I get rid of those?}
|
||||||
@lisp
|
@lisp
|
||||||
(setq message-kill-buffer-on-exit t)
|
(setq message-kill-buffer-on-exit t)
|
||||||
@end lisp
|
@end lisp
|
||||||
|
@ -2931,16 +2935,16 @@ some ascii-art:
|
||||||
|
|
||||||
In words:
|
In words:
|
||||||
@itemize
|
@itemize
|
||||||
@item Your e-mail messages are stored in a Maildir-directory
|
@item Your e-mail messages are stored in a Maildir-directory
|
||||||
(typically, @file{~/Maildir} and its subdirectories), and new mail comes in
|
(typically, @file{~/Maildir} and its subdirectories), and new mail comes in
|
||||||
using tools like @t{fetchmail}, @t{offlineimap}, or through a local mail
|
using tools like @t{fetchmail}, @t{offlineimap}, or through a local mail
|
||||||
server.
|
server.
|
||||||
@item @t{mu} indexes these messages periodically, so you can quickly search for
|
@item @t{mu} indexes these messages periodically, so you can quickly search for
|
||||||
them. @t{mu} can run in a special @t{server}-mode, where it provides services
|
them. @t{mu} can run in a special @t{server}-mode, where it provides services
|
||||||
to client software.
|
to client software.
|
||||||
@item @t{mu4e}, which runs inside @command{emacs} is
|
@item @t{mu4e}, which runs inside @command{emacs} is
|
||||||
such a client; it communicates with @command{mu} (in its @t{server}-mode to search
|
such a client; it communicates with @command{mu} (in its @t{server}-mode to search
|
||||||
for messages, and manipulate them.
|
for messages, and manipulate them.
|
||||||
@item @t{mu4e} uses the facilities
|
@item @t{mu4e} uses the facilities
|
||||||
offered by @command{emacs} (the Gnus message editor and @t{smtpmail}) to send
|
offered by @command{emacs} (the Gnus message editor and @t{smtpmail}) to send
|
||||||
messages.
|
messages.
|
||||||
|
|
Loading…
Reference in New Issue