notmuch clon
Find a file
Daniel Kahn Gillmor eb232ee0ab reindex: drop notmuch_param_t, use notmuch_indexopts_t instead
There are at least three places in notmuch that can trigger an
indexing action:

 * notmuch new
 * notmuch insert
 * notmuch reindex

I have plans to add some indexing options (e.g. indexing the cleartext
of encrypted parts, external filters, automated property injection)
that should properly be available in all places where indexing
happens.

I also want those indexing options to be exposed by (and constrained
by) the libnotmuch C API.

This isn't yet an API break because we've never made a release with
notmuch_param_t.

These indexing options are relevant in the listed places (and in the
libnotmuch analogues), but they aren't relevant in the other kinds of
functionality that notmuch offers (e.g. dump/restore, tagging, search,
show, reply).

So i think a generic "param" object isn't well-suited for this case.
In particular:

 * a param object sounds like it could contain parameters for some
   other (non-indexing) operation.  This sounds confusing -- why would
   i pass non-indexing parameters to a function that only does
   indexing?

 * bremner suggests online a generic param object would actually be
   passed as a list of param objects, argv-style.  In this case (at
   least in the obvious argv implementation), the params might be some
   sort of generic string.  This introduces a problem where the API of
   the library doesn't grow as new options are added, which means that
   when code outside the library tries to use a feature, it first has
   to test for it, and have code to handle it not being available.
   The indexopts approach proposed here instead makes it clear at
   compile time and at dynamic link time that there is an explicit
   dependency on that feature, which allows automated tools to keep
   track of what's needed and keeps the actual code simple.

My proposal adds the notmuch_indexopts_t as an opaque struct, so that
we can extend the list of options without causing ABI breakage.

The cost of this proposal appears to be that the "boilerplate" API
increases a little bit, with a generic constructor and destructor
function for the indexopts struct.

More patches will follow that make use of this indexopts approach.
2017-08-23 07:55:12 -03:00
bindings database: add n_d_index_file (deprecates n_d_add_message) 2017-08-23 07:38:37 -03:00
compat Use rooted paths in .gitignore files 2017-08-18 19:42:35 -03:00
completion completion: add bash completion for "notmuch reindex" 2017-08-18 19:50:21 -03:00
contrib database: add n_d_index_file (deprecates n_d_add_message) 2017-08-23 07:38:37 -03:00
debian Use rooted paths in .gitignore files 2017-08-18 19:42:35 -03:00
devel Use rooted paths in .gitignore files 2017-08-18 19:42:35 -03:00
doc doc: Disable SmartyPants in generated manual pages 2017-08-20 08:32:29 -03:00
emacs emacs: Use make-process when available 2017-08-20 08:33:09 -03:00
lib reindex: drop notmuch_param_t, use notmuch_indexopts_t instead 2017-08-23 07:55:12 -03:00
packaging Use https instead of http where possible 2016-06-05 08:32:17 -03:00
parse-time-string Use https instead of http where possible 2016-06-05 08:32:17 -03:00
performance-test perf-test: add memory test for notmuch-insert 2017-08-20 08:48:43 -03:00
test database: add n_d_index_file (deprecates n_d_add_message) 2017-08-23 07:38:37 -03:00
util database: move striping of trailing '/' into helper function 2017-08-22 18:47:51 -03:00
vim VIM: Improve performance of folders_render 2015-01-23 18:18:54 +01:00
.dir-locals.el .dir-locals.el: changed one-char comment prefix '; ' to two; '; ; ' 2012-01-22 08:41:37 -04:00
.gitignore Use rooted paths in .gitignore files 2017-08-18 19:42:35 -03:00
.mailmap create .mailmap file (for git shortlog/blame) 2016-07-29 06:01:44 +09:00
.travis.yml travis: Only notify IRC on success if the previous build failed 2014-08-05 08:03:05 -03:00
AUTHORS Drop date.c file, (use identical function from GMime instead). 2009-11-02 14:36:33 -08:00
command-line-arguments.c cli: add space separator for keyword, string, and int arguments 2017-07-12 17:46:29 -03:00
command-line-arguments.h cli: change api of parse_option 2017-07-12 17:44:15 -03:00
configure test: define GMime version dependant breakage 2017-05-31 21:54:08 -03:00
COPYING Use https instead of http where possible 2016-06-05 08:32:17 -03:00
COPYING-GPL-3 Use https instead of http where possible 2016-06-05 08:32:17 -03:00
crypto.c crypto: Avoid explicit handling of GMimeCryptoContext in gmime 3 2017-07-15 21:43:08 -03:00
debugger.c Use https instead of http where possible 2016-06-05 08:32:17 -03:00
gmime-filter-reply.c Filter out carriage-returns in show and reply output. 2009-11-18 23:34:43 +01:00
gmime-filter-reply.h Typsos 2009-11-18 03:21:36 -08:00
hooks.c Use https instead of http where possible 2016-06-05 08:32:17 -03:00
INSTALL Use https instead of http where possible 2016-06-05 08:32:17 -03:00
Makefile support make goals after initial {'', dist, data}clean goal(s) 2017-03-10 08:04:27 -04:00
Makefile.global rename libutil.a to libnotmuch_util.a 2017-03-18 21:37:43 -03:00
Makefile.local add "notmuch reindex" subcommand 2017-08-01 21:17:47 -04:00
mime-node.c show: workaround for the missing file problem 2017-08-22 18:48:29 -03:00
NEWS NEWS: set date 2017-07-25 07:24:11 -04:00
notmuch-client.h remove boolean "first" argument from format_part_sprinter 2017-08-16 21:56:58 -03:00
notmuch-compact.c Use https instead of http where possible 2016-06-05 08:32:17 -03:00
notmuch-config.c config: deprecate/drop crypto.gpg_path under gmime 2.6/3.0 2017-07-14 21:23:52 -03:00
notmuch-count.c fix wrong printf formatting of signed/unsigned integers 2017-06-25 09:39:35 -03:00
notmuch-dump.c Merge branch 'release' 2017-06-01 07:54:38 -03:00
notmuch-insert.c database: add n_d_index_file (deprecates n_d_add_message) 2017-08-23 07:38:37 -03:00
notmuch-new.c database: add n_d_index_file (deprecates n_d_add_message) 2017-08-23 07:38:37 -03:00
notmuch-reindex.c reindex: drop notmuch_param_t, use notmuch_indexopts_t instead 2017-08-23 07:55:12 -03:00
notmuch-reply.c remove boolean "first" argument from format_part_sprinter 2017-08-16 21:56:58 -03:00
notmuch-restore.c cli: optionally restore message properties from dump file 2016-09-21 18:14:25 -03:00
notmuch-search.c cli/search: print total number of files matched in summary output. 2017-08-01 21:17:47 -04:00
notmuch-setup.c Use https instead of http where possible 2016-06-05 08:32:17 -03:00
notmuch-show.c remove boolean "first" argument from format_part_sprinter 2017-08-16 21:56:58 -03:00
notmuch-tag.c lib: replace deprecated n_q_search_messages with status returning version 2017-03-22 08:35:07 -03:00
notmuch-time.c Use https instead of http where possible 2016-06-05 08:32:17 -03:00
notmuch.c add "notmuch reindex" subcommand 2017-08-01 21:17:47 -04:00
query-string.c Use https instead of http where possible 2016-06-05 08:32:17 -03:00
README Use https instead of http where possible 2016-06-05 08:32:17 -03:00
README.rst Use https instead of http where possible 2016-06-05 08:32:17 -03:00
sprinter-json.c sprinters: bugfix when NULL passed for a string. 2012-08-12 21:25:01 +02:00
sprinter-sexp.c Use https instead of http where possible 2016-06-05 08:32:17 -03:00
sprinter-text.c sprinter: add text0 formatter for null character separated text 2012-12-18 17:03:34 -04:00
sprinter.h sprinter: add text0 formatter for null character separated text 2012-12-18 17:03:34 -04:00
status.c cli/insert: return EX_TEMPFAIL for some errors 2016-12-07 07:00:40 -04:00
tag-util.c remove ineffective assignments 2017-06-25 09:38:22 -03:00
tag-util.h cli: export function for illegal tag checking 2014-03-06 07:41:38 -04:00
version version: bump to 0.25 2017-07-25 07:21:29 -04:00

