Commit graph

127 commits

Author SHA1 Message Date
Keith Amidon
c4463d4cb4 Factor out message buffer mgmt from notmuch-show-view-all-mime-parts
The ability to temporarily create a buffer containing only the
contents of the currently selected message in notmuch show mode is
generally useful.  This commit factors the majority of the code
required to do so out of notmuch-show-view-all-mime-parts into a macro
called with-current-notmuch-show-message and rewrites the original
function in terms of the macro.

A future set of commits will provide additional functionality using
the macro as well.
2009-11-27 21:07:35 -08:00
Keith Amidon
30bdcfe651 Add key binding for notmuch-search in show-mode
It's not uncommon to want to start a search as a result of something
read in a message so this is convenient.
2009-11-27 21:06:56 -08:00
Aneesh Kumar K.V
8418dee2f6 notmuch.el: Use message-mode font-face to highlight mail headers
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
2009-11-27 20:57:43 -08:00
Alexander Botero-Lowry
ed16edc94d Add some very rudimentary support for handling html parts
If there is an html mime-part in the message and it's the first part,
it gets inlined using `mm-display-part' to convert it to plain text.

The HTML content is still available as a non-text part as well.
2009-11-27 20:47:27 -08:00
Eric Anholt
f0bb5e9c3e notmuch.el: Require message mode to avoid undefined function in replies.
Otherwise, those without keithp's .emacs would end up with reply mode
not being entered.  Suggested by keithp.
2009-11-27 19:45:36 -08:00
Jed Brown
0ce9c53fd4 notmuch-search-add/remove-tag: restrict to messages in current query
Rather than tagging the everything in the thread.  This is arguably more
desirable behavior and is consistent with clearly desirably behavior of
notmuch-search-operate-all.

Note that this change applies indirectly to
notmuch-search-archive-thread (which is actually equivalent behavior
since this function is primarily used when browsing an inbox).

Signed-off-by: Jed Brown <jed@59A2.org>
2009-11-27 05:57:07 -08:00
Jed Brown
7293d84826 New function notmuch-search-operate-all: operate on all messages in the current query.
It is often convenient to change tags on several messages at once.  This
function applies any number of tag whitespace-delimited tag
modifications to all messages matching the current query.

I have bound this to `*'.

Signed-off-by: Jed Brown <jed@59A2.org>
2009-11-27 05:57:04 -08:00
Tassilo Horn
b7898b0c2a Return unpropertized strings for filename and message-id 2009-11-26 13:18:20 -08:00
Aneesh Kumar K.V
dc4d0a53a2 notmuch.el: Use variable notmuch-search-oldest-first to decide the search order
Make sure we use notmuch-search-oldest-first to decide the how
the search result should be displayed. This helps to set the
value to nil and have latest mail shown first

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
2009-11-26 13:09:12 -08:00
Jan Janak
5ab69232bc notmuch.el: When removing tags, offer only those a msg/thread has set.
When removing a tag from a message or thread, build a completion buffer
which contains only tags that the message or thread has really set.

Signed-off-by: Jan Janak <jan@ryngle.com>
2009-11-26 07:07:12 -08:00
Jan Janak
16eab4c87d notmuch.el: Select tag names with completion.
Several commands ask the user for a tag name. With this feature the
user can just press tab and Emacs automatically retrieves the list of
all existing tags from notmuch database with 'notmuch search-tags' and
presents a completion buffer to the user.

This feature is very useful for users who have a large number of tags
because it saves typing and minimizes the risk of typos.

Signed-off-by: Jan Janak <jan@ryngle.com>
2009-11-26 07:03:32 -08:00
Carl Worth
03ea266bc2 notmuch.el: Remove some dead code.
This was left over from before the switch to using a filter for
processing the results of "notmuch search".
2009-11-25 09:18:39 -08:00
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