Commit graph

6749 commits

Author SHA1 Message Date
Carl Worth
99cfa27030 Add support for folder-based searching.
A new "folder:" prefix in the query string can now be used to match
the directories in which mail files are stored.

The addition of this feature causes the recently added
search-by-folder tests to now pass.
2011-01-15 15:37:43 -08:00
Carl Worth
600f3761dc test: Add new tests for folder-based searching.
This is a new feature which is not implemente yet, so these tests mostly
fail currently. A subsequent commit will add the feature and cause these
tests to start passing.

These tests verify that we can search for containing folders of mail files
by word or by phrase and that the search terms are updated correctly when
directories are renamed.
2011-01-15 15:37:43 -08:00
Carl Worth
ac1ba43666 Fix misspelling in a comment.
Just a simple change I noticed in passing.
2011-01-15 15:37:43 -08:00
Carl Worth
8a8d0b7395 test/basic: Ignore new files ending in ~
We don't need to complain that temporary editor backups are not added
to the list of tests to be run.
2011-01-15 15:37:43 -08:00
Carl Worth
8bef9ba922 Tighten up a memory allocation.
Using the local talloc context ensures that the memory we are using
here will be freed shortly, (rather than hanging on for a long time
with the notmuch database object).
2011-01-15 15:37:43 -08:00
Carl Worth
36161181df Correct some minor typos in a comment
Nothing too important here. Just some misspellings I noticed while reading
nearby code.
2011-01-15 15:37:43 -08:00
Sebastian Spaeth
3c7a52890c python: Update metainformation to point to new URL and version number
Convert the meta information to point to the notmuchmail.org repository, rather
than the old cnotmuch location. I will delete the "cnotmuch" package
from http://pypi.python.org/pypi/cnotmuch and create a new "notmuch"
package there that contains the current versions.

Also bump the version number to 0.4. I will need to upgrade the API
first before I can release the 0.5 of the bindings, there are still some
methods missing.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2011-01-13 12:35:59 +01:00
Austin Clements
b3caef1f06 Optimize thread search using matched docid sets.
This reduces thread search's 1+2t Xapian queries (where t is the
number of matched threads) to 1+t queries and constructs exactly one
notmuch_message_t for each message instead of 2 to 3.
notmuch_query_search_threads eagerly fetches the docids of all
messages matching the user query instead of lazily constructing
message objects and fetching thread ID's from term lists.
_notmuch_thread_create takes a seed docid and the set of all matched
docids and uses a single Xapian query to expand this docid to its
containing thread, using the matched docid set to determine which
messages in the thread match the user query instead of using a second
Xapian query.

This reduces the amount of time required to load my inbox from 4.523
seconds to 3.025 seconds (1.5X faster).
2010-12-07 16:40:05 -08:00
Carl Worth
e255654232 Update test suite for 7 tests that were recently fixed.
These tests had been broken, but were fixed by the preceding commit,
so update the test suite to print PASS rather than FIXED for these.
2010-12-07 16:35:47 -08:00
Carl Worth
b099fc9ea7 notmuch search: Fix to display authors in date order.
Previously, the authors of the thread were displayed in
reverse-chronological order, which was fairly confusing.
2010-12-07 16:34:52 -08:00
Carl Worth
a4ce6cfbc6 lib: Set thread subject at the same time as setting thread->{oldest,newest}
We really want to change the thread subject at the same time we set
the date, (if the sort order indicates this is necessary). The
previous code for setting the thread subject was sensitive on the
query sort when adding matching messages. An independent bug fix is
about to change that query sort order, so we remove the dependency on
it here.
2010-12-07 16:27:03 -08:00
Carl Worth
da805c4cdb Revert "test: Break on test script (or other) error"
This reverts commit f22a7ec1e2.

