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.
For the list building, using cons is much faster. So traverse the results
_backwards_, and then cons gives us the right order.
Don't eval when creating the list, but do so lazily (when requested in the
message, in mu-scm.scm)
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?
SCM exception are "non-local exits", which mean that c++ objects don't get their
DTOR called when leaving the scope.... this break RAII, leaks mem etc.
So instead, we avoid SCM exceptions (where we can), and throw C++ exceptions,
and only use SCM-expections in the catch block.
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.
This implements the new scm/guile bindings for mu, to replace the deprecated
guile/ (at some point in the future).
For now, we allow for creating a guile shell with mu support.