Notmuch - thread-based email index, search and tagging.

Notmuch is a system for indexing, searching, reading, and tagging
large collections of email messages in maildir or mh format. It uses
the Xapian library to provide fast, full-text search with a convenient
search syntax.

Notmuch is free software, released under the GNU General Public
License version 3 (or later).

Building notmuch
----------------
See the INSTALL file for notes on compiling and installing notmuch.

Running notmuch
---------------
After installing notmuch, start by running "notmuch setup" which will
interactively prompt for configuration information such as your name,
email address, and the directory which contains your mail archive to
be indexed. You can change any answers later by running "notmuch
setup" again or by editing the .notmuch-config file in your home
directory.

With notmuch configured you should next run "notmuch new" which will
index all of your existing mail. This can take a long time, (several
hours) if you have a lot of email, (hundreds of thousands of
files). When new mail is delivered to your mail archive in the future,
you will want to run "notmuch new" again. These runs will be much
faster as they will only index new messages.

Finally, you can prove to yourself that things are working by running
some command-line searches such as "notmuch search
from:someone@example.com" or "notmuch search subject:topic". See
"notmuch help search-terms" for more details on the available search
syntax.

The command-line search output is not expected to be particularly
friendly for day-to-day usage. Instead, it is expected that you will
use an email interface that builds on the notmuch command-line tool or
the libnotmuch library.

Notmuch installs a full-featured email interface for use within
emacs. To use this, first add the following line to your .emacs file:

	(autoload 'notmuch "notmuch" "Notmuch mail" t)

Then, either run "emacs -f notmuch" or execute the command "M-x
notmuch" from within a running emacs.

If you're interested in a non-emacs-based interface to notmuch, then
please join the notmuch community. Various other interfaces are
already in progress, (an interface within vim, a curses interface,
graphical interfaces based on evolution, and various web-based
interfaces). The authors of these interfaces would love further
testing or contribution. See contact information below.

Contacting users and developers
-------------------------------
The website for Notmuch is:

	https://notmuchmail.org

The mailing list address for the notmuch community is:

	notmuch@notmuchmail.org

We welcome any sort of questions, comments, kudos, or code there.

Subscription is not required, (but if you do subscribe you'll avoid
any delay due to moderation). See the website for subscription
information.

There is also an IRC channel dedicated to talk about using and
developing notmuch:

	IRC server:	irc.freenode.net
	Channel:	#notmuch