Interrupting the test suite due to an actual bug in a test script
would be just fine, but interrupting the run of the entire test suite
at the first test failure is unacceptable.
2010-12-07 16:23:20 -08:00
Carl Worth
b41aab78f2 test: Leave tmp.<testname> for broken tests
Previously, this directory was only preserved for failing tests. But
it's important to be able to easily debug known-broken tests, so
preserve the actual vs. expected output for those as well.
2010-12-07 16:23:20 -08:00
Austin Clements
a18a15326c Make author order tests more strict.
Use varying dates in the test messages to test the order authors are
listed in.  Add tests with repeated author names and unusual date
ordering.  Most of these are broken at the moment, but will be fixed
shortly.

Edited-by: Carl Worth <cworth@cworth.org>: Also update the expected
results for existing emacs tests that currently codify the incorrect
author ordering, (and similarly note them as broken in the current
test suite).
2010-12-07 16:21:35 -08:00
Austin Clements
04d633c285 Fix handling of broken tests.
Make sure to close the subtest for test_expect_equal_failure, just
like in test_expect_equal.
2010-12-07 16:21:23 -08:00
David Edmondson
b9d4af4641 emacs: Remove over-eager regular expressions from notmuch-wash-tidy-citations.
The removed expressions, which were used to ensure that citations were
both preceded and followed by a blank line, were poorly implemented
and caused a regexp stack overflow on messages more than a few
thousand lines long.
2010-12-07 14:10:43 -08:00
David Edmondson
5d05d5434d emacs: Improve the display of truncated authors.
Incremental search does not match strings that span a
visible/invisible boundary. This results in failure to correctly
isearch for authors in `notmuch-search' mode if the name of the author
is split between the visible and invisible components of the authors
string. To avoid this, attempt to truncate the visible component of
the authors string on a boundary between authors, such that the
entirety of an author's name is either visible or invisible.
2010-12-07 13:57:05 -08:00
David Edmondson
cafd46ca13 emacs: Use truenames for Fcc paths.
Appease the test suite by using the true name for the Fcc directory
path, otherwise a value for `notmuch-database-path' which includes
symbolic links causes test suite failures.
2010-12-07 13:47:59 -08:00
David Edmondson
2ff4c4bb2a test: Ignore files created during test failures.
When a test fails, a tmp.<testname> file is left behind. These files
are useful for the person debugging the test failure, but are never
anything we want to commit.

Edited-by: Carl Worth <cworth@cworth.org>: Changed from tmp.emacs to
tmp.* and added explanation in the commit message.
2010-12-07 13:47:44 -08:00
Carl Worth
73198f5c74 notmuch new: Scan directory whenever fs mtime is not equal to db mtime
Previously, we would only scan a directory if the filesystem
modification time was strictly newer than the database modification
time for the directory. This would cause a problem for systems with an
unstable clock, (if a new mail was added to the filesystem, then the
system clock rolled backward, "notmuch new" would not find the message
until the clock caught up and the directory was modified again).

Now, we always scan the directory if the modification time of the
directory is not exactly the same between the filesystem and the
database. This avoids the problem described above even with an
unstable system clock.
2010-12-05 01:40:16 -08:00
Carl Worth
c7b4d15d0a Fix to index the "Re" term present in any subject.
This was a misfeature where notmuch had extra code that just threw
away legitimate information. It was never indexing an initial "Re"
term in a subject. But some users have legitimately wanted to search
for this term.

The original code was written this way merely for strict compatiblity
with the indexing performed by sup, but we're not taking advantage of
that now anyway.
2010-11-23 18:11:04 -08:00
Carl Worth
fb4ded1cc9 notmuch search: Fix missing final newline in "notmuch search --output=tags"
As mentioned in the recent test commits, this also fixes the missing
'[' and ']' characters in the --format=json variant of "notmuch search
--output=tags" as well.
2010-11-23 17:58:00 -08:00
Carl Worth
9e0d00f37e test: Add --format=json testing to the "notmuch search --format" tests.
This testing *does* capture the bug of missing '[' and ']' characters
int "notmuch search --output=tags" case. This is another manifestation
of the same bug causing the missing final newline (as mentioned in the
previous commit).
2010-11-23 17:54:47 -08:00
Carl Worth
e2a550b968 test: Add simple tests for "notmuch search --output=<>"
This code simply wasn't being exercised by the test suite before, so
this will be useful.

