notmuch
11 years agoNEWS: describe easier FCC configuration
Sebastian Spaeth [Wed, 28 Apr 2010 14:31:00 +0000 (16:31 +0200)]
NEWS: describe easier FCC configuration

I know I should be writing something witty here to make cworth happy,
but I can't think for any verbose justification of this patch beyond
that submitting a NEWS blurb will make cworth happy too. So let's make
him happy.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
11 years agoEasier way to define a fcc directory
Sebastian Spaeth [Wed, 28 Apr 2010 14:30:59 +0000 (16:30 +0200)]
Easier way to define a fcc directory

In the common case that a user only has one FCC (save outgoing mail in
the Mail directory, it is now possible to simply configure a string
such as "Sent" in the notmuch-fcc-dirs variable. More complex options,
depending on a users email address, are possible and described in the
variable customization help text.

The whole function notmuch-fcc-header-setup has been cleaned up a
little while working on that.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
11 years agoemacs: Usability improvements for `notmuch-hello'.
David Edmondson [Wed, 28 Apr 2010 11:18:32 +0000 (12:18 +0100)]
emacs: Usability improvements for `notmuch-hello'.

- If no saved searches exist or are displayed, don't signal an error,
- If no saved searches exist or are displayed, leave the cursor in the
  search bar,
- Minor layout improvements.

11 years agoAdd a test case for the previous commit.
Carl Worth [Thu, 3 Jun 2010 23:43:21 +0000 (16:43 -0700)]
Add a test case for the previous commit.

The commit said it fixed a problem with headers >200 characters
long. But examination of the code suggests that it was a header of
exactly 200 characters long that caused the problem. So we add a test
case for that here.

Before the fix in the previous commit, valgrind would detect many
errors when replying to the message created with this test case. After
that commit, those errors are gone.

11 years agonotmuch: Fix off-by-one errors if a header is >200 characters long.
David Edmondson [Wed, 28 Apr 2010 10:45:41 +0000 (11:45 +0100)]
notmuch: Fix off-by-one errors if a header is >200 characters long.

If a single header is more than 200 characters long a set of 'off by
one' errors cause memory corruption.

When allocating memory with:
     a = malloc (len);
the last usable byte of the memory is 'a + len - 1' rather than 'a +
len'.

Fix the same bug when calculating the current offset should the buffer
used for collecting the output header need to be reallocated.

11 years agoMakefile: Improve the "what to do now" message from "make install"
Carl Worth [Tue, 1 Jun 2010 17:46:52 +0000 (10:46 -0700)]
Makefile: Improve the "what to do now" message from "make install"

This was already telling the user how to run notmuch within emacs, but
not how to just run the notmuch command-line interface, (which, as it
turns out, is a prerequisite for running the emacs interface anyway).

So add a small paragraph here.

11 years agoINSTALL/README: Clean up the description of how to run the emacs interface.
Carl Worth [Tue, 1 Jun 2010 17:44:32 +0000 (10:44 -0700)]
INSTALL/README: Clean up the description of how to run the emacs interface.

The INSTALL file still had old information about the "make
install-emacs" command which no longer exists. README was also giving
pointers on how to develop a real interface, (which is not the right
thing since README should be addressed to users, not coders).

So remove the stale and misplaced information, and instead add a new
"Running notmuch" section to the README describing how to run the
notmuch command-line interface and how to run the emacs interface.

11 years agoINSTALL: Note the advantages of Xapian 1.0.18+ and 1.1.4+
Carl Worth [Tue, 1 Jun 2010 17:42:43 +0000 (10:42 -0700)]
INSTALL: Note the advantages of Xapian 1.0.18+ and 1.1.4+

These versions provide greatly desired performance advantages for
notmuch.

Previously, theses details existed in an old NEWS entry, but most
users are unlikely to find those details there. Put them here where we
mention the Xapian dependency.

11 years agoTODO: Add idea for fixing "notmuch count" to always be exact.
Carl Worth [Tue, 1 Jun 2010 17:40:38 +0000 (10:40 -0700)]
TODO: Add idea for fixing "notmuch count" to always be exact.

I had previously thought Xapian only offered an estimate for the
number of results that might match a search. But Olly let me know
that we can easily ask for Xapian to provide the exact count.

11 years agoTODO: Add a note that 'a'rchive should only affect open messages.
Carl Worth [Mon, 3 May 2010 21:58:58 +0000 (14:58 -0700)]
TODO: Add a note that 'a'rchive should only affect open messages.

To avoid accidentally archiving messages that have not been read.

11 years agopython: have docs reflect current return value behavior
Sebastian Spaeth [Sun, 16 May 2010 22:56:27 +0000 (15:56 -0700)]
python: have docs reflect current return value behavior

Database.find_message() used to be able to reliably indicate whether a
message exists or not (in which case it returns None). However, the
recent API change of the notmuch library means we will return None
even for all Xapian exceptions, which happens e.g. when the current
Database has been modified by another project. Therefore the return
value of None cannot be reliably be used to indicate whether a message
exists or not. Make the docs state that explicitely.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
11 years agoMerge branch '0.3.x' immediately after the 0.3.1 release
Carl Worth [Wed, 28 Apr 2010 00:12:16 +0000 (17:12 -0700)]
Merge branch '0.3.x' immediately after the 0.3.1 release

This brings one bug fix into master that was originally applied
directly to the 0.3.x branch.

11 years agodebian: Instruct git-buildpackage that it's OK to build from this branch attic/0.3.x 0.3.1
Carl Worth [Wed, 28 Apr 2010 00:04:52 +0000 (17:04 -0700)]
debian: Instruct git-buildpackage that it's OK to build from this branch

I wish I had something with better support for a native Debian package
here. I shouldn't ever have to configure any branch---I just want it
to build a package from the current branch. Instead it makes me tell
it (twice!) what the current branch actually is.

11 years agodebian/changelog: Copy in content from the NEWS file.
Carl Worth [Wed, 28 Apr 2010 00:02:17 +0000 (17:02 -0700)]
debian/changelog: Copy in content from the NEWS file.

Someday we'll automate this step.

11 years agoIncrement version to 0.3.1
Carl Worth [Wed, 28 Apr 2010 00:00:34 +0000 (17:00 -0700)]
Increment version to 0.3.1

For our 0.3.1 bug-fix release.

11 years agoNEWS: Reword the latest bug description slightly.
Carl Worth [Tue, 27 Apr 2010 23:56:24 +0000 (16:56 -0700)]
NEWS: Reword the latest bug description slightly.

"Still needs to be handled correctly" could be misread to suggest that
the bug has not actually been fixed yet. So clarify what is actually
meant here, (that the bug is unlikely but we're still motivated to fix
it).

11 years agoUpdate NEWS to reflect the SEGV bugfix
Dirk Hohndel [Tue, 27 Apr 2010 23:29:23 +0000 (16:29 -0700)]
Update NEWS to reflect the SEGV bugfix

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoFix SEGV in _thread_cleanup_author if author ends with ', '
Dirk Hohndel [Tue, 27 Apr 2010 23:29:22 +0000 (16:29 -0700)]
Fix SEGV in _thread_cleanup_author if author ends with ', '

Admittedly, an author name ending in ',' guarantees this is spam, and
indeed this was triggered by a spam email, but that doesn't mean we
shouldn't handle this case correctly.
We now check that there is actually a component of the name (presumably
the first name) after the comma in the author name.

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoMerge branch '0.3.x'
Carl Worth [Tue, 27 Apr 2010 18:40:26 +0000 (11:40 -0700)]
Merge branch '0.3.x'

This doesn't pull in any code, (everything in 0.3.x was originally
cherry-picked from master anyway). But the merge does give us a
correct NEWS file showing which fixes are included in 0.3.1 and which
features have been commited "since" then, (topologically, not
chronologically).

