Commit graph

2930 commits

Author SHA1 Message Date
Tom Prince
dbceb50f47 Don't link libnotmuch if libutil isn't linked in properly.
For some reason, on my machine, the link is picking up
/usr/lib/libutil.so instead of util/libutil.a. This causes there to be
undefined symbols in libnotmuch, making it unuseable. This patch causes
the link to fail instead.
2011-11-19 15:18:05 -04:00
David Bremner
418e098eed RELEASING: document the semi-automated version propagation.
The instructions are purposely a bit coy about what files are updated,
so we don't have to update immediately when something else is plugged
into the make recipe.
2011-11-19 10:09:25 -04:00
David Bremner
570d12b7e6 build system: add target update-versions to propagate version
The version from file "version" is propagated to the man page and the
python bindings via sed. Note that the git version is ignored because
of the check for MAKECMDGOALS.
2011-11-19 10:09:14 -04:00
David Bremner
6a9711b1fb build system: use $(filter ...) to test MAKECMDGOALS
This makes the test easier to extend to more targets. It also corrects
a bug where "special" targets were only detected when given alone.
2011-11-19 10:09:04 -04:00
David Bremner
eb88cd977b version: update version info for 0.10~rc2
Arguably editing debian/changelog violates the "do one thing at a
time" rule, but all of these versions need to be kept in sync.
2011-11-19 08:24:30 -04:00
Tomi Ollila
6237f3808c test: make all tests terminable with Ctrl-c
Some tests don't break when HUP signal is sent tho those (by
pressing ctrl-c on the terminal). Therefore, the top-level
test script catches the HUP and sends TERM signal to the
started test script.
2011-11-18 13:53:51 -05:00
Pieter Praet
66247d26f3 test: emacs: tidy up "Stashing in notmuch-show" test
Merge expected output into the actual test, so we can verify the stashed
filename using ${gen_msg_filename} instead of doing sed tricks.
2011-11-18 13:29:35 -05:00
Tomi Ollila
c832dad322 test: attempt to send QUIT to smtp-dummy in case mail send failed
If mail sending from emacs fails before it has chance to connect
to the smtp-dummy mail server, the opportunistic QUIT message
sending makes smtp-dummy to exit.
2011-11-18 10:49:53 -04:00
Tomi Ollila
8efdc0518d test: create dtach's session socket in $TEST_TMPDIR
Due to 108-character limit in unix domain socket path this change
is required; it is more probable that length of ${TMPDIR:-/tmp} is
shorter than length of path to the current directory of notmuch test
source directory. One can expect to create reasonable-length unix
domain sockets wherever $TMPDIR points to.
2011-11-17 19:35:32 -04:00
Tomi Ollila
a0ec104f13 test: create TEST_TMPDIR for holding temporary files
The TEST_TMPDIR if first needed to hold dtach's socket (due
to 108-character limit in socket file names). Later it can be
used to hold other temporary files; directory deleted at exit.
2011-11-17 19:35:32 -04:00
David Bremner
299e187bdf build system: tweak VERSION so that debian-snapshot works for N.NN~rcN
The problem was that the version is recovered from the git tag, which
has the ~ replaced by _. This broke the sequencing of version numbers.
2011-11-17 12:40:50 -04:00
Pieter Praet
53b921d604 NEWS: fix some old typos and trailing whitespace
(with a further M-x whitespace-cleanup by db)
2011-11-16 18:14:45 -04:00
Pieter Praet
990ad97663 NEWS: add entries for stashing-related keybinding and tests
Add news entries for commits:
  f9764bfacc
  64febdf71c
2011-11-16 18:08:33 -04:00
Daniel Schoepe
06f59befb4 NEWS entry for id-links
This adds a NEWS entry for commit 4a4ada73b7

(second try, with whitespace fix)
2011-11-16 14:15:11 -04:00
David Bremner
afb4387e5c Revert "NEWS entry for id-links"
This reverts commit e93bf1f842.

reverting to fix whitespace
2011-11-16 14:14:08 -04:00
Daniel Schoepe
e93bf1f842 NEWS entry for id-links
This adds a NEWS entry for commit 4a4ada73b7
2011-11-16 14:10:30 -04:00
Daniel Schoepe
2d5b927d2a NEWS entry for adding tab-completion to notmuch-search
Add a news entry for commit6a280088e6769015ade7758b9790384997a21ff3.
2011-11-16 14:10:10 -04:00
David Bremner
fa040d9459 NEWS: mention improved search buffer performance, change Optimizations to Performance
via email: id:"20111116154317.GC2852@mit.edu"
2011-11-16 13:05:44 -04:00
David Bremner
a5a8d6eb4a notmuch.1: bump version number
More of a leap than a bump.  This is a bit silly keeping 3 files
syncronized. At least for this file, I would prefer a solution that
generates notmuch.1 from some template at build time.
2011-11-16 07:45:51 -04:00
David Bremner
05aa85e490 RELEASING: update description of "make release".
The additional "safety feature" documented here is motivated by the
fact that I use gpg-agent and I don't always get the GPG prompt that
Carl was relying on as an abort point. The new version also allows
more to be done in "dry run" mode.
2011-11-16 07:41:44 -04:00
David Bremner
b2d9e716e7 RELEASING: update discussion of version handling
This is definitely reaching the point where it should be automated.
2011-11-16 07:25:57 -04:00
David Bremner
d78d5b6258 RELEASING: update symbol handling description for current practice.
We really did bump SONAME, and we probably will again, but not just
for a simple symbol addition.