Meanwhile, there's currently a bug in "notmuch search --output=tags"
in that it doesn't print a final newline. But the current test suite
isn't able to catch this bug since the $() construct of the shell
doesn't preserve the distinction of whether the final newline is
present or not.
2010-11-23 17:41:25 -08:00
Carl Worth
3560f3300a TODO: Note missing keybindings for next/previous thread in emacs client.
Seems a fairly obvious shortcoming to have survived this long.
2010-11-23 17:25:54 -08:00
James Vasile
7ae149445a compatibility with emacs22
Emacs22 lacks apply-partially and mouse-event-p, so define them if emacs
version is less than 23.  With this change, I was able to begin using
notmuch in emacs22.

The definitions of apply-partially and mouse-event-p are copied from
the emacs 23 distribution, (which is distributed under the GPLv3+ just
as notmuch).
2010-11-16 15:04:22 -08:00
Carl Worth
c4bbbb73f8 TODO: Add several items recently mentioned on the mailing list.
Getting things listed here means that I can safely archive away those
messages without worrying that the ideas will get lost.
2010-11-16 12:03:03 -08:00
Carl Worth
2742663072 test: Don't print a test result for preliminary test setup
This test script does some initial test setup (generating a few
messages), which is all well and good, but we don't need to print that
as a test result---particularly since the test result was effectively
hard-coded to always pass.
2010-11-16 11:29:47 -08:00
Michal Sojka
24d42f0507 test: Fix bugs detected thanks to the previous commit 2010-11-16 11:28:06 -08:00
Michal Sojka
556986511c test: Detect unfinished subsets
When test_begin_subtest is not followed by corresponding test_expect_equal,
the output of the rest of the test script is errornously suppressed. Add
code to detect these bugs in test scripts.
2010-11-16 11:28:06 -08:00
Michal Sojka
f22a7ec1e2 test: Break on test script (or other) error
Break notmuch-test whenever a test script returns non-zero status.
This happens either when some test from the script fails or when there
is an error in the script.

This is especially useful in the latter case since the error may not
appear in the final aggregated results.
2010-11-16 11:28:06 -08:00
Michal Sojka
c8d51e2912 test: Add trailing newline to error messages
The newline was removed from say_color in commit 222926ab to allow
printing test status in the beginning of the line. Error messages are
never followed by other text so we add the newline to error function.
2010-11-16 11:28:06 -08:00
Michal Sojka
ac9dbb47de test: Better handling of stdout and stderr
Git-style tests (test_expect_success etc.) suppress stdout and stderr
unless -v is given. Notmuch-style tests (created by test_begin_subtest
and test_expect_equal) do not have this behavior so implement it the
same.

Additionally, for both test styles, the test-lib.sh is changed so that
the content of suppressed stdout and stderr is shown in case of failed
test.

