Commit graph

1399 commits

Author SHA1 Message Date
David Edmondson
98cf886120 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.
2010-04-26 10:37:35 -07:00
David Edmondson
159b05fcaa 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.
2010-04-26 10:33:38 -07:00
David Edmondson
e247ae47c1 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.
2010-04-26 10:24:36 -07:00
David Edmondson
01ec4d3bcb 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.
2010-04-26 10:05:46 -07:00
Carl Worth
6408270512 Revert "emacs: Add more functions to clean up text/plain parts"
This reverts commit 97570954cb.
2010-04-26 10:05:29 -07:00
David Edmondson
6afa0b16a3 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.
2010-04-26 08:23:48 -07:00
David Edmondson
e2516a343b 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:".
2010-04-26 08:23:05 -07:00
David Edmondson
87d9df50e5 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.
2010-04-26 08:10:47 -07:00
David Edmondson
75b9b028ea emacs: Correct message/header/citation/signature hiding
Set `buffer-invisibility-spec' to `nil' (a list) if it is just `t'
before inserting any body parts, otherwise removing items from
`buffer-invisibility-spec' (which is what
`notmuch-show-headers-visible' and `notmuch-show-message-visible' do)
is a no-op and has no effect. This caused threads with only matching
messages to have those messages hidden initially because
`buffer-invisibility-spec' stayed `t'.
2010-04-26 08:07:17 -07:00
Michal Sojka
969f1c4621 test: Comment why we need to set TZ 2010-04-26 08:05:57 -07:00
David Edmondson
a9bf967e71 emacs: Add a search to the 'recent searches' list once only
Avoiding adding the same search string to the 'recent searches' list
more than once by testing whether the string was already used with
`member' rather than `memq'.
2010-04-26 07:31:26 -07:00
David Edmondson
d6dea89588 emacs: Remove the accelerator keys from the hello buffer
Carl though that the recent search accelerator keys are not useful, so
remove them.
2010-04-26 07:31:15 -07:00
David Edmondson
7b31a11f20 emacs: Adapt the logo background colour to that of the frame
The notmuch logo uses transparency. That can display poorly when
inserting the image into an emacs buffer (black logo on a black
background), so force the background colour of the image. We use a
face (`notmuch-hello-logo-background') to represent the colour so that
`defface' can be used to declare the different possible colours, which
depend on whether the frame has a light or dark background.
2010-04-26 07:30:33 -07:00
Cédric Cabessa
42bda003a0 configure: add ignored options for compatibility.
gentoo's ebuild script expects 2 more options for configure:
  --host (same format as --build)
  --datadir
2010-04-26 07:18:21 -07:00
David Edmondson
38c35f8123 emacs: Sort headers when composing
Always sort the headers in the message composition window.
2010-04-26 07:15:50 -07:00
David Edmondson
47f5871aff emacs: Suppress window creation when replying
The buffer used to edit a reply should overlay the original
message. Encourage this by setting `same-window-regexps' locally.
2010-04-26 07:15:42 -07:00
Carl Worth
8af8b6f8de TODO: Add idea to make content available to isearch in search-results mode.
We can't fit all the authors and the various changed subjects in 80
columns, but it would be great is isearch could still find these, (and
automatically expand the hidden content as necessary).
2010-04-26 07:14:22 -07:00
David Edmondson
97570954cb 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 and remove blank lines between attribution statements and
    the citation,
- notmuch-wash-compress-blanks: Compress repeated blank lines and
  remove leading and trailing blank lines.

Enable `notmuch-wash-tidy-citations' and
`notmuch-wash-compress-blanks' by default by adding them to
`notmuch-show-insert-text/plain-hook'. `notmuch-wash-wrap-long-lines'
is not enabled by default.

If `notmuch-wash-wrap-long-lines' is enabled, word wrapping of the
buffer leads to an unappealing display of text, so provide a function
to disable it and add it to the list of `notmuch-show-mode' hook
functions.
2010-04-24 07:52:37 -07:00
David Edmondson
7c5f017a30 emacs: Fix i-search to open up invisible citations as necessary
Add an `isearch-open-invisible' property to the overlays used to hide
citations and signatures, together with an appropriate function to
leave the invisible text visible should that be required.
2010-04-24 07:38:28 -07:00
Carl Worth
138fd38afe lib: Ensure notmuch_query_search_messages returns NULL on an exception.
Previously, this function may have segfaulted immediately after
reporting the exception.
2010-04-24 07:27:50 -07:00
Carl Worth
e3e0e26806 lib: Document that notmuch_query_count_messages may return 0 if an exception occurs
This isn't a behavioral change---just a calrification in the documentation.
2010-04-24 07:27:50 -07:00
Carl Worth
9ef68f1444 lib: Audit all notmuch_database call for Xapian exception handling.
Our current approach is for top-level entry poitns in the library
to have try/catch blocks that catch any Xapian exception and print
a message. Add a few missing blocks and fix up the documentation.
2010-04-24 07:27:50 -07:00
Carl Worth
3dbef312fb lib: Audit calls to notmuch_message_get_header to handle NULL return
Sebastian Spaeth reported [*] a segfault within libnotmuch when
running notmuch operations while an asyncronous offlineimap job had
removed some files from the mail store. Avoid this by handling all
cases where notmuch_message_get_header could return NULL.

[*] See message id:87d3xqti3o.fsf@SSpaeth.de on notmuch@notmuchmail.org
2010-04-24 06:50:04 -07:00
Carl Worth
7c421b87b0 lib: Simplify code to set subject from matched message.
Simply moving the code from _add_matched_message to a new
_set_subject_from_message function.
2010-04-24 06:50:04 -07:00
Carl Worth
d06a34ad5d notmuch reply: Handle notmuch_message_get_header returning NULL.
This seems a rather unlikely case, (replying to a message that
disappears out from under us half way through the reply), but
notmuch_message_get_header is documented to return NULL in error
cases, so we might as well deal sanely with that (rather than just
crashing).
2010-04-24 06:33:32 -07:00
Carl Worth
c87d17f28e emacs: Make notmuch-hello jumpt to search bar by default.
This isn't ideal for me personally, since I usually want to inovke a
saved search rather than entering a new search textually. But it's at
least better than just putting point in the upper-left corner where it
doesn't do anything.
2010-04-24 06:15:09 -07:00
Carl Worth
a88d1d277b emacs: Rename notmuch-show-headers to notmuch-message-headers
And similarly for notmuch-show-headers-visible to
notmuch-message-headers-visible.

I've never liked notmuch-show as a namespace prefix, but it looks
especially bad when it appears as "Notmuch Show Headers Visible" in
the customize buffer. Give nicer names to these variables which are
exported for user manipulation.
2010-04-24 06:11:57 -07:00
Carl Worth
54ec603bb4 emacs: Don't display From header by default.
This header is redundant with the summary-line of each message which
contains the same information.
2010-04-24 06:06:12 -07:00
Carl Worth
4d2acc3eca emacs: Allow user to customize which headers are visible.
Continuing our tradition of making more and more of the notmuch
functionality configurable fromt eh customize interface.
2010-04-24 06:04:59 -07:00
Carl Worth
ed93a5a19f emacs: Change message headers (To, CC, From, and Date) to be visible by default
Users can still toggle these to be hidden by default, and can still
toggle visibility of headers for a single message with the 'h'
command.
2010-04-24 05:48:04 -07:00
David Edmondson
63b8a2b9af emacs: Allow headers to be shown by default in show mode
Add `notmuch-show-headers-visible' which, when set `t', causes headers
to be shown by default.
2010-04-24 05:47:06 -07:00
Dirk Hohndel
6ddc2e0442 removed unused variables
trivial compiler warning fix

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
2010-04-23 17:53:52 -07:00
David Edmondson
bae184f5fc emacs: Add notmuch-address.el for address completion using notmuch
A tool `notmuch-addresses' is required to produce addresses which
match a query string. An example of a suitable script can be found in
the git repository at
    http://jkr.acm.jhu.edu/git/notmuch_addresses.git
There are no doubt others.
2010-04-23 17:31:46 -07:00
Carl Worth
1291d1dcb1 emacs: Rename notmuch-show-toggle-all to notmuch-show-open-or-close-all
The function was named and documented incorrectly before, saying that
it would "change the visibility of all messages". Instead it only
opens the messages that are closed---it doesn't simultanesously close
the messages that are open. (Granted, nobody would *want* that
behavior I don't think, but the naming was confusing before.)
2010-04-23 17:27:14 -07:00
David Edmondson
e6bc99f31f emacs/notmuch-show.el: Add `notmuch-show-toggle-all' bound to M-RET
`notmuch-show-toggle-all' changes the visibility all of the messages
in the current thread. By default it makes all of the messages
visible. With a prefix argument, it makes them all not visible.
2010-04-23 17:24:01 -07:00
Dirk Hohndel
8adaad690e fix expected test result to include Bcc lines
this test actually tests behavior that I consider as broken.
The Bcc should be to the same address as used in the From line,
otherwise we are creating a potential information leak as email
that is related to one email account (say, work) is copied to
a different account

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
Reviewed-by: Carl Worth <cworth@cworth.org>

These tests don't actually pass yet, since the feature being tested
has not been merged. But gettting these tests in first will let us
more easily test that the feature actually works, (and will help us
ensure we don't forget the feature before the next release).
2010-04-23 17:01:49 -07:00
Dirk Hohndel
037cfc5f5a add From guessing tests to test suite
right now these are not trying to be overly fancy
simply one test per strategy that we apply to figure out the best
from address - including the fallback if there's nothing to go on

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
2010-04-23 17:01:19 -07:00
Carl Worth
b57d9635f5 emacs: Use single-quote not double-quote when constructing search
Commit 44982ab332 added some extra
quoting when constructing a search. A previous version of this patch
had used single-quotation marks (') while this version used
double-quotation marks (").

The intent of the extra quoting was to allow notmuch-command to be set
to a script invoking ssh.

What actually happens, however is that the extra quotation marks make
it all the way into the query string seen by Xapian. And the double
quotes trigger phrase searching, (which isn't desired here). The
side-effect of that is that the emacs code would fallback to an
unqalified query and display all threads with all messages open.

We fix that side-effect now by using single-quote characters, but
we'll want a better fix in the future to avoid Xapian seeing these
characters at all I think.
2010-04-23 16:39:18 -07:00
David Edmondson
45ad21fba1 emacs: Re-arrange message sending code
Define a new `mail-user-agent' (`notmuch-user-agent') and use it by
default. Re-arrange various routines that send mail to use this
(compose, reply, forward). Insert a `User-Agent:' header by default.

This is the real commit for this functionality this time. The
previous attempt to merge this code:

	commit 57926bc7b0

was botched (by Carl Worth, not David) to include only the Makefile
change. So the build was broken until this commit that actually adds
the new file.
2010-04-23 15:41:33 -07:00
Michal Sojka
f106db3e9b test: Set fixed time zone
When the test suite is run in a different time zone that where Carl
lives, some tests may fail depending on the time when the test suite is
run. For example, just now I get:

     Search for all messages ("*"):...			FAIL
    --- test-031.expected	2010-04-23 09:33:47.898634822 +0200
    +++ test-031.output	2010-04-23 09:33:47.898634822 +0200
    @@ -1,5 +1,5 @@
    -thread:XXX   2001-01-05 [1/1] Notmuch Test Suite; Test message #6 (inbox unread)
    -thread:XXX   2001-01-05 [1/1] Notmuch Test Suite; Test message #14 (inbox unread)
    +thread:XXX   2001-01-06 [1/1] Notmuch Test Suite; Test message #6 (inbox unread)
    +thread:XXX   2001-01-06 [1/1] Notmuch Test Suite; Test message #14 (inbox unread)
     thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; body search (inbox unread)
     thread:XXX   2000-01-01 [1/1] searchbyfrom; search by from (inbox unread)
     thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (inbox unread)

By setting a fixed time zone in the test script, these problems should
be eliminated.

Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
2010-04-23 13:28:33 -07:00
David Edmondson
7135a8bcbf emacs: Push the cursor to point-max on n' or N' at the end of a thread
Sebastian pointed out that the pre-JSON UI would move the cursor to
the end of the buffer if `n' or `N' is hit when on the last (unread)
message. Mimic that behaviour in the new UI.
2010-04-23 13:26:32 -07:00
David Edmondson
57926bc7b0 emacs: Re-arrange message sending code
Define a new `mail-user-agent' (`notmuch-user-agent') and use it by
default. Re-arrange various routines that send mail to use this
(compose, reply, forward). Insert a `User-Agent:' header by default.
2010-04-23 13:18:13 -07:00
Carl Worth
4b0994dd25 emacs: Fix some compilation warnings.
Fix missing argumen in declaration of notmuch-search function and add
a definition of notmuch-search-continuation to avoid warning about
assignment to a free variable.
2010-04-23 12:57:22 -07:00
David Edmondson
e9394932f7 emacs: Add notmuch-hello.el, a friendly frontend to notmuch
This is based on the prototype that Carl Worth described in the TODO
file. It provides a search bar as well as support for recent searches,
saved searches, and a list of all tags in the database (as well as the
number of messages with each tag).
2010-04-23 12:50:18 -07:00
David Edmondson
b65bcb5f8f emacs: Remove notmuch-search-authors-width' and fix the use of notmuch-search-result-format' accordingly
The width of the authors field in search output was previously
specified in two places:
 - `notmuch-search-authors-width': the limit beyond which the authors
   names are truncated,
 - `notmuch-search-result-format': the layout of the search results.

Changing the configuration of one of these may have required the user
to know about and adapt the other accordingly. This led to confusion.

Instead, remove `notmuch-search-authors-width' and perform truncation
based on the relevant field in `notmuch-search-result-format'.

Approved-By: Jameson Rollins <jrollins@finestructure.net>
2010-04-23 12:14:17 -07:00
Jesse Rosenthal
44982ab332 Reintroduce patch to quote args in notmuch-show to facilitate remote use
This reintroduces the patch committed in 9193455fa1, which was
reverted during the upgrade to the JSON emacs UI.
2010-04-23 11:59:47 -07:00
Carl Worth
14fb9f3c55 notmuch setup: Prompt for tags to set on new messages.
Our "notmuch setup" command is only really helpful if it guides the
user through all the possible options. So add this one.
2010-04-23 10:30:40 -07:00
Carl Worth
c63b6473ca config: Rename messages.new_tags to just new.tags
I think one configuration group for each top-level command makes a lot
of sense. And this makes the existing naming of set_new_tags and
get_new_tags also very reasonable.
2010-04-23 10:29:28 -07:00
Carl Worth
444923e2d0 Clarify the documentation for the new_tags configuration option.
Specifically mentioning that it's a list separated by ';' and use
"will" instead of "should".
2010-04-23 09:28:45 -07:00
Carl Worth
15e71cfda7 notmuch setup: Fix new configuration-file groups to get comments
Our intent has always been that when new configuration-file settings
are created by notmuch, that they get created with comments telling
the user how to use them. But this was only working before when the
entire configuration file was created.

We fix this so that when a new group is added, (such as the recently-
added [messages] section) that it gets its documentation.
2010-04-23 09:20:40 -07:00