diff options
| author | Dirk-Jan C. Binnema <djcb@djcbsoftware.nl> | 2025-10-19 18:11:19 +0300 |
|---|---|---|
| committer | Dirk-Jan C. Binnema <djcb@djcbsoftware.nl> | 2025-10-19 18:11:42 +0300 |
| commit | 660b38c6279c0d94fdf8053f73fcf630aa17f9b7 (patch) | |
| tree | 5cb546c288f9c293980a033068aad49f02f760bf /mu4e | |
| parent | 177da72f5e7ade64dec0b7c4cfdf8c89258bacb7 (diff) | |
mu4e.texi: tweaks
Diffstat (limited to 'mu4e')
| -rw-r--r-- | mu4e/mu4e.texi | 244 |
1 files changed, 130 insertions, 114 deletions
diff --git a/mu4e/mu4e.texi b/mu4e/mu4e.texi index 9fe6046..c009745 100644 --- a/mu4e/mu4e.texi +++ b/mu4e/mu4e.texi @@ -151,7 +151,7 @@ Under the hood, @code{mu4e} is fully search-based, similar to programs like However, @code{mu4e}'s user-interface is quite different. @code{mu4e}'s mail handling (deleting, moving, etc.)@: is inspired by @uref{http://www.gohome.org/wl/Wanderlust} (another Emacs-based e-mail client), -@uref{http://www.mutt.org/mutt} and the @t{dired} file-manager for emacs. +@uref{http://www.mutt.org/mutt} and the @code{dired} file-manager for emacs. @cindex wanderlust @cindex mutt @@ -209,7 +209,7 @@ In particular, some minimal steps, starting from @t{emacs -Q} and with minimal configuration. If the problem is easily producible, it may be easily fixable as well; but if it's some subtle interaction in a highly complex setup, we cannot do much. -@item What version of @code{mu4e} and @t{emacs} were you using? What operating system? +@item What version of @code{mu4e} and @command{emacs} were you using? What operating system? Always try with up-to-date versions. And please use the 'normal' @code{mu4e} for reproducing your problem, not the ``remix'' version that some Emacs ``distributions'' use, such as ``Doom Emacs''. @@ -370,14 +370,14 @@ If you are already using a maildir, you are lucky. If not, some setup is required: @itemize @item @emph{Using an external IMAP or POP server} --- if you are using an -@abbr{IMAP} or @abbr{POP} server, you can use tools like @t{getmail}, -@t{fetchmail}, @t{offlineimap} or @t{isync} to download your messages -into a maildir (@file{~/Maildir}, often). Because it is such a common -case, there is a full example of setting @code{mu4e} up with -@t{offlineimap} and Gmail; @pxref{Gmail configuration}. +@abbr{IMAP} or @abbr{POP} server, you can use tools like @command{getmail}, +@command{fetchmail}, @command{offlineimap} or @command{isync} to download your +messages into a maildir (@file{~/Maildir}, often). Because it is such a common +case, there is a full example of setting @code{mu4e} up with @t{offlineimap} and +Gmail; @pxref{Gmail configuration}. @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 maildir as well, maybe in combination with @t{procmail}. A bit of +(such as @command{postfix} or @command{qmail}), you can teach them to deliver +into a maildir as well, maybe in combination with @command{procmail}. A bit of googling should be able to provide you with the details. @end itemize @@ -391,7 +391,7 @@ The first time you run @code{mu}, you need to initialize its store (database). The default location for that is @t{~/.cache/mu/xapian}, but you can change this using the @t{--muhome} option, and remember to pass that to the other commands as well. Alternatively, you can use an -environment variable @t{MUHOME}. +environment variable @env{MUHOME}. Assuming that your maildir is at @file{~/Maildir}, we issue the following command: @@ -909,7 +909,9 @@ visible only if you have actually set up mail-queuing. @ref{Queuing mail} @item @t{[A]bout mu4e} provides general information about the program @item @t{[H]elp} shows help information for this view -@item Finally, @t{[q]uit mu4e} quits your @code{mu4e}-session@footnote{@t{mu4e-quit}; or with a @t{C-u} prefix argument, it merely buries the buffer. A hook @code{mu4e-quit-hook} is available as well} +@item Finally, @t{[q]uit mu4e} quits your @code{mu4e}-session +@footnote{@t{mu4e-quit}; or with a @t{C-u} prefix argument, it merely buries the +buffer. A hook @code{mu4e-quit-hook} is available as well} @end itemize @node Headers view @@ -978,7 +980,7 @@ variable @code{mu4e-use-fancy-chars}}, corresponding to the sort order (descending or ascending, respectively). You can influence this by a mouse click, or @key{O}. Not all fields allow sorting. @item Instead of showing the @t{From:} and @t{To:} fields separately, you -can use From/To (@t{:from-or-to} in @code{mu4e-headers-fields} as a more +can use From/To (@code{:from-or-to} in @code{mu4e-headers-fields} as a more compact way to convey the most important information: it shows @t{From:} @emph{except} when the e-mail was sent by the user (i.e., you) --- in that case it shows @t{To:} (prefixed by @t{To}@footnote{You can @@ -1092,7 +1094,7 @@ q leave the headers buffer Some keybindings are available through minor modes: @itemize @item Context; see @pxref{Contexts}. -@item Composition; see @pxref{Composer} and @t{mu4e-compose-minor-mode} +@item Composition; see @pxref{Composer} and @code{mu4e-compose-minor-mode} @end itemize @node HV Marking @@ -1103,7 +1105,7 @@ changing the labels. After one or more messages are marked, you can then execute (@code{mu4e-mark-execute-all}, @key{x}) these actions. This two-step -mark-execute sequence is similar to what e.g. @t{dired} does. It is how @code{mu4e} +mark-execute sequence is similar to what e.g. @code{dired} does. It is how @code{mu4e} tries to be as quick as possible, while avoiding accidents. The mark/unmark commands support the @emph{region} (i.e., ``selection'') @@ -1179,7 +1181,7 @@ If you want to automatically fold all threads after a query, you can use a hook: By default, single-child threads are @emph{not} collapsed, since it would result in replacing a single line with the collapsed one. However, if, for consistency, -you also want to fold those, you can use @t{mu4e-thread-fold-single-children}. +you also want to fold those, you can use @code{mu4e-thread-fold-single-children}. @node HV Custom headers @section Custom headers @@ -1247,7 +1249,7 @@ actions. @section Buffer display By default, @code{mu4e} will attempt to manage the display of its own buffers. For -headers and message views, the variable @code{mu4e-split-view} is @t{mu4e's} +headers and message views, the variable @code{mu4e-split-view} is @code{mu4e's} built-in way to decide how and where they are shown. @subsection Split view @@ -1256,13 +1258,13 @@ view} and the @ref{Message view}, by customizing @code{mu4e-split-view}. There are several options available: @itemize -@item @t{horizontal} (this is the default): display the message view below the +@item @code{horizontal} (this is the default): display the message view below the header view. Use @code{mu4e-headers-visible-lines} the set the number of lines shown (default: 8). -@item @t{vertical}: display the message view on the +@item @code{vertical}: display the message view on the right side of the header view. Use @code{mu4e-headers-visible-columns} to set the number of visible columns (default: 30). -@item @t{single-window}: single window mode. Single-window mode tries to +@item @code{single-window}: single window mode. Single-window mode tries to minimize mu4e window operations (opening, killing, resizing, etc) and buffer changes, while still retaining the view and headers buffers. In addition, it replaces @code{mu4e}'s main view with a minibuffer-prompt containing the same @@ -1336,7 +1338,7 @@ This chapter discusses the message view, the view for reading e-mail messages. After selecting a message in the @ref{Headers view}, it appears in a message view window, which shows the message headers, followed by the message body. Its major mode is @code{mu4e-view-mode}, which derives -from @t{gnus-article-mode}. +from @code{gnus-article-mode}. @menu * Overview: MSGV Overview. What is the Message View @@ -1481,7 +1483,7 @@ q leave the message view Some keybindings are available through minor modes: @itemize @item Context; see @pxref{Contexts} -@item Composition; see @pxref{Composer} and @t{mu4e-compose-minor-mode} +@item Composition; see @pxref{Composer} and @code{mu4e-compose-minor-mode} @end itemize For the marking commands, please refer to @ref{Marking messages}. @@ -1498,7 +1500,7 @@ By default, mu4e tries to display the 'richest' option, which is the last MIME-part of the alternatives. You can customize this to prefer the text version, if available, with something like the following in your configuration (and see the docstring for -@t{mm-discouraged-alternatives} for details): +@code{mm-discouraged-alternatives} for details): @lisp (with-eval-after-load "mm-decode" @@ -1506,8 +1508,8 @@ your configuration (and see the docstring for (add-to-list 'mm-discouraged-alternatives "text/richtext")) @end lisp -When displaying rich-text messages inline, @code{mu4e} (through @t{gnus}) -uses the @t{shr} built-in HTML-renderer. If you're using a dark color +When displaying rich-text messages inline, @code{mu4e} (through @code{gnus}) +uses the @code{shr} built-in HTML-renderer. If you're using a dark color theme, and the messages are hard to read, it can help to change the luminosity, e.g.: @lisp @@ -1530,7 +1532,7 @@ prefix-argument. When you run Emacs in graphical mode, by default images attached to messages are shown inline in the message view buffer. -To disable this, set @code{gnus-inhibit-images} to @t{t}. By default, +To disable this, set @code{gnus-inhibit-images} to @code{t}. By default, external images in HTML are not retrieved from external URLs because they can be used to track you. @@ -1554,14 +1556,14 @@ the following: nil "."))) @end lisp -@code{mu4e} inherits the default @t{gnus-blocked-images} from Gnus and +@code{mu4e} inherits the default @code{gnus-blocked-images} from Gnus and ensures that it works with @code{mu4e} too. However, mu4e is not Gnus, so -if you have Gnus-specific settings for @t{gnus-blocked-images}, you +if you have Gnus-specific settings for @code{gnus-blocked-images}, you should verify that they have the desired effect in @code{mu4e} as well. Finally, for some message with big images it can be useful to enable buttons and -full display, e.g. for saving inline images. For this you can try @code{M-x +full display, e.g. for saving inline images. For this you can try @kbd{M-x mu4e-view-show-mime-parts}. This can be a little slow. @node MSGV Attachments and MIME-parts @@ -1596,7 +1598,7 @@ comma-separated, with completion support. Press @key{RET} to save the chosen attachments as files to your computer. @code{mu4e} determines the target directory using the variable -@t{mu4e-attachment-dir} (which can be either file-system path or a function; see +@code{mu4e-attachment-dir} (which can be either file-system path or a function; see its docstring for details. However, you can manually set the target by calling @code{mu4e-view-save-attachments} with a prefix argument. @@ -1610,7 +1612,7 @@ which is requirement of the underlying completion mechanism works. If there are duplicates, only one is recognized. Furthermore, file names that match @code{crm-separator} (by default, commas) are -@emph{not} supported (see @t{completing-read-multiple} for further details). For +@emph{not} supported (see @code{completing-read-multiple} for further details). For such corner-cases, it is recommended to use @code{mu4e-view-mime-part-action} instead, which does not have this limitation. @@ -1707,9 +1709,9 @@ information for these commands. @chapter Composer Writing e-mail messages takes place in the Composer. @code{mu4e}'s re-uses much of -Gnus' @t{message-mode}. +Gnus' @code{message-mode}. -Much of the @t{message-mode} functionality is available, as well some +Much of the @code{message-mode} functionality is available, as well some @code{mu4e}-specifics. See @ref{(message) Top} for details; not every setting is necessarily also supported in @code{mu4e}. @@ -1754,27 +1756,33 @@ There are a view different ways to @emph{enter} the composer; i.e., from other @code{mu4e} views or even completely outside. If you want the composer to start in a new frame or window, you can configure -the variable @t{mu4e-compose-switch}; see its docstring for details. +the variable @code{mu4e-compose-switch}; see its docstring for details. @subsection New message +@cindex composing, new You can start composing a completely new message with @code{mu4e-compose-new} (with @kbd{N} from within @code{mu4e}. @subsection Reply +@cindex composing,reply To compose a reply to an existing message, you can use @code{mu4e-compose-reply} (with @kbd{R}) from within the headers view or when looking at some specific message. +@cindex composing, reply +@cindex composing, wide reply +@cindex composing, reply to all + If you want to reply to @emph{all} recipients of a message, there is @code{mu4e-compose-wide-reply}, by default bound to @kbd{W}. This is often called ``reply-to-all'', but @code{mu4e} follows the Gnus terminology ``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}. +that, you can set (or @code{let}-bind) @code{message-cite-function} to +@code{mu4e-message-cite-nothing}. See @ref{(message) Reply} and @ref{(message) Wide Reply} for further details. @@ -1793,6 +1801,7 @@ your configuration: @end lisp @subsection Forward +@cindex composing, forward You can @emph{forward} some existing message with @code{mu4e-compose-forward} (bound to @kbd{F}) from within the headers view or when looking at some specific @@ -1802,6 +1811,7 @@ 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 Supersede +@cindex composing, supersede Occasionally, it can be useful to ``supersede'' a message you sent; for this, there is @code{mu4e-compose-supersede}. @@ -1815,8 +1825,9 @@ Superseding is only possible for messages @emph{you} sent, as determined by This wraps @code{message-supersede}. @subsection Resend +@cindex composing, resend -You can re-send some existing message with @t{mu4e-compose-resend} from within +You can re-send some existing message with @code{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) @@ -1849,15 +1860,15 @@ C-S-u update mail & re-index @code{mu4e} supports autocompleting addresses when composing e-mail messages. @code{mu4e} uses the e-mail addresses from the messages you sent or received as the source for this. Address auto-completion is enabled by default; if you want to -disable it for some reason, set @t{mu4e-compose-complete-addresses} to @t{nil}. +disable it for some reason, set @code{mu4e-compose-complete-addresses} to @code{nil}. This uses the Emacs machinery for showing and cycling through the candidate addresses; it is active when looking at one of the contact fields in the message header area. -It is also possible to use @code{mu4e}'s completion elsewhere in @t{emacs}. To -enable that, a function @t{mu4e-complete-contact} exists, which you can add to -@t{completion-at-point-functions}, see @ref{(elisp) Completion in Buffers}. +It is also possible to use @code{mu4e}'s completion elsewhere in @code{emacs}. To +enable that, a function @code{mu4e-complete-contact} exists, which you can add to +@code{completion-at-point-functions}, see @ref{(elisp) Completion in Buffers}. @code{mu4e} must be running for any completions to be available. @subsection Limiting the number of addresses @@ -1870,7 +1881,7 @@ not likely to be relevant. The following variables are available for tuning this: @itemize -@item @code{mu4e-compose-complete-only-personal} --- when set to @t{t}, +@item @code{mu4e-compose-complete-only-personal} --- when set to @code{t}, only consider addresses that were seen in @emph{personal} messages --- that is, messages in which one of my e-mail addresses was seen in one of the address fields. This is to exclude mailing list posts. You can @@ -1981,7 +1992,7 @@ currently offline, you can @emph{queue} the mail, and send it when you have restored your internet connection. You can control this from the @ref{Main view}. -To allow for queuing, you need to tell @t{smtpmail} where you want to store +To allow for queuing, you need to tell @code{smtpmail} where you want to store the queued messages. For example: @lisp @@ -2000,7 +2011,7 @@ $ touch ~/Maildir/queue/.noindex @end example The file created by the @command{touch} command tells @code{mu} to ignore this -directory for indexing, which makes sense since it contains @t{smtpmail} +directory for indexing, which makes sense since it contains @code{smtpmail} meta-data rather than normal messages; see the @t{mu-mkdir} and @t{mu-index} man-pages for details. @@ -2012,8 +2023,10 @@ do this accidentally! @section Message signatures 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 include -is set with @code{message-signature} (older @code{mu4e} used +can put information you want to append to every message. + +The text to include is +set with @code{message-signature} (older @code{mu4e} used @code{mu4e-compose-signature}, but that has been obsoleted). @node Other settings @@ -2028,11 +2041,16 @@ configuration: @lisp (setq message-kill-buffer-on-exit t) @end lisp -@item If you want to exclude your own e-mail addresses when ``replying to -all'', set @code{message-dont-reply-to-names} to -@code{mu4e-personal-or-alternative-address-p}. In order for this to work -properly you need to pass your address to @command{mu init --personal-address=} at -database initialization time, and/or use @t{message-alternative-emails}. +@item If you want to exclude your own e-mail addresses when issueing +``wide-replies'' (a.k.a., ``reply-to-all''), you can use +@code{message-dont-reply-to-names}; i.e., +@lisp +(setq message-dont-reply-to-names #'mu4e-personal-or-alternative-address-p) +@end lisp + +In order for this to work properly, you need to pass your address to @command{mu +init --personal-address=...} at database initialization time, and/or use +the variable @code{message-alternative-emails}. @end itemize @node Searching @@ -2515,17 +2533,19 @@ on the characteristics of the message; this is very powerful. See set or unset the corresponding Maildir flags @item @emph{label} lets you enter a label delta expression which gets applied; see below @item @emph{unlabel} lets you clear @emph{all} labels; see below -@item @emph{action} lets you apply some pre-defined action on the message, as per @code{mu4e-headers-actions} +@item @emph{action} lets you apply some pre-defined action on the message, +as per @code{mu4e-headers-actions} @item @emph{'something'} marks the message for ``something'', and then decide later what this something should be; see below -@item @emph{unmark} and @emph{unmark all} are ``meta'' marks, which remove the mark from the currently selected message(s) or all +@item @emph{unmark} and @emph{unmark all} are ``meta'' marks, +which remove the mark from the currently selected message(s) or all @end itemize @node Applying and clearing labels @subsection Applying and clearing labels @cindex labels -The @t{label} mark lets you apply @emph{labels} to messages, which are short +The @t{plabel} mark lets you apply @emph{labels} to messages, which are short strings to attach to this message which you can query using the @t{label:} field. @@ -2573,7 +2593,7 @@ and re-indexing it; see the @command{mu-labels} man-page for further details. @t{something} is a special kind of mark; you can use it to mark messages for `something', and then decide later what the `something' should be@footnote{This -kind of `deferred marking' is similar to the facility in @t{dired}, @t{midnight +kind of `deferred marking' is similar to the facility in @code{dired}, @t{midnight commander} (@url{https://www.midnight-commander.org/}) and the like, and uses the same key binding (@key{insert}).} Later, you can set the actual mark using @kbd{M-x mu4e-mark-resolve-deferred-marks} (@key{#}). Alternatively, @code{mu4e} @@ -2672,7 +2692,7 @@ than @emph{n} recipients --- we could do this with the following recipe: 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 this particular one (@t{M} because it is the first character +to choose this particular one (@code{M} because it is the first character of the description). As you can see, it's not very hard to define simple functions to match @@ -2705,14 +2725,14 @@ elements: @item @code{:prompt} --- the prompt to use when asking for marks (used for example when marking a whole thread). @item @code{:ask-target} --- a function run once per bulk-operation, and thus suitable for -querying the user about a target for move-like marks. If @t{nil}, the -@t{TARGET} passed to @code{:dyn-target} is @t{nil}. +querying the user about a target for move-like marks. If @code{nil}, the +@t{TARGET} passed to @code{:dyn-target} is @code{nil}. @item @code{:dyn-target} --- a function run once per message (The message is passed as @t{MSG} to the function). This function allows -to compute a per-message target, for refile-like marks. If @t{nil}, the +to compute a per-message target, for refile-like marks. If @code{nil}, the @t{DYN-TARGET} passed to the @code{:action} is the @t{TARGET} obtained as above. @item @code{:show-target} --- how to display the target in the headers view. -If @code{:show-target} is @t{nil} the @t{DYN-TARGET} is shown (and +If @code{:show-target} is @code{nil} the @t{DYN-TARGET} is shown (and @t{DYN-TARGET} must be a string). @item @code{:action} --- the action to apply on the message when the mark is executed. @end itemize @@ -2765,7 +2785,7 @@ an (optional) function that takes no parameter and is invoked when leaving the context. You can use this for clearing things up. @item @t{match-func}: an (optional) function that takes an @t{MSG} message plist as argument, -and returns non-@t{nil} if this context matches the situation. @code{mu4e} +and returns non-@code{nil} if this context matches the situation. @code{mu4e} uses the first context that matches, in a couple of situations: @itemize @item when starting @code{mu4e} to determine the @@ -2773,9 +2793,9 @@ starting context; in this case, @t{MSG} is nil. You can use e.g. the host you're running or the time of day to determine which context matches. @item before replying to or forwarding a -message with the given message plist as parameter, or @t{nil} when +message with the given message plist as parameter, or @code{nil} when composing a brand new message. The function should return @t{t} when -this context is the right one for this message, or @t{nil} otherwise. +this context is the right one for this message, or @code{nil} otherwise. @item when determining the target folders for deleting, refiling etc; see @ref{Contexts and special folders}. @end itemize @@ -2837,7 +2857,7 @@ the account it belongs to, which is not necessarily the current context. To make this easy to do, whenever @code{mu4e} needs to know the value for such a special folder for a given message, it tries to determine the appropriate context using @code{mu4e-context-determine} (and policy -@t{nil}; see @ref{Context policies}). If it finds a matching context, it +@code{nil}; see @ref{Context policies}). If it finds a matching context, it let-binds the @code{vars} for that account, and then determines the value for the folder. It does not, however, call the @code{enter-func} or @code{leave-func}, since we are not really switching contexts. @@ -2919,10 +2939,10 @@ when starting; see the discussion in the previous section. A couple of notes about this example: @itemize -@item You can manually switch the context use @code{M-x mu4e-context-switch}, +@item You can manually switch the context use @kbd{M-x mu4e-context-switch}, by default bound to @kbd{;} in headers, view and main mode. The current context appears in the modeline by default; see @ref{Modeline} for details. -@item Normally, @code{M-x mu4e-context-switch} does not call the enter or +@item Normally, @kbd{M-x mu4e-context-switch} does not call the enter or leave functions if the 'new' context is the same as the old one. However, with a prefix-argument (@kbd{C-u}), you can force @code{mu4e} to invoke those function even in that case. @@ -3039,7 +3059,7 @@ Using the same mechanism, you can create dynamic sent-, trash-, and drafts-folders. The message-parameter you receive for the sent and drafts folder is the @emph{original} message, that is, the message you reply to, or forward, or edit. If there is no such message (for example when composing a -brand new message) the message parameter is @t{nil}. +brand new message) the message parameter is @code{nil}. Let's look at an example. Suppose you want a different trash folder for work-email. You can achieve this with something like: @@ -3349,7 +3369,7 @@ that @code{mu4e} provides, for example to fix spelling errors, or omit unwanted contacts. To handle this, @code{mu4e} provides @code{mu4e-contact-process-function}, -which, if defined, is applied to each contact. If the result is @t{nil}, +which, if defined, is applied to each contact. If the result is @code{nil}, the contact is discarded, otherwise the (modified or not) contact information is used. @@ -3509,7 +3529,7 @@ handled through a minor-mode @code{mu4e-modeline-mode}, which is enabled by default when @code{mu4e} is running. To completely turn off the modeline support, set @code{mu4e-modeline-support} to -@t{nil} before starting @code{mu4e}. +@code{nil} before starting @code{mu4e}. @code{mu4e} shares information on the modeline in two ways: @itemize @@ -3522,7 +3542,7 @@ To completely turn off the modeline support, set @code{mu4e-modeline-support} to @end itemize The global indicators can be disabled by setting @code{mu4e-modeline-show-global} -to @t{nil}. +to @code{nil}. All of the bookmark items provide more details in their @code{help-echo}, i.e., their tooltip. @@ -3535,7 +3555,7 @@ some representation of @code{mu4e-search-threads}, @code{mu4e-search-full}; the The query parameters are followed by the query-string use for the headers-view. By default, if the query string matches some bookmark, the name of that bookmark is shown instead of the query it specifies. This can be changed by setting -@code{mu4e-modeline-prefer-bookmark-name} to @t{nil}. +@code{mu4e-modeline-prefer-bookmark-name} to @code{nil}. @cindex favorite bookmark @subsection Favorite bookmark modeline item @@ -3559,9 +3579,9 @@ just like what we saw in @xref{Bookmarks and Maildirs}, e.g., this means there are @emph{10 unread messages}, with @emph{5 new messages since the baseline}, and @emph{15 messages in total} matching the query. -You can customize the icon; see @var{mu4e-modeline-all-clear}, -@var{mu4e-modeline-all-read}, @var{mu4e-modeline-unread-items} and -@var{mu4e-modeline-new-items}. +You can customize the icon; see @code{mu4e-modeline-all-clear}, +@code{mu4e-modeline-all-read}, @code{mu4e-modeline-unread-items} and +@code{mu4e-modeline-new-items}. Due to the way queries work, the modeline is @emph{not} immediately updated when you read messages; but going back to the main view (with @kbd{M-x mu4e} resets @@ -3611,7 +3631,7 @@ query. The message links are based on the message's message-id, and thus the bookmarks stay valid even if you move the message around. For deciding whether to link to message or query, you can customize -@var{mu4e-emacs-bookmark-policy}. +@code{mu4e-emacs-bookmark-policy}. Emacs bookmarks are not to be confused with mu4e's bookmarks; the former are a generic linking system across Emacs, while the latter are stored queries within @@ -3622,7 +3642,7 @@ generic linking system across Emacs, while the latter are stored queries within @cindex eldoc It is possible to get information about the current header in the echo-area. -You can enable this by setting @t{mu4e-eldoc-support} to non-@t{nil}. +You can enable this by setting @t{mu4e-eldoc-support} to non-@code{nil}. @node Org-mode @section Org-mode @@ -4498,14 +4518,14 @@ to (gracefully) terminate: seems to work quite well. @subsection How can I disable the @t{Indexing...} messages? -Set the variable @code{mu4e-hide-index-messages} to non-@t{nil}. +Set the variable @code{mu4e-hide-index-messages} to non-@code{nil}. @subsection IMAP-synchronization Some IMAP-synchronization programs such as @t{mbsync} (but not @t{offlineimap}) don't like it when message files do not change their names when they are moved to different folders. @code{mu4e} can attempt to help with this - you can set the -variable @code{mu4e-change-filenames-when-moving} to non-@t{nil}. +variable @code{mu4e-change-filenames-when-moving} to non-@code{nil}. Also, some of these programs may interpret the ``trash'' flag differently; see @code{mu4e-trash-without-flag} for how to influence that. @@ -4533,7 +4553,7 @@ sync'ing, the problem is with the sync-program, and it's most productive to complain there. Also, you may want to ensure that @t{mu4e-index-lazy-check} is kept at -its default (@t{nil}) value, since it seems @command{mbsync} can make +its default (@code{nil}) value, since it seems @command{mbsync} can make changes that escape a 'lazy' check. Furthermore, there have been quite a few related queries on the @@ -4559,9 +4579,9 @@ especially when opening @code{mu4e} the first time and you have a that @code{mu4e} 1.3 and higher only get @emph{changed} contacts in subsequent updates (after and indexing operation), so this should be less of a concern. And you can tweak what contacts you get using -@var{mu4e-compose-complete-only-personal}, -@var{mu4e-compose-complete-only-after} and -@var{mu4e-compose-complete-max}. +@code{mu4e-compose-complete-only-personal}, +@code{mu4e-compose-complete-only-after} and +@code{mu4e-compose-complete-max}. @item decryption / sign verification: encrypted / signed messages sometimes require network access, and this may take a while; certainly if the needed servers cannot be found. @@ -4699,9 +4719,9 @@ when setting up the database (@t{mu init}); @ref{Initializing the message store}. If you cannot find specific addresses you'd expect to find, inspect the -values of @var{mu4e-compose-complete-only-personal}, -@var{mu4e-compose-complete-only-after} and -@var{mu4e-compose-complete-max}. +values of @code{mu4e-compose-complete-only-personal}, +@code{mu4e-compose-complete-only-after} and +@code{mu4e-compose-complete-max}. @subsection How can I get rid of the message buffer after sending? @lisp @@ -4811,10 +4831,10 @@ search in vain for things that are not there (yet), and the author can use it as a todo-list. @subsection UTF-8 language environment is required -@code{mu4e} does not work well if the Emacs language environment is not UTF-8; so, -if you encounter problems with encodings, be sure to have -@code{(set-language-environment "UTF-8")} in your @file{~/.emacs} (or its moral -equivalents in other places). +@code{mu4e} does not work well if the Emacs language environment is not UTF-8; +so, if you encounter problems with encodings, be sure to have +@code{(set-language-environment "UTF-8")} in your @file{~/.emacs.d/init.el} (or +its moral equivalent, such as @file{~/.emacs}. @subsection Headers-buffer can get mis-aligned Due to the way the headers buffer works, it can get misaligned. @@ -5050,9 +5070,8 @@ wish. (add-hook 'message-send-hook #'confirm-empty-subject) @end lisp -If you @emph{always} want to be asked for for confirmation, set -@code{message-confirm-send} to non-@t{nil} so the question ``Send message?'' is -asked for confirmation. +If you @emph{always} want to be asked for confirmation before sending, you can +set @code{message-confirm-send} to non-@code{nil}. @node How it works @appendix How it works @@ -5097,8 +5116,8 @@ In words: @itemize @item Your e-mail messages are stored in a Maildir-directory (typically, @file{~/Maildir} and its subdirectories), and new mail comes in -using tools like @t{fetchmail}, @t{offlineimap}, or through a local mail -server. +using tools like @command{fetchmail}, @command{offlineimap}, or through a local +mail server. @item @command{mu} indexes these messages periodically, so you can quickly search for them. @command{mu} can run in a special @t{server}-mode, where it provides services to client software. @@ -5111,7 +5130,7 @@ them. @command{mu} can run in a special @t{server}-mode, where it provides servi @end itemize @node mu server -@section @t{mu server} +@section @command{mu server} @code{mu4e} is based on the @command{mu} e-mail searching/indexer. The latter is a C++-program; there are different ways to communicate with a @@ -5122,29 +5141,27 @@ tool with some parameters and then parse the output. In fact, that was the first approach --- @code{mu4e} would invoke e.g., @t{mu find} and process the output in Emacs. -However, with this approach, we need to load the entire e-mail -@emph{Xapian} database (in which the message is stored) for each -invocation. Wouldn't it be nicer to keep a running @command{mu} instance -around? Indeed, it would --- and thus, the @t{mu server} sub-command -was born. Running @t{mu server} starts a simple shell, in which you -can give commands to @command{mu}, which then spits out the -results/errors. @command{mu server} is not meant for humans, but it -can be used manually, which is great for debugging. +However, with this approach, we need to load the entire e-mail @emph{Xapian} +database (in which the message is stored) for each invocation. Wouldn't it be +nicer to keep a running @command{mu} instance around? Indeed, it would --- and +thus, the @command{mu server} sub-command was born. Running @t{mu server} starts +a simple shell, in which you can give commands to @command{mu}, which then spits +out the results/errors. @command{mu server} is not meant for humans, but it can +be used manually, which is great for debugging. @node Reading from the server @section Reading from the server In the design, the next question was what format @command{mu} should use for its -output for @code{mu4e} (Emacs) to process. Some other programs use -@abbr{JSON} here, but it seemed easier (and possibly, more efficient) just to -talk to Emacs in its native language: @emph{s-expressions}, and -interpret those using the Emacs-function -@code{read-from-string}. See @ref{The message s-expression} for details on the -format. +output for @code{mu4e} (Emacs) to process. Some other programs use @abbr{JSON} +here, but it seemed easier (and possibly, more efficient) just to talk to Emacs +in its native language: @emph{s-expressions}, and interpret those using the +Emacs-function @code{read-from-string}. See @ref{The message s-expression} for +details on the format. -So, now let's look at how we process the data from @t{mu server} in -Emacs. We'll leave out a lot of details, @code{mu4e}-specifics, and look -at a bit more generic approach. +So, now let's look at how we process the data from @t{mu server} in Emacs. We'll +leave out a lot of details, @code{mu4e}-specifics, and look at a bit more +generic approach. The first thing to do is to create a process (for example, with @code{start-process}), and then register a filter function for it, which is @@ -5221,7 +5238,7 @@ convenience functions in @file{mu4e-message.el}. Some notes on the format: @itemize @item The address fields are @emph{lists} of @t{plists} of the form -@code{(:name <name> :email <email>)}, where @t{name} can be @t{nil}. +@code{(:name <name> :email <email>)}, where @t{name} can be @code{nil}. @item The date is in format Emacs uses (for example in @code{current-time}).@footnote{Emacs 32-bit integers have only 29 bits available for the actual number; the other bits are use by Emacs for @@ -5273,8 +5290,7 @@ the time. @command{mu} itself keeps a log as well; depending on your system that could be in your @t{systemd} journal, @t{syslog} or in @t{<MUHOME>/mu.log}, on Unix typically @t{~/.cache/mu/mu.log}. To run the server in debug-mode, set -@var{mu4e-mu-debug} to @t{t} (before starting the server). - +@code{mu4e-mu-debug} to @t{t} (before starting the server). @node GNU Free Documentation License @appendix GNU Free Documentation License |