11 years agoNEWS: Add notes for the 0.3.1 release
Carl Worth [Tue, 27 Apr 2010 18:12:25 +0000 (11:12 -0700)]
NEWS: Add notes for the 0.3.1 release

This is going to be a bug-fix only release to fix the handful of issue
noticed immediately after 0.3 was pushed out.

11 years agoWrap the compat header in extern "C" { } when compiling C++ sources
Tomas Carnecky [Tue, 27 Apr 2010 17:27:17 +0000 (19:27 +0200)]
Wrap the compat header in extern "C" { } when compiling C++ sources

This fixes a build error on OpenSolaris where the final liking of
notmuch fails because the linker can't find strcasestr() referenced
from thread.cc.
(cherry picked from commit aab54b4ce752b16725399d1543602ef3f7736c91)

11 years agoemacs: Remove conditional from notmuch-fcc-initialization.
Jesse Rosenthal [Tue, 27 Apr 2010 16:33:57 +0000 (12:33 -0400)]
emacs: Remove conditional from notmuch-fcc-initialization.

The fcc code would only initialize if notmuch-fcc-dirs was set. This was
a problem if you reset the variable, or added the variable later during
initialization. Now we always add the fcc hook, but it doesn't do
anything unless notmuch-fcc-dirs are set.
(cherry picked from commit 80a90787163690d2d87571327ba504a470798c60)

11 years agoemacs: Fix `notmuch-hello-insert-tags' to correctly draw the tags.
David Edmondson [Tue, 27 Apr 2010 10:04:37 +0000 (11:04 +0100)]
emacs: Fix `notmuch-hello-insert-tags' to correctly draw the tags.

The fix in 1e1871154341cdd3413fe3f32e3aae477826d815 broke end-of-row
wrapping when drawing the table of tags/saved searches. Fix that and
improve the readability of the matrix reflection code to hasten future
debugging.
(cherry picked from commit 08561d8ae133704fcf15edbdd47f15474dc030d5)

11 years agoemacs: If 'all tags' is not shown, don't use it when calculating widths.
David Edmondson [Tue, 27 Apr 2010 10:04:36 +0000 (11:04 +0100)]
emacs: If 'all tags' is not shown, don't use it when calculating widths.

If the 'all tags' section of the hello buffer will not be shown, don't
consider those tags when determining the number of saved searches that
can be displayed on a single line.
(cherry picked from commit 18d41192d2cf0c71045c2f6420eb2311553f58b4)

11 years agoRename already used counter var i
Aneesh Kumar K.V [Tue, 27 Apr 2010 12:57:25 +0000 (14:57 +0200)]
Rename already used counter var i

i is already used in a for loop at this point, so using i here again
broke notmuch-reply (it would just hang). Use j instead of i here.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
(cherry picked from commit 107f58d517e733c53e9d669457db34622337931d)

11 years agotest: Exercise magic-from guessing with a single configured address
Carl Worth [Tue, 27 Apr 2010 17:13:04 +0000 (10:13 -0700)]
test: Exercise magic-from guessing with a single configured address

Immediately after releasing 0.3 we learned that the magic-from-guessing
code could hang in an infinite loop in some cases. The bug occurred
only when the user had configured only a primary email addresss and no
other email addresses.

