[[!meta date="2016-10-03"]] Notmuch 0.23 (2016-10-03) ========================= General (Xapian 1.4+) --------------------- Compiling against Xapian 1.4 enables several new features. ### Support for single argument date: queries `date:` is equivalent to `date:..`. ### Support for blocking opens When opening a database notmuch by default will wait for another process to release a write lock, rather than returning an error. ### Support for named queries Named queries (also known as 'saved searches') can be defined with a `query:name` format. The expansion of these queries is stored in the database and they can be used from any notmuch client. Library ------- ### Message property API libnotmuch now supports the attachment of arbitrary key-value pairs to messages. These can be used by various tools to manage their private data without polluting the user tag space. They also support iteration of values with the same key or same key prefix. ### Bug fix for `notmuch_directory_set_mtime` Update cached mtime to match on-disk mtime. CLI --- ### Support for compile time options A group of `built_with` keys is now supported for notmuch config. Initial keys in this group are `compact`, `field_processor`, and `retry_lock`. ### Dump/Restore support for configuration information and properties Any configuration information stored in the database (initially just named queries) is dumped and restored. Similarly any properties attached to messages are also dumped and restored. Any new information in the dump format is prefixed by '#' to allow existing scripts to ignore it. Emacs ----- ### Make notmuch-message-mode use insert for fcc Notmuch-message-mode now defaults to using notmuch insert for fcc. The old file based fcc behaviour can be restored by setting the defcustom `notmuch-maildir-use-notmuch-insert` to nil. When using notmuch insert, `notmuch-fcc-dirs` must be a subdirectory of the mailstore (absolute paths are not permitted) followed by any tag changes to be applied to the inserted message. The tag changes are applied after the default tagging for new messages. For example setting the header to "sentmail -inbox +sent" would insert the message in the subdirectory sentmail of the mailstore, add the tag "sent", and not add the (normally added) "inbox" tag. Finally, if the insert fails (e.g. if the database is locked) the user is presented with the option to retry, ignore, or edit the header. ### Make internal address completion customizable There is a new defcustom `notmuch-address-internal-completion` which controls how the internal completion works: it allows the user to choose whether to match on messages the user sent, or the user received, and to filter the messages used for the match, for example by date. ### Allow internal address completion on an individual basis There is a new function `notmuch-address-toggle-internal-completion` (by default it has no keybinding) which allows users who normally use an external completion command to use the builtin internal completion for the current buffer. Alternatively, if the user has company-mode enabled, then the user can use company mode commands such as `company-complete` to activate the builtin completion for an individual completion. ### Resend messages The function `notmuch-show-resend-message` (bound to `b` in show and tree modes) will (attempt to) send current message to new recipients. The headers of the message won't be altered (e.g. `To:` may point to yourself). New `Resent-To:`, `Resent-From:` and so on will be added instead. ### Face customization is easier New faces `notmuch-tag-unread`, `notmuch-tag-flagged`, `notmuch-tag-deleted`, `notmuch-tag-added`, `notmuch-search-flagged-face` and `notmuch-search-unread-face` are now used by default. Customize `notmuch-faces` to modify them. ### Omit User-Agent header by default when sending mail Ruby Bindings ------------- ### Add support for `notmuch_database_get_all_tags` Go Bindings ----------- ### Go bindings moved to contrib ### Add support for `notmuch_threads_t` and `notmuch_thread_t` ### Fixed constant values so they are not all zero anymore Previously, it was impossible to open writable database handles, because `DATABASE_MODE_READ_ONLY` and `DATABASE_MODE_READ_WRITE` were both set to zero. The same issue occurred with sort modes.