Debian versions generally need to be removed from symbols file; this
wasn't a problem before because there was no Debian versions
2011-11-16 07:22:35 -04:00
David Bremner
33d326be4a NEWS: discuss contrib and nmbug
I mention the possibility of a seperate license here because currently
notmuch-deliver is licensed GPL v2 only.
2011-11-15 23:06:38 -04:00
David Bremner
8036537bc4 debian/libnotmuch2.symbols: add notmuch_query_count_threads
Since this is only an added symbol, no soname bump required.
2011-11-15 20:22:38 -04:00
David Bremner
36f0f80aa2 debian: new changelog stanza for 0.10~rc1-1
The changelog is a bit minimalist, but we'll do better for the real
release.
2011-11-15 19:49:50 -04:00
David Bremner
6b8fd9dd41 version: update to 0.10~rc1
and the usual dance with the python bindings version.
2011-11-15 19:46:08 -04:00
Jani Nikula
8a4d631d7c test: add tests for notmuch search --offset and --limit
Signed-off-by: Jani Nikula <jani@nikula.org>
2011-11-15 19:25:58 -04:00
Jani Nikula
28d78c2b02 test: add tests for notmuch count
Signed-off-by: Jani Nikula <jani@nikula.org>
2011-11-15 19:22:13 -04:00
Jani Nikula
386ad3d6a1 cli: add support for --output parameter in notmuch count
Add support for --output=messages (which remains the default) and
--output=threads to notmuch count.

Signed-off-by: Jani Nikula <jani@nikula.org>
2011-11-15 19:20:27 -04:00
Jani Nikula
e7328d7b00 cli: drop unused code from notmuch count
Remove unused code within #if 0 blocks from notmuch count.

Signed-off-by: Jani Nikula <jani@nikula.org>
2011-11-15 19:19:28 -04:00
Jani Nikula
796b629c3b cli: add options --offset and --limit to notmuch search
Add options --offset=[-]N and --limit=M to notmuch search to determine the
first result and maximum number of results to display.

Option --limit=M limits the maximum number of results to display to M.

Option --offset=[-]N skips the first N results; with the leading '-' skip
until the Nth result from the end.

Note that --offset with a negative N for thread or summary output requires
counting the number of matching threads in advance.

Signed-off-by: Jani Nikula <jani@nikula.org>
2011-11-15 19:17:24 -04:00
Jani Nikula
00c60fbcb3 lib: add function to get the number of threads matching a search
Add function notmuch_query_count_threads() to get the number of threads
matching a search. This is done by performing a search and figuring out the
number of unique thread IDs in the matching messages, a significantly
heavier operation than notmuch_query_count_messages().

Signed-off-by: Jani Nikula <jani@nikula.org>
2011-11-15 19:12:32 -04:00
Austin Clements
ed20210b6d test: Add a test script for "notmuch tag" 2011-11-14 21:21:22 -04:00
Austin Clements
7a306e12c8 news: Store "from" and "subject" headers in the database. 2011-11-14 21:14:41 -04:00
Austin Clements
567bcbc294 Store "from" and "subject" headers in the database.
This is a rebase and cleanup of Istvan Marko's patch from
id:m3pqnj2j7a.fsf@zsu.kismala.com

Search retrieves these headers for every message in the search
results.  Previously, this required opening and parsing every message
file.  Storing them directly in the database significantly reduces IO
and computation, speeding up search by between 50% and 10X.

