mirror of
https://github.com/djcb/mu.git
synced 2024-07-06 09:01:17 +02:00
c76aa53156
The command names are formatted inconsistently, e.g.: * NAME ~mu add~ - add one or more messages to the database versus: * NAME *mu cfind* is the *mu* command to find contacts in the *mu* database and export them versus: * NAME mu server - the mu backend for the mu4e e-mail client and the format, with a space between "mu" and the subcommand, is not compatible with mandb(8). Use formatting which is consistent and replace the spaces with hyphens. Signed-off-by: Jeremy Sowden <azazel@debian.org>
92 lines
2.4 KiB
Org Mode
92 lines
2.4 KiB
Org Mode
#+TITLE: MU-SERVER
|
|
#+MAN_CLASS_OPTIONS: :section-id "@SECTION_ID@" :date "@MAN_DATE@"
|
|
|
|
* NAME
|
|
|
|
mu-server - the mu backend for the mu4e e-mail client
|
|
|
|
* SYNOPSIS
|
|
|
|
mu [common-options] server
|
|
|
|
* DESCRIPTION
|
|
*mu server* starts a simple shell in which one can query and manipulate the mu
|
|
database. The output uses s-expressions. *mu server* is not meant for use by
|
|
humans, except for debugging purposes. Instead, it is designed specifically for
|
|
the *mu4e* e-mail client.
|
|
|
|
#+begin_example
|
|
(<command-name> :param1 value1 :param2 value2)
|
|
#+end_example
|
|
|
|
For example, to view a certain message, the command would be:
|
|
|
|
#+begin_example
|
|
(view :docid 12345)
|
|
#+end_example
|
|
|
|
Parameters can be sent in any order; they must be of the correct type though.
|
|
See *lib/utils/mu-sexp-parser.hh* and *lib/utils/mu-sexp-parser.cc* in source-tree
|
|
for the details.
|
|
|
|
* OUTPUT FORMAT
|
|
*mu server* accepts a number of commands, and delivers its results in the form:
|
|
|
|
#+begin_example
|
|
\\376<length>\\377<s-expr>
|
|
#+end_example
|
|
|
|
\\376 (one byte 0xfe), followed by the length of the s-expression expressed as
|
|
an hexadecimal number, followed by another \\377 (one byte 0xff), followed by
|
|
the actual s-expression.
|
|
|
|
By prefixing the expression with its length, it can be processed more
|
|
efficiently. The \\376 and \\377 were chosen since they never occur in valid
|
|
UTF-8 (in which the s-expressions are encoded).
|
|
|
|
* SERVER OPTIONS
|
|
|
|
** --commands
|
|
|
|
List available commands (and try with ~--verbose~)
|
|
|
|
** --eval <expression>
|
|
|
|
Evaluate a mu4e server s-expression
|
|
|
|
** --allow-temp-file
|
|
|
|
If set, allow for the output of some commands to use temp-files rather than
|
|
directly through the emacs process input/output. This is noticeably faster for
|
|
commands with a lot of output, esp. when the the temp-file uses a in-memory
|
|
file-system.
|
|
|
|
* PERFORMANCE
|
|
|
|
As an indication for the relative performance, we can simulate something ~mu4e~
|
|
does; we take overall time of 50 such requests:
|
|
|
|
#+begin_src sh
|
|
time build/mu/mu server --allow-temp-file --eval '(find :query "\"\"" :include-related t :threads t :maxnum 50000)' >/dev/null
|
|
#+end_src
|
|
(and ~--allow-temp-file~ for 1.11)
|
|
|
|
#+ATTR_MAN: :disable-caption t
|
|
| release | time (sec) |
|
|
|---------------+------------|
|
|
| 1.8 | 8.6s |
|
|
| 1.10 | 5.7s |
|
|
| 1.11 (master) | 2.8s |
|
|
|
|
|
|
#+include: "muhome.inc" :minlevel 2
|
|
|
|
#+include: "common-options.inc" :minlevel 1
|
|
|
|
#+include: "prefooter.inc" :minlevel 1
|
|
|
|
* SEE ALSO
|
|
*mu(1)*
|