The test suite wasn't previously covering this case, so address this
shortcoming.
(cherry picked from commit e0f561049809f2b29068d59b38fce3213131bbd6)

11 years agoNEWS: Note build fix for OpenSolaris (at least).
Carl Worth [Tue, 27 Apr 2010 17:41:57 +0000 (10:41 -0700)]
NEWS: Note build fix for OpenSolaris (at least).

This hit the list just as I sent out my "final call for 0.3.1 testing"
and is just the kind of thing that's nice to get into a maintenance
release.

11 years agoWrap the compat header in extern "C" { } when compiling C++ sources
Tomas Carnecky [Tue, 27 Apr 2010 17:27:17 +0000 (19:27 +0200)]
Wrap the compat header in extern "C" { } when compiling C++ sources

This fixes a build error on OpenSolaris where the final liking of
notmuch fails because the linker can't find strcasestr() referenced
from thread.cc.

11 years agoNEWS: Add notes for the 0.3.1 release
Carl Worth [Tue, 27 Apr 2010 17:31:37 +0000 (10:31 -0700)]
NEWS: Add notes for the 0.3.1 release

I think this is ready to go now, but I'm going to impose a mandatory
waiting period this time to catch any last-minute issues.

11 years agoAdd notmuch-message.el to emacs/Makefile.local
Jesse Rosenthal [Tue, 27 Apr 2010 16:44:45 +0000 (12:44 -0400)]
Add notmuch-message.el to emacs/Makefile.local

When notmuch-message.el was added to the emacs directory, I neglected to
add it to the makefile as one of the emacs_sources. This patch adds it.

11 years agotest: Exercise magic-from guessing with a single configured address
Carl Worth [Tue, 27 Apr 2010 17:13:04 +0000 (10:13 -0700)]
test: Exercise magic-from guessing with a single configured address

Immediately after releasing 0.3 we learned that the magic-from-guessing
code could hang in an infinite loop in some cases. The bug occurred
only when the user had configured only a primary email addresss and no
other email addresses.

The test suite wasn't previously covering this case, so address this
shortcoming.

11 years agoemacs: Remove conditional from notmuch-fcc-initialization.
Jesse Rosenthal [Tue, 27 Apr 2010 16:33:57 +0000 (12:33 -0400)]
emacs: Remove conditional from notmuch-fcc-initialization.

The fcc code would only initialize if notmuch-fcc-dirs was set. This was
a problem if you reset the variable, or added the variable later during
initialization. Now we always add the fcc hook, but it doesn't do
anything unless notmuch-fcc-dirs are set.

11 years agoSubject: [PATCH] NEWS: add mention of auto-tagging.
Jesse Rosenthal [Tue, 27 Apr 2010 16:11:16 +0000 (12:11 -0400)]
Subject: [PATCH] NEWS: add mention of auto-tagging.

Describe new auto-tagging functionality in the NEWS.

11 years agoemacs: require notmuch-message.el from notmuch.el
Jesse Rosenthal [Tue, 27 Apr 2010 16:03:10 +0000 (12:03 -0400)]
emacs: require notmuch-message.el from notmuch.el