Finally a test for this functionality is added to basic tests.
2010-11-16 11:28:06 -08:00
David Edmondson
75d616c6ca emacs: Use `view-mode' when examining raw messages.
Explained-by: Carl Worth: This gives convenient keybindings for
navigating the file and for quitting from the buffer, (since, with a
raw message file the user will generally want to just view the
message, not edit it).
2010-11-16 11:16:59 -08:00
Carl Worth
b88e6abccd configure: Add explicit check for glib >= 2.14
For cases where GMime is present, but happy with glib 2.12, for example.
2010-11-16 09:00:34 -08:00
Carl Worth
8df28ec509 configure: Use pkg-config --exists rather than --modversion
With --modversion we were asking for output that we were just throwing
away anyway. The --exists option does just what we want, (no output
and communivating only via return value).

Also, --exists allows for testing versions of the package as well.
2010-11-16 08:51:50 -08:00
Carl Worth
7278383005 lib: Fix missing initialization of status field.
This could have been a problematic bug. Fortuinately "gcc -O2" warns
about it.
2010-11-11 20:54:41 -08:00
Carl Worth
fe8eeaf4a5 lib: Add two missing static qualifiers
The debian packaging is nice enough to notice when we accidentally
leak private symbols to the public interface.
2010-11-11 20:53:21 -08:00
Carl Worth
2a318d3714 debian: Update list of symbols for libnotmuch
This release adds three new functions to the library interface.
2010-11-11 20:51:29 -08:00
Carl Worth
0369c00ed6 debian: Add changelog entry for 0.5
Just pulling things from NEWS as usual.
2010-11-11 20:51:25 -08:00
Carl Worth
1365ebf146 Increment notmuch version to 0.5
The big change here is the support for maildir-flag synchronization.

But there are a number of other thigns as well---library support for
multiple filenames, new ruby bindings, improvements to the vim
interface, and a few tweaks to the emacs interface.
2010-11-11 20:43:56 -08:00
Carl Worth
d33dee5389 Increment library version to 1.3.0
For the addition of three functions:

	notmuch_message_get_filenames
	notmuch_message_tags_to_maildir_flags
	notmuch_message_maildir_flags_to_tags
2010-11-11 20:42:45 -08:00
Carl Worth
a836cd41bf NEWS: Add notes for 0.5 release.
Which is ready to go now.
2010-11-11 20:41:06 -08:00
Carl Worth
a68334258a config: Fix confusing of "tag" and "flag" oin documentation.
It has been very difficult to get all of these right. I would not be
surprised if I've still missed some.
2010-11-11 20:39:22 -08:00
Jameson Rollins
2b433736a5 emacs: add stash thread-id function to notmuch-search mode
This add a "stash-map" for search-mode, just like in show-mode, and
adds one function, bound to "i" to stash the thread-id of the current
selected thread.

Couldn't think of the correct way to stash other thread info, so I
didn't add any other stash functions for now.
2010-11-11 17:28:48 -08:00
Jameson Rollins
128b6259ee emacs: mv notmuch-{show,common}-do-stash
Here we move the notmuch-show/notmuch-show-do-stash function to
notmuch-lib/notmuch-common-do-stash.  Nothing in this function is
notmuch-show mode specific, so this move will make it cleaner to be
used by other modes (such as notmuch-search).
2010-11-11 17:28:32 -08:00
David Edmondson
ea1c2bb5c5 emacs: Improve the definition and use of `notmuch-fcc-dirs'.
Re-work the declaration and definition of `notmuch-fcc-dirs'. The
variable now allows three types of values:

- nil: no Fcc header is added,

- a string: the value of `notmuch-fcc-dirs' is the name of the
  folder to use,

- a list: the folder is chosen based on the From address of the
  current message using a list of regular expressions and
  corresponding folders:

     ((\"Sebastian@SSpaeth.de\" . \"privat\")
      (\"spaetz@sspaeth.de\" . \"OUTBOX.OSS\")
      (\".*\" . \"defaultinbox\"))

  If none of the regular expressions match the From address, no
  Fcc header will be added.
2010-11-11 17:16:28 -08:00
David Edmondson
c471c4eb04 emacs: Use the header line to show the subject of the thread. 2010-11-11 17:06:04 -08:00
David Edmondson
e845f4e27e emacs: Simplify subjects more aggressively.
Remove 're: ' or 'Re: ' from anywhere within a subject line rather
than just at the beginning. This is to accommodate threads where a
mailing list sometimes inserts a subject prefix.

For example, if a thread has the subjects:

    [Orgmode] org-indent, org-inlinetask: patches on github
    Re: [Orgmode] org-indent, org-inlinetask: patches on github
    [Orgmode] Re: org-indent, org-inlinetask: patches on github

the last of these would not have been considered the same and would
therefore have been shown.
2010-11-11 17:04:35 -08:00
David Edmondson
e6d31a5435 emacs: Elide the display of repeated subjects in thread display mode.
Collapsed messages do not show a "Subject:" line if the subject is the
same as that of the previous message.
2010-11-11 17:03:45 -08:00