Commit graph

115 commits

Author SHA1 Message Date
Carl Worth
adef907918 notmuch.el: Quote arguments to protect from shell interpretation.
We want to allow the user to be able to use search expressions with
parentheses and semi-colons, etc. and we definitely don't want the
shell interpreting those!
2009-11-24 19:08:53 -08:00
Carl Worth
93af7b5745 notmuch.el: Exceute "notmuch search" asynchronously.
Previously, our emacs interface was waiting for the "notmuch search"
to complete before it would display anything. Now, we execute the
process asyncrhonously and filter results as they come in.

This takes advantage of the recent work to make "notmuch search"
results stream out steadily. The result is that some search results
will be available nearly instantly and the user can navigate and view
those while additional results continue loading.
2009-11-24 18:49:58 -08:00
Alexander Botero-Lowry
0ad3534b94 Remove the global expand body keymapping
With local buttons done now, we don't need this anymore.
2009-11-24 11:34:13 -08:00
Alexander Botero-Lowry
daeda152b8 Make bodies locally toggleable
Having actually implemented this, I realized that my
initial approach of providing a function to configure
a button was wrong. Instead I've replaced that with
button types. This then makes it possible to provide
the fully expanded view when all threads in a message
are unread.

It also has the potential to allow global-expansion functions
if that is desireable
2009-11-24 10:39:18 -08:00
Alexander Botero-Lowry
9eb90688b7 make a nice function for generating invisibility toggle buttons
I realized I was replicating this code over and over again, so this
way if I change my mind about something I only have to do it on one
place.
2009-11-24 10:39:18 -08:00
Alexander Botero-Lowry
60817c39d8 cleanup a lot of left-overs from the global invis
Basically I'd left in a lot of the key-bindings and all the
invisiblity spec variables so just rid the world of those
2009-11-24 10:38:53 -08:00
Alexander Botero-Lowry
bde9284064 make headers locally expandable/collapsable
This is the same as with citations and signatures.
I used an ellipsis here for the invisible region, which
I think make it more obvious that there are extra headers.
MH-e used this for extra long To/CC headers.
2009-11-24 10:37:40 -08:00
Carl Worth
f615803932 notmuch.el: Add TAB and M-TAB buttons to move between buttons.
Thanks to Alexander Botero-Lowry for pointing out the interesting
functions to use here. This functionality was really easy to add.
2009-11-23 19:03:59 -08:00
Keith Packard
a378dff8a1 Add notmuch-folder mode to provide an overview of search matches
Folder mode takes a (user-configurable) list of search patterns and
produces a list of those patterns and the count of messages that they
match. When an entry in this list is selected, a search window with
the defined search is opened.  The set of folders is defined as a
list, each element contains the name of the folder and the query string
to count.

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-11-23 06:34:05 +01:00
Keith Packard
43daa6f070 Make mouse-1 click in search view show thread
Selecting text in the search view isn't all that useful, so instead,
make mouse-1 clicks actually show the thread you click on. It's almost
like direct manipulation or something.

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-11-23 06:29:53 +01:00
Keith Packard
265be025c2 Insert signature into replies
When you compose a new message, message mode carefully inserts your
mail signature at the bottom of the message; as notmuch constructs the
reply all by itself, this doesn't happen then. Use the message mode
function 'message-insert-signature' to add that to reply buffers.

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-11-23 01:28:29 +01:00
Jed Brown
03fd69322b Quote file names passed to the shell
Prior to this, notmuch-show-pipe-message could not handle file names
with spaces and similar.
2009-11-23 01:24:19 +01:00
Alexander Botero-Lowry
82bcd1b2d0 switch to button-1, which seems to interact poorly with text-selection by mouse 2009-11-22 15:42:59 -08:00
Alexander Botero-Lowry
5aea0dcb61 instead of trying to cause a redisplay, actually do a redisplay 2009-11-22 15:26:18 -08:00
Alexander Botero-Lowry
89d85e28b2 put a newline after the headers 2009-11-22 15:26:18 -08:00
Alexander Botero-Lowry
00c0896c9b make header names bold in show-mode 2009-11-22 15:26:18 -08:00
Alexander Botero-Lowry
b38bd7efd8 Make expanding/collapsing signatures and citations local to them
This is the first step towards localizing all the expand/collapse
operations in the show buffer
2009-11-22 15:26:12 -08:00
Alexander Botero-Lowry
89f55ab84b buttonize signatures as well 2009-11-22 15:24:49 -08:00
Alexander Botero-Lowry
14f492ba0c Buttonize citation expander.
Currently the button has no action or special handling at all.
2009-11-22 15:24:49 -08:00
Kan-Ru Chen
6b823b6fba Fix invalid face reference.
To avoid the "Invalid face reference: cons [18 times]" kind of message
goes on and on in the *Messages*.

