notmuch clon
Find a file
W. Trevor King 98cb4779c0 nmbug-status: Add Page and HtmlPage for modular rendering
I was having trouble understanding the logic of the longish print_view
function, so I refactored the output generation into modular bits.
The basic text rendering is handled by Page, which has enough hooks
that HtmlPage can borrow the logic and slot-in HTML generators.

By modularizing the logic it should also be easier to build other
renderers if folks want to customize the layout for other projects.

Timezones
=========

This commit has not effect on the output, except that some dates have
been converted from the sender's timezone to UTC due to:

  -            val = m.get_header(header)
  -            ...
  -            if header == 'date':
  -                val = str.join(' ', val.split(None)[1:4])
  -                val = str(datetime.datetime.strptime(val, '%d %b %Y').date())
  ...
  +                value = str(datetime.datetime.utcfromtimestamp(
  +                    message.get_date()).date())

I also tweaked the HTML header date to be utcnow instead of the local
now() to make all times independent of the generator's local time.
This matches Gmane, which converts all Date headers to UTC (although
they use a 'GMT' suffix).  Notmuch uses
g_mime_utils_header_decode_date to calculate the UTC timestamps, but
uses a NULL tz_offset which drops the information we'd need to get
back to the sender's local time [1].  With the generator's local time
arbitrarily different from the sender's and viewer's local time,
sticking with UTC seems the best bet.

[1]: https://developer.gnome.org/gmime/stable/gmime-gmime-utils.html#g-mime-utils-header-decode-date
2014-02-10 22:51:03 -04:00
bindings version: bump to 0.17 2013-12-30 20:34:23 -04:00
compat timegm: add portable implementation (Solaris support) 2013-08-23 17:57:35 +02:00
completion completion: bash completion for notmuch new --quiet option 2014-02-03 16:19:49 -04:00
contrib remove notmuch-pick 2013-11-13 21:24:05 -04:00
debian debian: add single-debian-patch 2014-01-12 17:10:04 -04:00
devel nmbug-status: Add Page and HtmlPage for modular rendering 2014-02-10 22:51:03 -04:00
emacs emacs: initialize ido(-completing-read) in emacs 23.[123] 2014-02-03 16:20:39 -04:00
lib lib: update documentation for notmuch_database_get_directory 2014-01-26 09:36:38 -04:00
man man: document notmuch new --quiet option 2014-01-26 09:52:20 -04: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 perf-test: bump version to 0.4, use manifest files 2013-12-10 04:00:38 +08:00
test test: add basic tests for notmuch new --quiet option 2014-01-27 08:42:08 -04:00
util util: detect byte order 2013-11-27 07:43:29 -04:00
vim vim: add help file 2013-11-20 07:23:30 -06:00
.dir-locals.el .dir-locals.el: changed one-char comment prefix '; ' to two; '; ; ' 2012-01-22 08:41:37 -04:00
.gitignore emacs: update .gitignore 2013-06-02 20:44:26 -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: make the command line parser's errors more informative. 2012-09-01 23:03:36 -03:00
command-line-arguments.h command-line-arguments.[ch]: make arrays of keyword descriptors const 2011-12-13 00:00:44 -04:00
configure configure: only install bash completion if supported 2014-02-03 16:19:08 -04: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
dump-restore-private.h notmuch-dump: add --format=(batch-tag|sup) 2012-12-08 10:40:54 -04: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: introduce the concept of user defined hooks 2011-12-11 13:57:31 -04:00
INSTALL Recommend libgmime-2.6-dev in INSTALL 2012-05-24 21:54:30 -03:00
Makefile build: fix out-of-tree builds 2013-05-26 18:49:04 -03:00
Makefile.local build: delete the default .SUFFIXES 2014-01-25 13:09:45 -04: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 notmuch dump: default to batch-tag format. 2014-01-24 08:52:09 -04:00
notmuch-client.h search: Add stable queries to thread search results 2013-11-08 20:43:29 -04: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 cli: abstract common config get/set code 2014-01-18 20:09:49 -04: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: default to batch-tag format. 2014-01-24 08:52:09 -04:00
notmuch-insert.c cli: clean up exit status code returned by the cli commands 2014-01-18 14:45:26 -04:00
notmuch-new.c cli: add --quiet option to notmuch new 2014-01-26 09:49:00 -04:00
notmuch-reply.c cli: clean up exit status code returned by the cli commands 2014-01-18 14:45:26 -04:00
notmuch-restore.c cli: clean up exit status code returned by the cli commands 2014-01-18 14:45:26 -04:00
notmuch-search.c cli: clean up exit status code returned by the cli commands 2014-01-18 14:45:26 -04: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: close config and do talloc report also on errors 2014-01-18 14:46:05 -04: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 INSTALL/README: Clean up the description of how to run the emacs interface. 2010-06-01 10:51:42 -07: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 tag-util: do not reset list in parse_tag_command_line 2013-06-29 14:36:23 -03:00
tag-util.h tag-util: do not reset list in parse_tag_command_line 2013-06-29 14:36:23 -03:00
version version: bump to 0.17 2013-12-30 20:34:23 -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:

	(require 'notmuch)

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