notmuch clon
Find a file
Mark Walters 2e1eee3a77 emacs: show: add an update seen function to post-command-hook
Add a function for updating seen messages to the
post-command-hook. This function calls a customizable (by eg
defcustom) function with parameters the start and end of the current
window and that function can decide what to mark read based on that
and the current point.

Since this is in the post-command-hook it should get called after most
user actions (exceptions include user resizing the window) so it
should be possible to make sure the seen status gets updated whether
the user uses notmuch commands like next-message or normal emacs
commands like scroll-up.

It removes all of the old mark read/seen points but introduces a
simple example function that just marks the current message read if it
is open. This function has one small subtlety: it makes sure it
doesn't mark the same message read twice (in the same instance of the
same buffer); otherwise the post-command-hook makes it impossible for
a user to manually mark a message unread.

This fixes the current bugs (imo) that closed messages can be marked
read, and that opening a closed message does not mark it read.

Another advantage of using the post-command-hook any programmatic use
with point passing through a message will not mark it read.
2014-07-13 12:34:02 -03:00
bindings notmuch 0.18.1 release 2014-06-25 08:01:17 -03:00
compat configure: add workaround for systems without zlib.pc 2014-06-21 16:40:39 -03:00
completion completion: complete directory parameters to directories only 2014-03-25 20:00:24 -03:00
contrib remove notmuch-pick 2013-11-13 21:24:05 -04:00
debian version: bump to 0.18.1 2014-06-25 07:30:10 -03:00
devel nmbug: mark repository as bare on clone 2014-04-15 17:20:19 -03:00
doc docs: remove spurious man page generated from doxygen 2014-07-13 08:59:02 -03:00
emacs emacs: show: add an update seen function to post-command-hook 2014-07-13 12:34:02 -03:00
lib lib: Start all function names in notmuch-private.h with 2014-07-13 12:25:29 -03:00
packaging packaging: fedora: add ruby bindings 2013-06-02 08:03:47 -03:00
parse-time-string timegm: add portable implementation (Solaris support) 2013-08-23 17:57:35 +02:00
performance-test build: add dataclean 2014-05-28 09:52:10 -03:00
test test: make test_emacs call post-command-hook 2014-07-13 12:33:53 -03:00
util util: add gz_readline 2014-04-12 07:59:44 -03:00
vim vim: improve the way messages are sent 2014-05-03 06:00:22 +09:00
.dir-locals.el .dir-locals.el: changed one-char comment prefix '; ' to two; '; ; ' 2012-01-22 08:41:37 -04:00
.gitignore build: write version.stamp file containing $(VERSION) string 2014-04-10 23:24:10 -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: command line option parser cleanup 2014-02-25 20:53:41 -04:00
command-line-arguments.h command-line-arguments.[ch]: make arrays of keyword descriptors const 2011-12-13 00:00:44 -04:00
configure build: generate sh.config for feeding configure results to shell scripts 2014-07-13 12:15:47 -03:00
COPYING Add copy of GNU General Public License (version 3). 2009-10-21 16:25:08 -07:00
COPYING-GPL-3 Add copy of GNU General Public License (version 3). 2009-10-21 16:25:08 -07:00
crypto.c crypto: return NULL cryptoctx if protocol string is empty. 2013-07-20 09:13:48 -03:00
debugger.c notmuch-new: Only install SIGALRM if not running under gdb 2009-11-22 05:36:36 +01: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 cli: Flush stdout before fork()ing to run hooks 2014-03-25 21:22:17 -03:00
INSTALL dump: support gzipped and atomic output 2014-04-12 07:59:44 -03:00
Makefile build: move canonical list of subdirectories to configure script 2014-03-25 08:32:10 -03:00
Makefile.local build: generate sh.config for feeding configure results to shell scripts 2014-07-13 12:15:47 -03:00
mime-node.c cli: mime node: fix compiler warning when building against gmime 2.4 2013-04-14 19:49:16 -03:00
NEWS NEWS: add minimal item for API change to close/destroy 2014-07-09 20:39:26 -03:00
notmuch-client.h dump: support gzipped and atomic output 2014-04-12 07:59:44 -03:00
notmuch-compact.c cli: clean up exit status code returned by the cli commands 2014-01-18 14:45:26 -04:00
notmuch-config.c compat: add canonicalize_file_name 2014-04-08 07:27:14 -03:00
notmuch-count.c cli: clean up exit status code returned by the cli commands 2014-01-18 14:45:26 -04:00
notmuch-dump.c notmuch-dump: use fsync instead of fdatasync 2014-05-18 06:31:15 +09:00
notmuch-insert.c cli: make sure notmuch new and insert don't add invalid tags 2014-03-06 07:42:10 -04:00
notmuch-new.c notmuch-new: backup tags before database upgrade 2014-04-12 07:59:44 -03:00
notmuch-reply.c cli: sanitize the received header before scanning for replies 2014-03-25 21:22:03 -03:00
notmuch-restore.c restore: transparently support gzipped input 2014-04-12 07:59:44 -03:00
notmuch-search.c util: make sanitize string available in string util for reuse 2014-03-09 10:13:30 -03:00
notmuch-setup.c cli: clean up exit status code returned by the cli commands 2014-01-18 14:45:26 -04:00
notmuch-show.c notmuch-show: detect NULL pointer returned from notmuch_query_search_threads 2014-01-24 20:24:11 -04:00
notmuch-tag.c cli: clean up exit status code returned by the cli commands 2014-01-18 14:45:26 -04:00
notmuch-time.c Add some const correctness to talloc 'ctx' parameter. 2009-11-17 19:10:37 -08:00
notmuch.c cli: fix notmuch help additional topics 2014-03-27 22:18:43 -03:00
notmuch.desktop notmuch.desktop: Clarify that this is the emacs interface to notmuch. 2010-01-24 07:30:08 +13:00
query-string.c notmuch: Break notmuch.c up into several smaller files. 2009-11-10 12:03:05 -08:00
README emacs: instruct user to autoload notmuch instead of require'ing it 2014-03-30 11:02:08 -03:00
sprinter-json.c sprinters: bugfix when NULL passed for a string. 2012-08-12 21:25:01 +02:00
sprinter-sexp.c Adding an S-expression structured output printer. 2012-12-08 09:26:29 -04: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
tag-util.c cli: add missing \n in error message 2014-03-06 07:46:27 -04:00
tag-util.h cli: export function for illegal tag checking 2014-03-06 07:41:38 -04:00
version version: bump to 0.18.1 2014-06-25 07:30:10 -03: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:

	http://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