Add a (require 'notmuch-message) to notmuch.el. This is for functions that
specifically target message mode (and, in the future, notmuch-message
mode).

11 years agoemacs: Add auto-tagging for replied messages.
Jesse Rosenthal [Tue, 27 Apr 2010 15:53:30 +0000 (11:53 -0400)]
emacs: Add auto-tagging for replied messages.

Add `notmuch-message-mark-replied', a function for automatically tagging
replied messages with user-defined tags. The tags (which can be either
added or removed) can be customized with the customization variable
`notmuch-message-replied-tags'. This is a simple list of strings. Any
string prefaced with a "-" will be removed; any string prefaced with a "+"
(or neither "+" nor "-") will be added.

This adds a new file notmuch-message.el, for functions which target
message mode (and in the future, notmuch-message mode). Based on some
conversation, notmuch-message.el will probably end up subsuming
notmuch-mua.el, but until we figure out exactly how we want to do that,
they will remain separate files.

Edited-by: Carl Worth <cworth@cworth.org>: Remove trailing whitespace
and add newline at end of file.

11 years agoemacs: Add missing parenthesis that was breaking the build.
Carl Worth [Tue, 27 Apr 2010 15:42:11 +0000 (08:42 -0700)]
emacs: Add missing parenthesis that was breaking the build.

Someday I'll stop pushing patches without at least compile-testing them.
*sigh*

11 years agoemacs/notmuch-wash.el: Add `notmuch-wash-convert-inline-patch-to-part'.
David Edmondson [Tue, 27 Apr 2010 10:20:58 +0000 (11:20 +0100)]
emacs/notmuch-wash.el: Add `notmuch-wash-convert-inline-patch-to-part'.

Detect inline patches and convert them to fake attachments, in order
that `diff-mode' highlighting can be applied to the patch. This can be
enabled by customising `notmuch-show-insert-text/plain-hook'.

11 years agoemacs: Fix `notmuch-hello-insert-tags' to correctly draw the tags.
David Edmondson [Tue, 27 Apr 2010 10:04:37 +0000 (11:04 +0100)]
emacs: Fix `notmuch-hello-insert-tags' to correctly draw the tags.

The fix in 1e1871154341cdd3413fe3f32e3aae477826d815 broke end-of-row
wrapping when drawing the table of tags/saved searches. Fix that and
improve the readability of the matrix reflection code to hasten future
debugging.

11 years agoemacs: If 'all tags' is not shown, don't use it when calculating widths.
David Edmondson [Tue, 27 Apr 2010 10:04:36 +0000 (11:04 +0100)]
emacs: If 'all tags' is not shown, don't use it when calculating widths.

If the 'all tags' section of the hello buffer will not be shown, don't
consider those tags when determining the number of saved searches that
can be displayed on a single line.

11 years agoRename already used counter var i
Aneesh Kumar K.V [Tue, 27 Apr 2010 12:57:25 +0000 (14:57 +0200)]
Rename already used counter var i

i is already used in a for loop at this point, so using i here again
broke notmuch-reply (it would just hang). Use j instead of i here.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
11 years agodebian/changelog: Fix email address to avoid lintian complaint. 0.3
Carl Worth [Tue, 27 Apr 2010 09:10:17 +0000 (02:10 -0700)]
debian/changelog: Fix email address to avoid lintian complaint.

Otherwise lintian thinks this is an NMU. I definitely need to figure
out how to get the emacs mode for debian/changelog to write the
correct address into this file in the first place.

11 years agodebian/changelog: Add notes for the 0.3 release
Carl Worth [Tue, 27 Apr 2010 09:07:45 +0000 (02:07 -0700)]
debian/changelog: Add notes for the 0.3 release

Again, just taking the one-line entries from the NEWS entry for 0.3.

11 years agoIncrement package version to 0.3.
Carl Worth [Tue, 27 Apr 2010 09:03:26 +0000 (02:03 -0700)]
Increment package version to 0.3.

For the 0.3 release, of course.

11 years agolib: Increment library version to 1.1.0
Carl Worth [Tue, 27 Apr 2010 09:02:14 +0000 (02:02 -0700)]
lib: Increment library version to 1.1.0

For the addition of the new NOTMUCH_SORT_UNSORTED value.

11 years agoemacs: Fix column alignment in `notmuch-hello-insert-tags'
David Edmondson [Tue, 27 Apr 2010 07:00:44 +0000 (08:00 +0100)]
emacs: Fix column alignment in `notmuch-hello-insert-tags'

Re-working the saved search/tag insertion to buttonize only the name
of the saved search/tag plus one space broke the calculation of how
much filler is required to complete the column, resulting in lines
wider than the window.

11 years agolib: Re-implement moving of thread authors.
Carl Worth [Tue, 27 Apr 2010 08:48:03 +0000 (01:48 -0700)]
lib: Re-implement moving of thread authors.

Just before releasing 0.3 we received reports of crashes that were
bisected to the commit adding thread-author moving. Sure enough,
valgrind pointed to buffer overruns in _thread_move_matched_author.

Rather than trying to make sense of all the by strncpy, strchr, +1,
and +2 of that code, I reimplemented thread-author ordering with a
pair of hash tables and an array.

Valgrind is at least happy now on the test cases it was complaining
about previously.

11 years agoNEWS: Fix spelling errors.
Carl Worth [Tue, 27 Apr 2010 07:55:06 +0000 (00:55 -0700)]
NEWS: Fix spelling errors.

I ran the spell-checker prior to the last commit, but apparently I
hadn't actually saved the buffer.

11 years agoNEWS: Add notes for the 0.3 release.
Carl Worth [Tue, 27 Apr 2010 07:47:14 +0000 (00:47 -0700)]
NEWS: Add notes for the 0.3 release.

Summarizing all the major new features and fixes found in the git log
since 0.2. A rather nice list, really.

11 years agoemacs: Use message-signature-separator rather than hard-coded string.
Carl Worth [Tue, 27 Apr 2010 06:12:58 +0000 (23:12 -0700)]
emacs: Use message-signature-separator rather than hard-coded string.

It's possible that the user has instructed message-mode to use some
other separator. If so, then that's what we should look for when
looking for the signature.

Thanks to David Edmondson <dme@dme.org> for pointing this out.

11 years agoemacs: Delete some trailing whitespace.
Carl Worth [Tue, 27 Apr 2010 06:09:08 +0000 (23:09 -0700)]
emacs: Delete some trailing whitespace.

That managed to sneak in with some recent improvements to the Fcc code.

11 years agoemacs: Ensure that message-directory for Fcc has a trailing slash
Jesse Rosenthal [Tue, 27 Apr 2010 03:08:34 +0000 (23:08 -0400)]
emacs: Ensure that message-directory for Fcc has a trailing slash

Use `file-name-as-directory' to ensure that message-directory has a
trailing slash so it can be combined with the notmuch-fcc-dirs
correctly.

11 years agoemacs: add prompt to create maildir for fcc if it does not exist.
Jesse Rosenthal [Tue, 27 Apr 2010 01:33:13 +0000 (21:33 -0400)]
emacs: add prompt to create maildir for fcc if it does not exist.

If the user specifies a maildir that does not exist, prompt the user to
see whether a maildir should be created. This will fail, with the
relevant explanation, if the location is not writable, or if a file
already exists in that location. If the location is a dir, but not a
maildir, this will add /tmp/cur/new to it.

11 years agoemacs: fcc should fail at the right time if it doesn't point to a maildir
Jesse Rosenthal [Tue, 27 Apr 2010 00:29:27 +0000 (20:29 -0400)]
emacs: fcc should fail at the right time if it doesn't point to a maildir

Throw an error after the maildir is generated but before the message
is sent. This change allows the user to edit the maildir if it fails,
so that it will point to a correct place.

Note that this changes the previous behavior which always overwrote
the existing Fcc line. Now, an Fcc line is only auto-generated if
there isn't one already there.

The ideal change would be to prompt to create a maildir. This should
enable a place for doing that in a future patch.

11 years agoemacs: Tweak search-buffer naming to search list in reverse order
Carl Worth [Tue, 27 Apr 2010 06:00:20 +0000 (23:00 -0700)]
emacs: Tweak search-buffer naming to search list in reverse order

The complete-string matching of commit
f2ebe3ac446afda9ced6507dc391865464ccdcaa
defeats the substitution of partial search
strings when the user manually types a
long search string that just happens to
partially match a saved search.

For example, typing "tag:inbox and not tag:foo"
should result in "[inbox] and not tag:foo" but
this has been broken since that commit.

As a compromise between this feature and what the
commit was trying to achieve, we now reverse the
saved-searches list before looking for a match.
This happens to work for me, but won't necessarily
work in general.

What we really want is the longest match, but rassoc-if
just gives us the first match. All of this is just about
creating slightly nice search-buffer names. So if anyone
really cares about making the names *even* nicer, then
they could improve this further.

11 years agoemacs: Rename search buffers with "saved-search" not "folder"
Carl Worth [Tue, 27 Apr 2010 05:58:46 +0000 (22:58 -0700)]
emacs: Rename search buffers with "saved-search" not "folder"

Since we recently renamed everything from notmuch-folders to
notmuch-saved-searches, fix up the generated names in the search
buffers to match.

11 years agoemacs: Match entire saved-search when computing search-view buffer name
Carl Worth [Tue, 27 Apr 2010 05:49:45 +0000 (22:49 -0700)]
emacs: Match entire saved-search when computing search-view buffer name

I happen to have a lot of saved searches that are variants of the
tag:inbox search, (such as "tag:inbox and tag:notmuch"). The logic for
these was always matching inbox first, resulting in "[ inbox ] and
tag:notmuch" rather than "notmuch" as desired.

Anchor the regular expression on both ends to make it look harder for
the better match.

11 years agoemacs: Rip out all of the notmuch-folder code.
Carl Worth [Tue, 27 Apr 2010 05:42:07 +0000 (22:42 -0700)]
emacs: Rip out all of the notmuch-folder code.

We are asserting that the new notmuch-hello implementation, (available
by just calling `notmuch') is just as easy to use as the old
notmuch-folder. So let's remove what's now a largely redundant
implementation.

To make this transition easier, we are still supporting the
notmuch-folders variable name, and we still provide `notmuch-folder'
as an alias which can be invoked to get the new notmuch-hello
functionality.

11 years agoemacs: Fix notmuch-hello to use its own function for counting search results.
Carl Worth [Tue, 27 Apr 2010 05:40:31 +0000 (22:40 -0700)]
emacs: Fix notmuch-hello to use its own function for counting search results.

Previously, this was calling into a notmuch-folder-count
function. Only, everything related to notmuch-folder is about to go
away, so lets have notmuch-hello define its own function
(notmuch-saved-search-count) for this purpose.

11 years agoemacs: Add a notmuch-saved-searches function.
Carl Worth [Tue, 27 Apr 2010 05:37:11 +0000 (22:37 -0700)]
emacs: Add a notmuch-saved-searches function.

We use this function to abstract away the common 3-step process for
looking for a value for the saved-searches variable:

1. Look at the notmuch-saved-searches variable itself
2. Look at the notmuch-folders vaiable
3. Use a default value

We were already using this logic (open-coded) in notmuch-hello, but
notmuch.el was accessing notmuch-folders directly for the clever name
selection of search buffers.

11 years agoemacs: Move declare-function from notmuch-lib.el to notmuch-hello.el.
Carl Worth [Tue, 27 Apr 2010 05:33:09 +0000 (22:33 -0700)]
emacs: Move declare-function from notmuch-lib.el to notmuch-hello.el.

Apparently the declare-function macro doesn't work in a required file
as I might like it too. Put it where it needs to go to avoid the
warning.

11 years agonotmuch-hello: Add a 'G' keybinding.
Carl Worth [Tue, 27 Apr 2010 05:05:47 +0000 (22:05 -0700)]
notmuch-hello: Add a 'G' keybinding.

Just like the G keybinding we've had in notmuch-folder-mode and
notmuch-search-mode, (to call `notmuch-poll' to 'G'et new mail).

11 years agonotmuch-hello: Make this work with a notmuch-folders variable set in ~/.emacs
Carl Worth [Tue, 27 Apr 2010 04:55:51 +0000 (21:55 -0700)]
notmuch-hello: Make this work with a notmuch-folders variable set in ~/.emacs

I'm planning to rip out the notmuch-folder-mode completely. So as a
token kindness to existing users of notmuch-folders, I'm at least
making notmuch-hello support the notmuch-folders variable name as an
alternate for the new name of notmuch-saved-searches.

11 years agoemacs: Remove "hello" from all variables exported through customize.
Carl Worth [Tue, 27 Apr 2010 04:45:19 +0000 (21:45 -0700)]
emacs: Remove "hello" from all variables exported through customize.

We've recently changed things so that the notmuch-hello screen is the
default view one gets by executing `notmuch'. So hide the "hello" name
from everything exposed in the customize interface, (leaving "hello"
as just an internal name within the implementation).

11 years agonotmuch-hello: Fix a sign error when computing number of padding spaces.
Carl Worth [Tue, 27 Apr 2010 03:51:31 +0000 (20:51 -0700)]
notmuch-hello: Fix a sign error when computing number of padding spaces.

After the previous commit, toggling the visibility of tags could
result in notmuch-hello aborting with:

Wrong type argument: wholenump, -1

At least, the error only occurred for me when making tags visible. But
that may be because my longest tag name is longer than my longest
saved-search name.

11 years agonotmuch-hello: Fix ability to isearch to a saved-search and press RET
Carl Worth [Tue, 27 Apr 2010 03:15:45 +0000 (20:15 -0700)]
notmuch-hello: Fix ability to isearch to a saved-search and press RET

After isearching for an entire saved-search name, the point will be
immediately after that name in the buffer. Before commit
c9ba61bebef7733c4bf12adf94222e57621fdcf6 the space right after the
name was part of the widget so the user could press RET right after
the isearch to activate the saved search.

The above commit broke that functionality. Restore it by including a
single space after each name as part of the widget.

11 years agoemacs: notmuch-hello: Make viewing of all tags conditional.
Carl Worth [Tue, 27 Apr 2010 03:06:50 +0000 (20:06 -0700)]
emacs: notmuch-hello: Make viewing of all tags conditional.

And off by default. There's a notmuch-hello-show-tags option in
customize to toggle the default setting, as well as buttons to
persistently toggle the visibility for the current session.

I have enough tags in my database that it's quite a bit faster for
notmuch-hello to come up without showing the tags.

11 years agonotmuch-hello: Preserve current position when invoking notmuch-hello
Carl Worth [Tue, 27 Apr 2010 02:43:21 +0000 (19:43 -0700)]
notmuch-hello: Preserve current position when invoking notmuch-hello

Previously, we preserved the current position only when returning to
the notmuch-hello buffer or when refreshing it. Fix to also preserve
the position when directly invoking notmuch-hello, (such as from a
global keybinding).

11 years agoemacs: notmuch-hello: Move to first saved search item.
Carl Worth [Tue, 27 Apr 2010 01:40:04 +0000 (18:40 -0700)]
emacs: notmuch-hello: Move to first saved search item.

This give us a useful active widget by default, ("inbox"), and
otherwise gives the first saved search in the user's customized
list. Not having point on the search bar means that the various
keybindings are all available.

11 years agoemacs: Fix 's' keybinding to go to search bar in notmuch-hello.
Carl Worth [Tue, 27 Apr 2010 01:52:49 +0000 (18:52 -0700)]
emacs: Fix 's' keybinding to go to search bar in notmuch-hello.

This command was previously written under the fragile assumption that
the search bar was always the third widget. That's no longer true with
the saved searches now appearing before the search bar, so we save the
position of the search bar and go directly to it now.

11 years agoemacs: Move saved searches before search bar in notmuch-hello.
Carl Worth [Tue, 27 Apr 2010 01:22:24 +0000 (18:22 -0700)]
emacs: Move saved searches before search bar in notmuch-hello.

Once users start using saved searches regularly, it's expected that
these will become the primary access points to mail. So give them a
priority position in the buffer.

11 years agoemacs: Remove the notmuch-hellow-jump-to-search variable.
Carl Worth [Tue, 27 Apr 2010 01:17:06 +0000 (18:17 -0700)]
emacs: Remove the notmuch-hellow-jump-to-search variable.

Instead, make notmuch-hello unconditionally jump to the first widget
in the buffer. By default this will be the search bar anyway.

11 years agoemacs: Take advantage of position-remembering when returning to notmuch-hello
Carl Worth [Tue, 27 Apr 2010 01:00:37 +0000 (18:00 -0700)]
emacs: Take advantage of position-remembering when returning to notmuch-hello

When we go into a search, and then later quit and return to the
notmuch-hello buffer, we want the point to remain in the same position
it was in when we left. So we have to call the position-remembering
notmuch-hello-update rather than notmuch-hello from the continuation.

11 years agoemacs: Make update of notmuch-hello leave point on the same widget.
Carl Worth [Tue, 27 Apr 2010 00:59:01 +0000 (17:59 -0700)]
emacs: Make update of notmuch-hello leave point on the same widget.

Before refreshing, we check which widget we are currently on, (or look
for the next widget), and then we watch for that same widget to go by
when constructing the buffer contents. Finally, we jump to the
position we saw when the widget went by.

11 years agoemacs: notmuch-hello: Don't include extra spaces in widget values.
Carl Worth [Tue, 27 Apr 2010 00:55:55 +0000 (17:55 -0700)]
emacs: notmuch-hello: Don't include extra spaces in widget values.

Previously, trailing spaces after each saved-search name were included
as part of the widget. This is going to be problematic for a future
change that will extract the widget's value and compare it to the
configured names of saved searches.

Instead, just include the name itself in the widget, and then insert
the spaces for separation afterwards.

11 years agoemacs: Disable automatic jump to search bar for notmuch-hello.
Carl Worth [Tue, 27 Apr 2010 00:51:27 +0000 (17:51 -0700)]
emacs: Disable automatic jump to search bar for notmuch-hello.

We're about to get support for maintaining point on the current
saved-search, so we don't want this jump-to-search defeating that.

11 years agoPut signatures at the very end of the message
Dirk Hohndel [Mon, 26 Apr 2010 17:41:49 +0000 (10:41 -0700)]
Put signatures at the very end of the message

The existing code inserts the signature before inserting the message
body (which it puts at the very end of the buffer - therefore AFTER
the signature). This little snippet makes us search backwards and
insert the message body before a signature, if it exists.

This also fixes a small indentation issue in David's code.

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoAdd NEWS updates for my last batch of patches
Dirk Hohndel [Fri, 23 Apr 2010 17:42:31 +0000 (10:42 -0700)]
Add NEWS updates for my last batch of patches

in the future I'll include those with my patches. Hope it's ok to do
this as one single patch for this series.

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoTODO: Add some ideas for notmuch-hello cleanups.
Carl Worth [Mon, 26 Apr 2010 22:14:59 +0000 (15:14 -0700)]
TODO: Add some ideas for notmuch-hello cleanups.

I discussed these on the list while wrapping up the 0.3 release. They
may not make it in for that, but I don't want to forget them at least.

11 years agoemacs: Fix to generate error if fcc directory is not a maildir
Carl Worth [Mon, 26 Apr 2010 21:56:46 +0000 (14:56 -0700)]
emacs: Fix to generate error if fcc directory is not a maildir

Previously this was just a message that was almost impossible for the
user to see. Now, the user gets to see the error message, and is
presented with a buffer that actually contains the Fcc header of
interest.

11 years agoRearchitect From: header guessing code for replies
Dirk Hohndel [Mon, 26 Apr 2010 19:58:35 +0000 (12:58 -0700)]
Rearchitect From: header guessing code for replies

We want to be able to correctly guess the best From: header to use when
replying to emails. This is what we are looking at now:
 1 is one of the users' mail addresses in the To: or Cc: header
 2 check for an Envelope-to: header
 3 check for an X-Original-To: header
 4 check for a (for <email@add.res>) clause in Received: headers
 5 check for the domain part of known email addresses in the
      'by' part of Received headers
 6 fall back to the primary email address

This patch changes the algorithm for steps 2-5 of this process. Prior to
this patch we had a first attempt to implement only step 5 - but this
broke in many email setups where mail delivery to the local machine added
additional Received: lines.
Steps 2-4 are new, step 5 now analyzes the concatenated Received: header
(this was in the previous patch) to do this analysis.

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoMake Received: header special in notmuch_message_file_get_header
Dirk Hohndel [Mon, 26 Apr 2010 19:58:34 +0000 (12:58 -0700)]
Make Received: header special in notmuch_message_file_get_header

With this patch the Received: header becomes special in the way
we treat headers - this is the only header for which we concatenate
all the instances we find (instead of just returning the first one).

This will be used in the From guessing code for replies as we need to
be able to walk ALL of the Received: headers in a message to have a
good chance to guess which mailbox this email was delivered to.

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoIntegrate notmuch-fcc mechansim
Sebastian Spaeth [Mon, 26 Apr 2010 08:23:18 +0000 (10:23 +0200)]
Integrate notmuch-fcc mechansim

I have gone wild and added a defcustom "notmuch-fcc-dirs".
Depending on the value of that variable we will not do any
maildir fcc at all (nil, the default), or it is of the format
(("defaultsentbox")
 ("full name <email@address>" . "Work/sentbox")
 ("full name2 <email2@address2>" . "Work2/sentbox"))

The outbox name will be concatenated with the message mode
variable "message-directory" which is "~/Mail/" by default.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
11 years agonotmuch-maildir-fcc: elisp syntax fixes
Sebastian Spaeth [Mon, 26 Apr 2010 08:23:17 +0000 (10:23 +0200)]
notmuch-maildir-fcc: elisp syntax fixes

1)use insert-buffer-substring

Rather than the insert-buffer. Emacs complains that it is for interactive use
and not for use within elisp. So use insert-buffer-substring which does the
same thing when not handed any 'begin' 'end' parameters.

2)replace caddr with (car (cdr (cdr)))

The former requires 'cl to be loaded and during make install emacs complained
about not knowing it.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
11 years agoIntegrate notmuch-maildir-fcc into notmuch
Sebastian Spaeth [Mon, 26 Apr 2010 08:23:16 +0000 (10:23 +0200)]
Integrate notmuch-maildir-fcc into notmuch

Require notmuch-maildir-fcc and also install it.
Rename all jkr/* functions to notmuch-maildir-fcc-*

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
11 years agoAdd elisp file for FCC to maildir solution
Jesse Rosenthal [Mon, 26 Apr 2010 08:23:15 +0000 (10:23 +0200)]
Add elisp file for FCC to maildir solution

File grabbed from http://jkr.acm.jhu.edu/jkr-maildir.el
but not integrated yet.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
11 years agoSimple attempt to display author names in a friendlier way
Dirk Hohndel [Sat, 24 Apr 2010 18:20:57 +0000 (11:20 -0700)]
Simple attempt to display author names in a friendlier way

This patch only addresses the typical Outlook/Exchange case
where we have "Last, First" <first.last@company.com> or
"Last, First MI" <first.mi.last@company.com>.

In the future we should be more fexible as to the formats
we recognize, but for now we address this one as it is the
Exchange default setting and therefore the most common one.

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoAdd tests for author name reordering in search results
Dirk Hohndel [Sat, 24 Apr 2010 18:20:56 +0000 (11:20 -0700)]
Add tests for author name reordering in search results

This should be required for all patches :-)

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoAdd NEWS section for author reordering
Dirk Hohndel [Sat, 24 Apr 2010 18:20:55 +0000 (11:20 -0700)]
Add NEWS section for author reordering

This should be required in all patches

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoReorder displayed names of thread authors
Dirk Hohndel [Sat, 24 Apr 2010 18:20:54 +0000 (11:20 -0700)]
Reorder displayed names of thread authors

When displaying threads as result of a search it makes sense to list those
authors first who match the search. The matching authors are separated from the
non-matching ones with a '|' instead of a ','

Imagine the default "+inbox" query. Those mails in the thread that
match the query are actually "new" (whatever that means). And some
people seem to think that it would be much better to see those author
names first. For example, imagine a long and drawn out thread that once
was started by me; you have long read the older part of the thread and
removed the inbox tag. Whenever a new email comes in on this thread,
prior to this patch the author column in the search display will first show
"Dirk Hohndel" - I think it should first show the actual author(s) of the new
mail(s).

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoAdd authors member to message
Dirk Hohndel [Sat, 24 Apr 2010 18:20:53 +0000 (11:20 -0700)]
Add authors member to message

message->authors contains the author's name (as we want to print it)
get / set methods are declared in notmuch-private.h

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
11 years agoemacs: Tell the user how many addresses matched when completing
David Edmondson [Mon, 26 Apr 2010 16:25:21 +0000 (17:25 +0100)]
emacs: Tell the user how many addresses matched when completing

When completing an address, tell the user how many addresses in the
database matched the query.

Edited-by: Carl Worth <cworth@cworth.org>: Removed a stray numeric
literal that was causing a compiler warning.

11 years agoemacs: Remove duplicate declaration of `notmuch-folders'
David Edmondson [Mon, 26 Apr 2010 15:09:43 +0000 (16:09 +0100)]
emacs: Remove duplicate declaration of `notmuch-folders'

Reviewed-by: Carl Worth <cworth@cworth.org>
This variable was moved from notmuch.el to notmuch-lib.el some time
ago, but the declaration in notmuch.el was left around. Clean that up.

11 years agoemacs: `notmuch' should display the `notmuch-hello' interface
David Edmondson [Mon, 26 Apr 2010 15:07:04 +0000 (16:07 +0100)]
emacs: `notmuch' should display the `notmuch-hello' interface

Reviewed-by: Carl Worth <cworth@cworth.org>
The notmuch-hello functionality is now sufficiently useful that we
want to make it the default view of notmuch for new users. This also
effectively hides the "hello" name from the user, so we'll be free to
change that in the implementation if necessary.

This change also shuffles the requires between notmuch.el and
notmuch-hello.el. This fixes things so that our documented (require
'notmuch) is sufficient for getting the notmuch-hello functionality.

Finally, the shuffling caused the notmuch-search-oldest-first variable
from one file to the other. While doing that, give this variable the
defcustom treatment for easier customization.

11 years agoemacs: Fix `notmuch-show-rewind' in the presence of invisible text
David Edmondson [Mon, 26 Apr 2010 14:53:52 +0000 (15:53 +0100)]
emacs: Fix `notmuch-show-rewind' in the presence of invisible text

When determining whether or not to re-align the head of the current
message with the top of the window, use `count-screen-lines' rather
than `count-lines' to allow for invisible text in the preceding
message. When comparing that number of lines against
`next-screen-context-lines', realign if the number of lines of the
previous message visible is 'smaller than or equal to' rather than
just 'smaller than' to improve usability.

11 years agoemacs: More DWIM when editing messages
David Edmondson [Mon, 26 Apr 2010 14:01:25 +0000 (15:01 +0100)]
emacs: More DWIM when editing messages

For composing new messages and forwarding, leave the cursor on the
'To:' field. For replies, leave the cursor at the start of the
body. In all cases, mark the buffer as not modified so that the user
is not prompted if she decides to immediately kill the buffer.

11 years agoemacs: Add more functions to clean up text/plain parts
David Edmondson [Mon, 26 Apr 2010 13:45:30 +0000 (14:45 +0100)]
emacs: Add more functions to clean up text/plain parts

Add:
- notmuch-wash-wrap-long-lines: Wrap lines longer than the width of
  the current window whilst maintaining any citation prefix.
- notmuch-wash-tidy-citations: Tidy up citations by:
  - compress repeated otherwise blank citation lines,
  - remove otherwise blank citation lines at the head and tail of a
    citation,
- notmuch-wash-elide-blank-lines: Compress repeated blank lines and
  remove leading and trailing blank lines.

None of these is enabled by default - add them to
`notmuch-show-insert-text/plain-hook' to use.

Reviewed-by: Carl Worth <cworth@cworth.org>: I previously committed a
stale version of this patch.

11 years agoRevert "emacs: Add more functions to clean up text/plain parts"
Carl Worth [Mon, 26 Apr 2010 17:05:29 +0000 (10:05 -0700)]
Revert "emacs: Add more functions to clean up text/plain parts"

This reverts commit 97570954cb583cacac35b0235cbe449a07630ae3.

11 years agoemacs: Fix `notmuch-search-insert-field'
David Edmondson [Mon, 26 Apr 2010 12:16:07 +0000 (13:16 +0100)]
emacs: Fix `notmuch-search-insert-field'

Compare the formatted version of the authors with the formatted sample
string rather than the un-formatted authors with the formatted sample
string.

11 years agoemacs: Hide the "User-Agent:" when composing messages
David Edmondson [Mon, 26 Apr 2010 11:50:59 +0000 (12:50 +0100)]
emacs: Hide the "User-Agent:" when composing messages

Add a list of headers to those hidden by `message-mode' when
composing. By default the list includes only "User-Agent:".

11 years agoemacs: Automatically load "notmuch-address"
David Edmondson [Mon, 26 Apr 2010 10:48:33 +0000 (11:48 +0100)]
emacs: Automatically load "notmuch-address"

"notmuch-address.el" tries to be careful to insinuate itself into
message mode only if it will do something useful, so it's safe to load
it all of the time.