Signed-off-by: Kan-Ru Chen <kanru@kanru.info>
2009-11-22 13:22:36 +01:00
Carl Worth
aac1d60352 INSTALL/notmuch.el: More details on how to install/run notmuch.el
Hopefully this will save some people some head-scratching trying
to figure out how to use it.
2009-11-21 21:40:57 +01:00
Carl Worth
882a58de5f notmuch.el: Don't use end-of-buffer which is inappropriate from programs
The documentation is quite clear about this case.

With this, we can now byte compile without warnings.
2009-11-21 00:58:16 +01:00
Carl Worth
aa46a34408 notmuch.el: Fix stale reference to non-existing variable.
We changed from "query" to "thread-id" a while ago, and broke this
error message at the time. Fix it now.
2009-11-21 00:53:27 +01:00
Carl Worth
d295f50ac7 notmuch.el: Add many missing defvar calls.
Without these, emacs was complaining about "assignment to free variable",
(though only when byte compiling, which is why we didn't notice earlier).
2009-11-21 00:52:23 +01:00
Mikhail Gusarov
dbb29a77fa Allow to redefine notmuch binary name and path in elisp mode
Signed-off-by: Mikhail Gusarov <dottedmag@dottedmag.net>
2009-11-20 13:37:54 +01:00
Carl Worth
2cc3165163 notmuch.el: Don't use literal control characters in strings.
Avoding these is nicer to users, text editors, and our poor little
notmuch.el code itself that would get confused when seeing a copy of
itself in email. (Of course, we should still fix that bug, but this
workaround is good nonetheless.)
2009-11-20 13:09:58 +01:00
Aneesh Kumar K.V
3f52f59c1e notmuch: Add search mode hook
This patch add notmuch-search-hook that gets run when we
after displaying search results

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Cc:Keith Packard <keithp@keithp.com>
2009-11-19 14:01:49 +01:00
Carl Worth
83a2ed3c2f notmuch.el: Add a reply binding ('r') to search mode to reply to a whole thread.
This is basically right, (I get a message buffer with all the mails
quoted), but somehow notmuch reply is reversing the messages. That's a
nuisance.
2009-11-19 00:21:24 +01:00
Keith Packard
1a75f88d8b We use the message mail system for new mail, let emacs know.
This makes things like the goto-address system bring up the right
message composition window.

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-11-18 23:32:39 +01:00
Keith Packard
adbdafbde2 Create a default notmuch-show-hook that highlights URLs and uses word-wrap
I created the notmuch-show-hook precisely so I could add these two
options, but I suspect most people will want them, so I just made them
the default. If you don't want them, you can use remove-hook to get
rid of this.

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-11-18 23:30:10 +01:00
Keith Packard
86f7ee24d6 Set truncate-lines variable for search buffers.
This keeps them from wrapping.

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-11-18 23:29:55 +01:00
Keith Packard
6caf631ebf Add notmuch-show-hook to allow customization of show windows
I wanted to enable got-address-mode and visual-line-mode in my show
windows to make messages easier to read and URLs easier to
follow. This hook allows the user to run arbitrary code each time a
message is shown.

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-11-18 23:29:44 +01:00
Carl Worth
0656fb518d Make '?" bring up a list of bindings.
Just using describe-mode for now, (though something more specialized
would be better).
2009-11-18 19:12:13 +01:00
Ingmar Vanhassel
2ce25b93a7 Typsos 2009-11-18 03:21:36 -08:00
Carl Worth
3334865725 notmuch search: Change default search order to be newest messages first.
This is what most people want for a _search_ command. It's often
different for actually reading mail in an inbox, (where it makes more
sense to have results displayed in chronological order), but in such a
case, ther user is likely using an interface that can simply pass the
--sort=oldest-first option to "notmuch search".

Here we're also change the sort enum from NOTMUCH_SORT_DATE and
NOTMUCH_SORT_DATE_REVERSE to NOTMUCH_SORT_OLDEST_FIRST and
NOTMUCH_SORT_NEWEST_FIRST. Similarly we replace the --reverse option
to "notmuch search" with two options: --sort=oldest-first and
--sort=newest-first.

Finally, these changes are all tracked in the emacs interface, (which
has no change in its behavior).
2009-11-17 20:58:30 -08:00
Keith Packard
dac31c9e01 Use 'forward-line' instead of 'next-line' while walking search display
The documentation for 'next-line' suggests that 'forward-line' is a
better choice for non-interactive usage. That appears to be the case
here; using next-line caused emacs to spin forever for me.

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-11-16 22:10:36 -08:00
Carl Worth
057b3060e8 notmuch.el: Consider an entire line of underscores as a signature separator.
This is the default separator used by mailman, so there's a lot of
clutter in thread displays without this. Also, we not provide a nice
variable to the user (notmuch-show-signature-regexp) for configuring
this.
2009-11-16 16:39:59 -08:00
Carl Worth
ea484f0ebf notmuch.el: Insert a newline if the last line of a part is missing one.
I think there's a GMime bug that we're getting parts decoded without a
final newline (the encoded parts seem to have them just fine). We can
workaround the bug easily enough by finding a part-closing delimiter
that is not at the beginning of a line, and if so, just insert a
newline.

Without this, the one-line-summary of the next message would continue
on the same line as the last line of the previous message, (and this
would often happen for mailing-list messages where mailman would add
an extra part for its signature block).
2009-11-16 14:53:02 -08:00
Carl Worth
d5068983b8 notmuch.el: Display authors in a column separate from subject.
This makes it much easier to actually read the subject lines.

The user can set notmuch-search-authors-width to control the width of
the column.

Two possible ideas for improving this support further:

  1. Make the excess authors invisible instead of removing them from
     the buffer, (which means that isearch could still find them).

  2. Have the user variable control a percentage of the window width
  rather than being a fixed number of columns.
2009-11-16 11:57:05 -08:00
Carl Worth
352e91625b notmuch.el: Indent messages to show nested structure of thread.
Now that we're actually adding text to the buffer for the indentation,
our old aproach of using positions to record regions to manipulate is
now longer correct. Fortunately, it's easy to switch from positions to
markers which are robust, (just call point-marker instead of point and
all relevant functions accept markers as well as points).

I also finally fixed the bug where the text "[6 line signature]" we
display was causing the one-line-summary of the next message to be on
its same line rather than at the beginning of the next line where it
belongs.
2009-11-16 11:08:24 -08:00
Carl Worth
322fe4f3fb notmuch.el: Add support for viewing MIME-encoded parts (with 'v').
Currently just supports viewing all MIME parts in the message. There's
not yet support for selecting and viewing individual parts, but that
should be easy to add from here, (now that we've found
mm-display-parts to do all the heavy lifting).
2009-11-14 08:57:38 -08:00
Carl Worth
4812cfb368 notmuch.el: Add an 'm' binding to start composing a new mail.
Available from either the "search" or the "show" view.
2009-11-13 15:54:58 -08:00
Carl Worth
77088624af notmuch.el: Use require instead of load to get the cl functions.
Not only is "load" probably the wrong thing, but loading cl-seq befoe
cl can cause complaints anyway.
2009-11-13 15:49:43 -08:00
Carl Worth
8561c7463a notmuch.el: Add a binding ('o') and command to toggle current search order.
This ended up being a bit easier than I thought. Just flip the controlling
variable and then run `notmuch-search-refresh-view'.
2009-11-12 23:16:19 -08:00
Carl Worth
a5e9c06eb6 notmuch.el: Hook up support for different search orders.
This gives us two different default search orders: The inbox view that
comes up from "M-x notmuch" is sorted in chronological order (oldest
threads first). A new global search "M-x notmuch-search" will instead
be in reverse chronological order (newest threads first).

Any filtered searches retain the sort order of the search being
filtered.

There's not yet any interface for changing the sort order of a search
after it is constructed.
2009-11-12 23:09:56 -08:00
Carl Worth
e530910ae2 notmuch.el: Remove functions to show/hide thread IDs.
I wrote these originally jsut for debugging. They've never been hooked
up to any keybinding and the existing "M-x visible-mode" does what's
needed anyway.
2009-11-12 14:35:41 -08:00
Carl Worth
1407e409b1 notmuch.el: Switch to using "notmuch reply" rather than message-reply.
This way we get to take advantage of the configuration of the user's
email addresses in notmuch, (rather than expecting the user to
configure all of their email addresses in message mode as well).
2009-11-11 21:37:35 -08:00
Carl Worth
26bb521f52 notmuch.el: Add a binding ('r') to reply to the current message.
We were just starting to get "notmuch reply" into shape in order to
provide the needed functionality here, but then I realized that the
message-reply function built into emacs is already more functional,
(at least for the case of replying to a single message).
2009-11-10 18:47:53 -08:00
Carl Worth
54d79f60a1 notmuch.el: Simplify get-message-id
We were stripping off the "id:" portion of the identifier, only to
put it back on again in all cases. Stop this madness.
2009-11-10 18:45:30 -08:00
Carl Worth
8ae1c3c6e1 notmuch.el: Don't advance line in search buffer before showing thread.
Previously, when selecting a thread to view from the search buffer, we
would advance the point by one line before showing the thread, (so
that it would be ready to show the next thread once the user was done
with the current thread). This was annoying when the user temporarily
exited the thread view, (because the "wrong" thread was then selected
in the search view).

We get a more consistent experience by waiting to advance until the
user has finished viewing one thread and is ready to view the next.
2009-11-09 13:48:58 -08:00