Taking full advantage of this requires a database rebuild, but it will
fall back to the old behavior for messages that do not have headers
stored in the database.
2011-11-14 17:10:58 -04:00
Tomi Ollila
9cda22c39b test/atomicity: change shebang to '#!/usr/bin/env bash' 2011-11-14 17:08:53 -04:00
Jameson Graef Rollins
edd2f3f0a8 emacs: add notmuch-show-worker function for specifying crypto processing directly
The main reason to introduce this new unexposed function is to allow
the buffer redisplay crypto switch to behaving in a more expected way.
The prefix to notmuch-show-redisplay buffer now switches the crypto
processing of the current show buffer, as opposed to switching the
logic of the notmuch-crypto-process-mime customization variable.  This
behavior is more intuitive.
2011-11-13 15:22:16 -04:00
Jameson Graef Rollins
b00e27bd99 emacs: add documentation for notmuch-show crypto-switch option 2011-11-13 15:21:58 -04:00
Tom Prince
74f16571e8 Link libutil using filenmae, rather than using -l.
glibc includes a libutil, so if the wrong -L options get passed, we
will pick up glibc's version, rather than our own.
2011-11-13 14:58:21 -04:00
Thomas Jost
cb7270b27a test: make smtp-dummy work with Emacs 24
In Emacs 24, a space is expected after a SMTP response code. If we don't respect
that, smtpmail-send-it will wait forever.
2011-11-13 13:48:02 -04:00
Dmitry Kurochkin
5964a760a5 test: do not hide test_emacs errors
Do not redirect test_emacs stderr to /dev/null.  Test_emacs uses
emacsclient(1) now and it does not print unwanted messages (like
those from `message') to stderr.  But it does print useful
errors, e.g. when emacs server connection fails, given expression
is not valid or undefined function is called.
2011-11-13 09:44:36 -04:00
Tomi Ollila
085d45e389 exec emacs at the end of run_emacs script
In the last line of run_emacs, exec the emacs process.
With one fork less the process list is (also) neater.
2011-11-12 23:21:44 -04:00
David Bremner
ebd1adc55b contrib/nmbug: new script for sharing tags with a given prefix.
The main idea is consider the notmuch database as analogous to the
work-tree. A bare git repo is maintained in the users home directory,
with a tree of the form tags/$message-id/$tag

Like notmuch and git, we have a set of subcommnds, mainly modelled on
git.

Implementation wise, the heavy lifting is in the following functions.

   commit	xapian -> git
   checkout	git -> xapian
   merge	fetched git + git -> xapian
   status	find differences between xapian, git, and remote git.

The central implementation trick, from an idea I think due to
tomprince on IRC is manipulate the git index directly from the xapian
tag information.  The merge routine is still done using a temporary
checkout as I wasn't able to get it working with the index only.

There are also some convenience wrappers around git commands, like "fetch"
that essential just set GIT_DIR in the environment.

In order to encode tags (viewed as octet sequences) into filenames,
we whitelist a smallish set of characters and %hex escape anything outside.

The prefix is omitted in git, which lets one save and restore to
different prefixes (although this is only lightly tested).

Thanks to Tomi Ollila for a huge amount of feedback and patches while
putting this together.
2011-11-12 21:24:25 -04:00
Jameson Graef Rollins
9207f90f52 emacs: update notmuch-crypto-process-mime config variable documentation.
This mentions the fact that prefix arguments are now used to enable to
crypto switch.
2011-11-12 20:50:22 -04:00
Jameson Graef Rollins
07022714eb emacs: Unbind M-RET as display of thread with crypto switch.
Use prefix argument instead to set switch.
2011-11-12 20:42:25 -04:00
Pieter Praet
64febdf71c test: stashing in notmuch-{show,search}
Should provide full test coverage of the stashing feature.

Signed-off-by: Pieter Praet <pieter@praet.org>
2011-11-12 20:32:47 -04:00
Pieter Praet
f9764bfacc emacs: add keybind and function to stash Message-ID without prefix
Add function `notmuch-show-stash-message-id-stripped'
which stashes a Message-ID after ripping off the prefix and quotes,
add bind it to "I" key in `notmuch-show-stash-map'.

Simplifying `notmuch-show-get-message-id' instead might seem better,
but that would require concat'ing in 9 places instead of 1.

Signed-off-by: Pieter Praet <pieter@praet.org>
2011-11-12 20:29:04 -04:00
David Bremner
fd700ec961 NEWS: mention dtach instead of screen in the description of testing changes
This brings NEWS back in line with the actual code.
2011-11-12 10:46:13 -05:00
Dmitry Kurochkin
e972d752c0 emacs: add invisible space after the search widget field in notmuch-hello
It is very convenient when C-e (bound to `widget-end-of-line') ignores
trailing spaces inside the search widget.  But it only does so if a
widget is not followed by a newline (that is why it works in the saved
search widgets).  The patch just adds an invisible space after the
search widget to get the desirable behavior of `widget-end-of-line'.
The extra space is also added to expected results of emacs tests.
2011-11-12 10:34:53 -05:00
Austin Clements
a2d78fba20 emacs: Use a single buffer invisibility spec to fix quadratic search cost.
Buffer redisplay requires traversing the buffer's invisibility spec
for every part of the display that has an 'invisible text or overlay
property.  Previously, the search buffer's invisibility spec list
contained roughly one entry for each search result.  As a result,
redisplay took O(NM) time where N is the number of visible lines and M
is the total number of results.  On a slow computer, this is enough to
make even buffer motion noticeably slow.  Worse, during a search
operation, redisplay is triggered for each search result (even if
there are no visible buffer changes), so search was quadratic
(O(NM^2)) in the number of search results.

This change switches to using a single element buffer invisibility
spec.  To un-hide authors, instead of removing an entry from the
invisibility spec, it simply removes the invisibility overlay from
those authors.

I tested using a query with 6633 results on a 9 year old machine.
Before this patch, Emacs took 70 seconds to fill the search buffer;
toward the end of the search, Emacs consumed 10-20x as much CPU as
notmuch; and moving point in the buffer took about a second.  With
this patch, the same query takes 40 seconds, Emacs consumes ~3x the
CPU of notmuch by the end, and there's no noticeable lag to moving
point.  (There's still some source of non-linearity, because Emacs and
notmuch consume roughly the same amount of CPU early in the search.)
2011-11-12 09:21:03 -05:00