mirror of https://github.com/djcb/mu.git
mu4e.texi: update composer documentationx
This commit is contained in:
parent
9736f0b4d7
commit
b2f3a63a3a
161
mu4e/mu4e.texi
161
mu4e/mu4e.texi
|
@ -89,7 +89,7 @@ with answers to frequently asked questions, @ref{FAQ}.
|
||||||
* Main view:: The @t{mu4e} overview
|
* Main view:: The @t{mu4e} overview
|
||||||
* Headers view:: Lists of message headers
|
* Headers view:: Lists of message headers
|
||||||
* Message view:: Viewing specific messages
|
* Message view:: Viewing specific messages
|
||||||
* Editor view:: Creating and editing messages
|
* Composer:: Creating and editing messages
|
||||||
* Searching:: Some more background on searching/queries`
|
* Searching:: Some more background on searching/queries`
|
||||||
* Marking:: Marking messages and performing actions
|
* Marking:: Marking messages and performing actions
|
||||||
* Contexts:: Defining contexts and switching between them
|
* Contexts:: Defining contexts and switching between them
|
||||||
|
@ -765,7 +765,7 @@ maildir are listed, in the @ref{Headers view}.
|
||||||
you for a search query, and after entering one, shows the results in the
|
you for a search query, and after entering one, shows the results in the
|
||||||
@ref{Headers view}.
|
@ref{Headers view}.
|
||||||
@item @t{[C]ompose a new message}: after pressing @key{C}, you are dropped in
|
@item @t{[C]ompose a new message}: after pressing @key{C}, you are dropped in
|
||||||
the @ref{Editor view} to write a new message.
|
the @ref{Composer} to write a new message.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node Bookmarks and Maildirs
|
@node Bookmarks and Maildirs
|
||||||
|
@ -1024,10 +1024,9 @@ S-TAB toggle all threading
|
||||||
|
|
||||||
composition
|
composition
|
||||||
-----------
|
-----------
|
||||||
R,F,C reply/forward/compose
|
R,W,F,C reply/reply-to-all/forward/compose
|
||||||
E edit (only allowed for draft messages)
|
E edit (only allowed for draft messages)
|
||||||
|
|
||||||
|
|
||||||
misc
|
misc
|
||||||
----
|
----
|
||||||
a execute some custom action on a header
|
a execute some custom action on a header
|
||||||
|
@ -1039,9 +1038,10 @@ C-c C-u update mail & reindex
|
||||||
q leave the headers buffer
|
q leave the headers buffer
|
||||||
@end verbatim
|
@end verbatim
|
||||||
|
|
||||||
Furthermore, a number of keybindings are available through minor modes:
|
Some keybindings are available through minor modes:
|
||||||
@itemize
|
@itemize
|
||||||
@item Context; see @pxref{Contexts}.
|
@item Context; see @pxref{Contexts}.
|
||||||
|
@item Composition; see @pxref{Composer} and @t{mu4e-compose-minor-mode}
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node HV Marking
|
@node HV Marking
|
||||||
|
@ -1394,7 +1394,7 @@ x execute actions for the marked messages
|
||||||
|
|
||||||
composition
|
composition
|
||||||
-----------
|
-----------
|
||||||
R,F,C reply/forward/compose
|
R,W,F,C reply/reply-to-all/forward/compose
|
||||||
E edit (only allowed for draft messages)
|
E edit (only allowed for draft messages)
|
||||||
|
|
||||||
actions
|
actions
|
||||||
|
@ -1422,9 +1422,10 @@ C-S-u update mail & reindex
|
||||||
q leave the message view
|
q leave the message view
|
||||||
@end verbatim
|
@end verbatim
|
||||||
|
|
||||||
Furthermore, a number of keybindings are available through minor modes:
|
Some keybindings are available through minor modes:
|
||||||
@itemize
|
@itemize
|
||||||
@item Context; see @pxref{Contexts}.
|
@item Context; see @pxref{Contexts}
|
||||||
|
@item Composition; see @pxref{Composer} and @t{mu4e-compose-minor-mode}
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
For the marking commands, please refer to @ref{Marking messages}.
|
For the marking commands, please refer to @ref{Marking messages}.
|
||||||
|
@ -1597,26 +1598,30 @@ You can @emph{tear off} the window a message is in and place it in a
|
||||||
new frame by typing @key{C-x w ^ f}. You can also detach a window and
|
new frame by typing @key{C-x w ^ f}. You can also detach a window and
|
||||||
put it in its own tab with @key{C-x w ^ t}.
|
put it in its own tab with @key{C-x w ^ t}.
|
||||||
|
|
||||||
@node Editor view
|
@node Composer
|
||||||
@chapter The editor view
|
@chapter Composer
|
||||||
|
|
||||||
Writing e-mail messages takes place in the Editor View. @t{mu4e}'s editor view
|
Writing e-mail messages takes place in the Composer. @t{mu4e}'s re-uses much of
|
||||||
builds on top of Gnus' @t{message-mode}. Most of the @t{message-mode}
|
Gnus' @t{message-mode}.
|
||||||
functionality is available, as well some @t{mu4e}-specifics. Its major mode is
|
|
||||||
@code{mu4e-compose-mode}.
|
Much of the @t{message-mode} functionality is available, as well some
|
||||||
|
@t{mu4e}-specifics. See @ref{(message) Top} for details; not every setting is
|
||||||
|
necessarily also supported in @t{mu4e}.
|
||||||
|
|
||||||
|
The major mode for the composer is @code{mu4e-compose-mode}.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Overview: EV Overview. What is the Editor view
|
* Composer overview: Composer overview. What is the composer good for
|
||||||
* Keybindings: EV Keybindings. Doing things with your keyboard
|
* Keybindings: Composer Keybindings. Doing things with your keyboard
|
||||||
* Address autocompletion:: Quickly entering known addresses
|
* Address autocompletion:: Quickly entering known addresses
|
||||||
* Compose hooks::Calling functions when composing
|
* Compose hooks::Calling functions when composing
|
||||||
* Signing and encrypting:: Support for cryptography
|
* Signing and encrypting:: Support for cryptography
|
||||||
* Queuing mail:: Sending mail when the time is ripe
|
* Queuing mail:: Sending mail when the time is ripe
|
||||||
* Message signatures:: Adding your personal footer to messages
|
* Message signatures:: Adding your personal footer to messages
|
||||||
* Other settings::Miscellanea
|
* Other settings::Miscellaneous
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node EV Overview
|
@node Composer overview
|
||||||
@section Overview
|
@section Overview
|
||||||
|
|
||||||
@cartouche
|
@cartouche
|
||||||
|
@ -1632,14 +1637,62 @@ functionality is available, as well some @t{mu4e}-specifics. Its major mode is
|
||||||
>
|
>
|
||||||
> Dude - how are things?
|
> Dude - how are things?
|
||||||
>
|
>
|
||||||
> Later -- wally.
|
> Later -- Wally.
|
||||||
@end verbatim
|
@end verbatim
|
||||||
@end cartouche
|
@end cartouche
|
||||||
|
|
||||||
@node EV Keybindings
|
@node Entering the composer
|
||||||
|
@section Entering the composer
|
||||||
|
|
||||||
|
There are a view different ways to @emph{enter} the composer; i.e., from other
|
||||||
|
@t{mu4e} views or even completely outside.
|
||||||
|
|
||||||
|
If you want the composer to start in a new frame or window, see the variable
|
||||||
|
@t{mu4e-compose-switch}.
|
||||||
|
|
||||||
|
@subsection New message
|
||||||
|
|
||||||
|
You can start composing a completely new message with @t{mu4e-compose-new} (with
|
||||||
|
@kbd{N} from within @t{mu4e}.
|
||||||
|
|
||||||
|
@subsection Reply
|
||||||
|
|
||||||
|
You can compose a reply to an existing message with @t{mu4e-compose-reply} (with
|
||||||
|
@kbd{R} from within the headers view or when looking at some specific message.
|
||||||
|
|
||||||
|
When you want to reply to @emph{all} recipients of a message, you can use
|
||||||
|
@t{mu4e-compose-wide-reply}, bound to @kbd{W}. This is often called
|
||||||
|
``reply-to-all'', while Gnus uses the term ``wide reply''.
|
||||||
|
|
||||||
|
By default, the reply will cite the message being replied to. If you do not want
|
||||||
|
that, you can set (or @t{let}-bind) @t{message-cite-function} to
|
||||||
|
@t{mu4e-message-cite-nothing}.
|
||||||
|
|
||||||
|
See @ref{(message) Reply} and @ref{(message) Wide Reply} for further
|
||||||
|
information.
|
||||||
|
|
||||||
|
@subsection Forward
|
||||||
|
|
||||||
|
You can forward some existing message with @t{mu4e-compose-forward} (with
|
||||||
|
@kbd{F} from within the headers view or when looking at some specific message.
|
||||||
|
|
||||||
|
For more information, see @ref{(message) Forwarding}.
|
||||||
|
|
||||||
|
To influence the way a message is forwarded, you can use the variables
|
||||||
|
@code{message-forward-as-mime} and @code{message-forward-show-mml}.
|
||||||
|
|
||||||
|
@subsection Resend
|
||||||
|
|
||||||
|
You can re-send some existing message with @t{mu4e-compose-resend} from within
|
||||||
|
the headers view or when looking at some specific message.
|
||||||
|
|
||||||
|
This re-sends the message without letting you edit it, as per @ref{(message)
|
||||||
|
Resending}.
|
||||||
|
|
||||||
|
@node Composer Keybindings
|
||||||
@section Keybindings
|
@section Keybindings
|
||||||
|
|
||||||
@t{mu4e}'s editor view derives from Gnus' message editor and shares most of
|
@t{mu4e}'s composer derives from Gnus' message editor and shares most of
|
||||||
its keybindings. Here are some of the more useful ones (you can use the menu
|
its keybindings. Here are some of the more useful ones (you can use the menu
|
||||||
to find more):
|
to find more):
|
||||||
|
|
||||||
|
@ -1649,11 +1702,11 @@ key description
|
||||||
C-c C-c send message
|
C-c C-c send message
|
||||||
C-c C-d save to drafts and leave
|
C-c C-d save to drafts and leave
|
||||||
C-c C-k kill the message buffer (the message remains in the draft folder)
|
C-c C-k kill the message buffer (the message remains in the draft folder)
|
||||||
C-c C-a attach a file (pro-tip: drag & drop works as well)
|
C-c C-a attach a file (pro-tip: drag & drop works as well in graphical context)
|
||||||
C-c C-; switch the context
|
C-c C-; switch the context
|
||||||
|
|
||||||
(mu4e-specific)
|
(mu4e-specific)
|
||||||
C-S-u update mail & reindex
|
C-S-u update mail & re-index
|
||||||
@end verbatim
|
@end verbatim
|
||||||
|
|
||||||
@node Address autocompletion
|
@node Address autocompletion
|
||||||
|
@ -1718,27 +1771,7 @@ is also at your disposal.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
Let's look at some examples. First, suppose we want to set the
|
Let's look at an examples. As mentioned, @code{mu4e-compose-mode-hook} is especially
|
||||||
@t{From:}-address for a reply message based on the receiver of the original:
|
|
||||||
@lisp
|
|
||||||
;; 1) messages to me@@foo.example.com should be replied with From:me@@foo.example.com
|
|
||||||
;; 2) messages to me@@bar.example.com should be replied with From:me@@bar.example.com
|
|
||||||
;; 3) all other mail should use From:me@@cuux.example.com
|
|
||||||
(add-hook 'mu4e-compose-pre-hook
|
|
||||||
(defun my-set-from-address ()
|
|
||||||
"Set the From address based on the To address of the original."
|
|
||||||
(let ((msg mu4e-compose-parent-message)) ;; msg is shorter...
|
|
||||||
(when msg
|
|
||||||
(setq user-mail-address
|
|
||||||
(cond
|
|
||||||
((mu4e-message-contact-field-matches msg :to "me@@foo.example.com")
|
|
||||||
"me@@foo.example.com")
|
|
||||||
((mu4e-message-contact-field-matches msg :to "me@@bar.example.com")
|
|
||||||
"me@@bar.example.com")
|
|
||||||
(t "me@@cuux.example.com")))))))
|
|
||||||
@end lisp
|
|
||||||
|
|
||||||
Secondly, as mentioned, @code{mu4e-compose-mode-hook} is especially
|
|
||||||
useful for editing-related settings. For example:
|
useful for editing-related settings. For example:
|
||||||
@lisp
|
@lisp
|
||||||
(add-hook 'mu4e-compose-mode-hook
|
(add-hook 'mu4e-compose-mode-hook
|
||||||
|
@ -1832,13 +1865,9 @@ do this accidentally!
|
||||||
@section Message signatures
|
@section Message signatures
|
||||||
|
|
||||||
Message signatures are the standard footer blobs in e-mail messages where you
|
Message signatures are the standard footer blobs in e-mail messages where you
|
||||||
can put in information you want to include in every message. The text to
|
can put in information you want to include in every message. The text to include
|
||||||
include is set with @code{mu4e-compose-signature}.
|
is set with @code{message-signature} (older @t{mu4e} used
|
||||||
|
@code{mu4e-compose-signature}, but that has been obsoleted).
|
||||||
If you don't want to include this automatically with each message,
|
|
||||||
you can set @code{mu4e-compose-signature-auto-include} to @code{nil}; you can
|
|
||||||
then still include the signature manually, using the function
|
|
||||||
@code{message-insert-signature}, typically bound to @kbd{C-c C-w}.
|
|
||||||
|
|
||||||
@node Other settings
|
@node Other settings
|
||||||
@section Other settings
|
@section Other settings
|
||||||
|
@ -2618,7 +2647,7 @@ when starting; see the discussion in the previous section.
|
||||||
:vars '( ( user-mail-address . "aliced@@home.example.com" )
|
:vars '( ( user-mail-address . "aliced@@home.example.com" )
|
||||||
( user-full-name . "Alice Derleth" )
|
( user-full-name . "Alice Derleth" )
|
||||||
( message-user-organization . "Homebase" )
|
( message-user-organization . "Homebase" )
|
||||||
( mu4e-compose-signature .
|
( message-signature .
|
||||||
(concat
|
(concat
|
||||||
"Alice Derleth\n"
|
"Alice Derleth\n"
|
||||||
"Lauttasaari, Finland\n"))))
|
"Lauttasaari, Finland\n"))))
|
||||||
|
@ -2631,10 +2660,10 @@ when starting; see the discussion in the previous section.
|
||||||
:match-func (lambda (msg)
|
:match-func (lambda (msg)
|
||||||
(when msg
|
(when msg
|
||||||
(string-match-p "^/Arkham" (mu4e-message-field msg :maildir))))
|
(string-match-p "^/Arkham" (mu4e-message-field msg :maildir))))
|
||||||
:vars '( ( user-mail-address . "aderleth@@miskatonic.example.com" )
|
:vars '( ( user-mail-address . "aderleth@@miskatonic.example.com" )
|
||||||
( user-full-name . "Alice Derleth" )
|
( user-full-name . "Alice Derleth" )
|
||||||
( message-user-organization . "Miskatonic University" )
|
( message-user-organization . "Miskatonic University" )
|
||||||
( mu4e-compose-signature .
|
( message-signature .
|
||||||
(concat
|
(concat
|
||||||
"Prof. Alice Derleth\n"
|
"Prof. Alice Derleth\n"
|
||||||
"Miskatonic University, Dept. of Occult Sciences\n"))))
|
"Miskatonic University, Dept. of Occult Sciences\n"))))
|
||||||
|
@ -2648,9 +2677,9 @@ when starting; see the discussion in the previous section.
|
||||||
:match-func (lambda (msg)
|
:match-func (lambda (msg)
|
||||||
(when msg
|
(when msg
|
||||||
(string= (mu4e-message-field msg :maildir) "/cycling")))
|
(string= (mu4e-message-field msg :maildir) "/cycling")))
|
||||||
:vars '( ( user-mail-address . "aderleth@@example.com" )
|
:vars '( ( user-mail-address . "aderleth@@example.com" )
|
||||||
( user-full-name . "AliceD" )
|
( user-full-name . "AliceD" )
|
||||||
( mu4e-compose-signature . nil)))))
|
( message-signature . nil)))))
|
||||||
|
|
||||||
;; set `mu4e-context-policy` and `mu4e-compose-policy` to tweak when mu4e should
|
;; set `mu4e-context-policy` and `mu4e-compose-policy` to tweak when mu4e should
|
||||||
;; guess or ask the correct context, e.g.
|
;; guess or ask the correct context, e.g.
|
||||||
|
@ -3743,8 +3772,7 @@ customize.
|
||||||
(setq mu4e-compose-reply-to-address "foo@@bar.example.com"
|
(setq mu4e-compose-reply-to-address "foo@@bar.example.com"
|
||||||
user-mail-address "foo@@bar.example.com"
|
user-mail-address "foo@@bar.example.com"
|
||||||
user-full-name "Foo X. Bar")
|
user-full-name "Foo X. Bar")
|
||||||
(setq mu4e-compose-signature
|
(setq message-signature "Foo X. Bar\nhttp://www.example.com\n")
|
||||||
"Foo X. Bar\nhttp://www.example.com\n")
|
|
||||||
|
|
||||||
;; smtp mail setting
|
;; smtp mail setting
|
||||||
(setq
|
(setq
|
||||||
|
@ -3902,7 +3930,7 @@ Next step: let's make a @t{mu4e} configuration for this:
|
||||||
(setq
|
(setq
|
||||||
user-mail-address "USERNAME@@gmail.com"
|
user-mail-address "USERNAME@@gmail.com"
|
||||||
user-full-name "Foo X. Bar"
|
user-full-name "Foo X. Bar"
|
||||||
mu4e-compose-signature
|
message-signature
|
||||||
(concat
|
(concat
|
||||||
"Foo X. Bar\n"
|
"Foo X. Bar\n"
|
||||||
"http://www.example.com\n"))
|
"http://www.example.com\n"))
|
||||||
|
@ -3932,8 +3960,8 @@ Next step: let's make a @t{mu4e} configuration for this:
|
||||||
(setq message-kill-buffer-on-exit t)
|
(setq message-kill-buffer-on-exit t)
|
||||||
@end lisp
|
@end lisp
|
||||||
|
|
||||||
And that's it --- put the above in your @file{~/.emacs}, change @t{USERNAME}
|
And that's it --- put the above in your emacs initialization file, change
|
||||||
etc.@: to your own, and restart Emacs, and run @kbd{M-x mu4e}.
|
@t{USERNAME} etc. to your own, restart Emacs, and run @kbd{M-x mu4e}.
|
||||||
|
|
||||||
@node CONF Other settings
|
@node CONF Other settings
|
||||||
@section Other settings
|
@section Other settings
|
||||||
|
@ -4209,13 +4237,6 @@ your configuration (courtesy of user @t{kpachnis}):
|
||||||
mml2015-encrypt-to-self t
|
mml2015-encrypt-to-self t
|
||||||
mml2015-sign-with-sender t)
|
mml2015-sign-with-sender t)
|
||||||
@end lisp
|
@end lisp
|
||||||
@subsection Can I `bounce' or `resend' messages?
|
|
||||||
Somewhat --- it is possible to edit a (copy of) an existing message and then
|
|
||||||
send it, using @code{M-x mu4e-compose-resend}. This gives you a raw copy of the
|
|
||||||
message, including all headers, encoded parts and so on. Reason for this is that
|
|
||||||
for resending, it is important not to change anything (except perhaps for the
|
|
||||||
@t{To:} address when bouncing); since we cannot losslessly decode an existing
|
|
||||||
message, you get the raw version.
|
|
||||||
|
|
||||||
@node Writing messages
|
@node Writing messages
|
||||||
@section Writing messages
|
@section Writing messages
|
||||||
|
|
Loading…
Reference in New Issue