Some of the tests were using (mfind "") to find messages, but since some
messages don't have dates the order is implicitly defined by the directory
order. This usually works, but not always (i.e. guix).
So let's make the behavior deterministic.
Fixes#2888
Some methods that returned lists would return ~#f~ when there were no
results (e.g., to, from, cc, bcc, references, labels); however, it's
nicer to return an empty list instead, which what we now do. Technically a
breaking change, but justified while we are still 'experimental'.
Add a method personal? to check if some string looks like a personal address;
add docs / tests as well.
Rename the all-labels method into simply 'labels'
Make some define* into define-method, for consistency.
Implement message->alist; i.e. to convert the mu4e-style plist into an idiomatic
alist. Add it as a message slot, initializing it lazily.
Update the message accessors to use the alist.
Add tests, docs.
Implement accessing the MIME-parts + docs + test.
Implement saving attachments to file.
Implement creating messages from files.
Refactor / rename functions to be more uniform.
Replace the iso-date->time-t and v.v. functions with something more
customizable. Add more tests.
Use some (internal for now) %preferences variable for the defaults. TBD... maybe
should become a fluid?
Implement support for "header" and "body" procedures, with require loading the
message file from disk, and create a foreign object for the message.
We keep those alive in a vector, and hook up a finalizer.
Update docs & tests as well.