aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* README: Mention that notmuch only supports maildir or mh format.Gravatar Carl Worth2010-02-25
| | | | | | | Justin B Rye pointed out (in Debian bug #566282) that a user with mail in mbox format can spend a lot of time investigating notmuch before realizing that mbox is not supported. Head that off with a more detailed mention in the README blurb.
* emacs: Avoid removing the unread tag due to internal navigationGravatar Carl Worth2010-02-24
| | | | | | | | | | Sometimes the internals of the implementation navigate among messages, (as opposed to the user explicitly requesting the next message to be shown). In these cases we don't want to remove the unread tag from the message navigated to. This fixes a bug where invocation of notmuch-show-next-unread-message would clear the unread tag from all messages in a thread.
* Simplify "unread" tag handling in emacs UI.Gravatar Jameson Rollins2010-02-24
| | | | | | | | | | | | | | | | | This patch is intended to greatly simplify the handling of the "unread" tag in the emacs UI. This patch adds a new function 'notmuch-show-mark-read', that removes the "unread" tag in notmuch-show-mode. This function is then executed as a notmuch-show-hook, and by notmuch-show-next-message. All of the functions that explicitly marked messages as unread are removed or renamed. The idea here is that the user should never have to worry about manipulating the "unread" tag. The tag should persist until the user actually views a message, at which point it should be automatically removed. This patch simplifies the notmuch.el quite a bit, removing a lot of somewhat redundant functions, and reducing clutter in the name and key-mapping space.
* TODO: We should fix the --format=json option to not imply --entire-thread.Gravatar Carl Worth2010-02-23
| | | | | What we print and how we print it are orthogonal options, so --format shouldn't change what messages are printed.
* notmuch search: Use "thread" rather than "id" when formatting with JSONGravatar Carl Worth2010-02-23
| | | | | | | The text output uses thread:<foo>, (which is a syntax directly supported by "notmuch show"), so make the json output be "thread", "<foo>" rather than "id", "<foo>". This should help avoid confusion of thread IDs with message IDs, (which do use the "id" prefix in searches).
* json: Add copy of MIT license text from cJSONGravatar Carl Worth2010-02-23
| | | | | | When we incorporate external code, we should include its license, (particularly when one of the terms of the license is to include it in copies).
* Add an "--format=(json|text)" command-line option to both notmuch-search and ↵Gravatar Scott Robinson2010-02-23
| | | | | | | | | | | | | notmuch-show. In the case of notmuch-show, "--format=json" also implies "--entire-thread" as the thread structure is implicit in the emitted document tree. As a coincidence to the implementation, multipart message ID numbers are now incremented with each part printed. This changes the previous semantics, which were unclear and not necessary related to the actual ordering of the message parts.
* TODO: Rename the proposed --for option to --outputGravatar Carl Worth2010-02-23
| | | | | | We've been using --output in IRC and on the mailing list for a while, (someone had the good sense to point out that --for would defeat command-line completion since it's a prefix of the proposed --format).
* notmuch.1: Use bold and indentation for the NOTMUCH_CONFIG variable.Gravatar Carl Worth2010-02-23
| | | | | This seems to be the standard method of formatting an environment variable section within a man page.
* Add ENVIRONMENT VARIABLES section to the man pageGravatar James Westby2010-02-23
| | | | Briefly describe the NOTMUCH_CONFIG variable there.
* notmuch.el: Emphasize the 'i' of 'ID' in the documentation for 'c i'.Gravatar Carl Worth2010-02-20
| | | | | We're using 'i' in the keybinding, so it helps to have a capital 'I' in the help string to empahsize the point.
* Change the stash keybinding from 'z' to 'c'. And use 'i' for message ID.Gravatar Carl Worth2010-02-20
| | | | | | | | | | | | In spite of being implemented with the word "stash" in the function names, the documentation (and hence help strings) for each function already use the word "Copy" to describe the action. So 'c' is a much more natural key-binding, (particularly since 'z' didn't map to any real word anyway). We also use 'i' for the message ID copying of the submap. This is intended to align mnemonically with the "id:" prefix already used for message IDs.
* notmuch.el: add a submap (on "z" for "ztash") to stash things.Gravatar David Bremner2010-02-20
| | | | | | | | | | | | | | Provide key bindings for stuffing various RFC822 header fields and other metadata into the emacs kill-ring as text. The bindings are as follows: z F notmuch-show-stash-filename z T notmuch-show-stash-tags z c notmuch-show-stash-cc z d notmuch-show-stash-date z f notmuch-show-stash-from z m notmuch-show-stash-message-id z s notmuch-show-stash-subject z t notmuch-show-stash-to
* notmuch.el: convert sparse keymap to a list in ↵Gravatar David Bremner2010-02-20
| | | | | | | | | notmuch-substitute-one-command-key-with-prefix The previous version would crash when a key was bound to a sparse keymap, since apparently these are not straightforward lists. The usage of map-keymap is a bit obscure: it only has side-effects, no return value.
* Add functions notmuch-show-get-(bcc, cc, date, from, subject, to).Gravatar David Bremner2010-02-20
| | | | | | | Return the corresponding header field for the current message as a string. These are thin wrappers around notmuch-show-get-header, which means they each cause a full parse of the RFC822 header. The main idea is to fix an api.
* notmuch-show-get-header: new function; return alist of parsed header fields.Gravatar David Bremner2010-02-20
| | | | | | | | This function parses the displayed message to recover header fields. It uses mailheader.el to do the actual header parsing, after preprocessing to remove indentation. It relies on the variables notmuch-show-message-begin-regexp, notmuch-show-header-begin-regexp, and notmuch-show-message-end-regexp.
* notmuch.el: Delete some trailing whitespace.Gravatar Carl Worth2010-02-20
| | | | I'm not sure when this managed to creep in, but we don't want it.
* notmuch.el: Fix bug from message with ':' in the From address.Gravatar Carl Worth2010-02-11
| | | | | | | | | | | Eric reported that a particular thread was non-functional in the notmuch-search mode in the emacs client. It was easy enough to trace the bug down to a broken regular expression (using ':' instead of ';'). The bug would be triggered by a message with ':' in the From address. This is something I hope to add to the test suite as soon as we have support for testing the emacs interface there.
* notmuch.el: Handle attached images via an external viewer.Gravatar Carl Worth2010-02-10
| | | | | | | | | We temporarily override the mm-inline-media-tests variable so that the only parts inserted into the temporary buffer (and lost) are those parts that the user has already seen in the notmuch-show buffer. Anything else, (such as images), will now be left to be handled via mailcap, just like other attachment types.
* notmuch.el: Fix indentation.Gravatar Carl Worth2010-02-10
| | | | This line was indented incorrectly which can be confusing.
* notmuch.el: Avoid infinite loop marking up message with no parts.Gravatar Carl Worth2010-02-10
| | | | | | | | | | | | | | | The infinite loop was triggered by a message consisting of a single attachment within the body, (and no "part") tags. We need to do things in response to this bug (beyond this specific fix): 1. Create a test suite that exercises our emacs frontend so that bugs like this do not come back to haunt us after we fix them once. 2. Switch from our ad-hoc regexp based search of message-part delimeters to known-good code for parsing a structured document, (for example, the outstanding JSON patches).
* Reintroduce HTML inlining, with a much needed optimizationGravatar Alexander Botero-Lowry2010-02-09
| | | | | | Now instead of requiring every single message be parsed, we now check the Content-type in the parsed headers and only do HTML inlining if it's text/html
* Fix printf for when uint64_t != unsigned long long intGravatar Carl Worth2010-02-09
| | | | | | | | Thanks to Michal Sojka <sojkam1@fel.cvut.cz> for pointing out the correct fix, which I verified in the freely-available WG14/N1124 draft (from the C99 working group) which is available here: http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf
* Switch from random to sequential thread identifiers.Gravatar Carl Worth2010-02-09
| | | | | | | | | | | | | The sequential identifiers have the advantage of being guaranteed to be unique (until we overflow a 64-bit unsigned integer), and also take up half as much space in the "notmuch search" output (16 columns rather than 32). This change also has the side effect of fixing a bug where notmuch could block on /dev/random at startup (waiting for some entropy to appear). This bug was hit hard by the test suite, (which could easily exhaust the available entropy on common systems---resulting in large delays of the test suite).
* TODO: Add some recently discussed items.Gravatar Carl Worth2010-02-09
| | | | | | These were collected either from the mailing list of from IRC conversations. The good ideas probably aren't mine, and the mistakes probably are.
* Allow folders with no messages to be elided from listGravatar Keith Packard2010-02-08
| | | | | | | This makes it easier to see folders with messages. Eliding empty folders is togged with the 'e' binding. Signed-off-by: Keith Packard <keithp@keithp.com>
* Look at whitespace to separate folder name from countGravatar Keith Packard2010-02-08
| | | | | | This allows folder names to contain any non-blank characters Signed-off-by: Keith Packard <keithp@keithp.com>
* Add 'm' and ' ' bindings to notmuch-folder viewGravatar Keith Packard2010-02-08
| | | | | | | This allows the user to compose new mail from the folder view, and also to use <space> to show the current folder. Signed-off-by: Keith Packard <keithp@keithp.com>
* emacs: Use font-lock-comment-face to highlight citation buttonGravatar Kan-Ru Chen2010-02-08
| | | | Signed-off-by: Kan-Ru Chen <kanru@kanru.info>
* notmuch.el: show some of citation even when hiding.Gravatar David Bremner2010-02-08
| | | | | | | | | - rename notmuch-show-citation-lines-min to n-s-c-l-prefix - call forward-line with the appropriate parameter to adjust region to be hidden. - change citation button text so that it makes (some) sense when citation is shown Reviewed-by: Kan-Ru Chen <kanru@kanru.info>
* notmuch.el: Refactor citation markup. Variables for minimum size, button text.Gravatar David Bremner2010-02-08
| | | | | | | | | | | | | | | | | | | | | This is a fairly intrusive rewrite. - I pulled the common code for the signature and citation case out into a separate function. This is not so much shorter, but I think it will be easier to maintain. - I replaced the sequence of (looking-at blah) (forward-line) with a single re-search-forward per citation. New variables - notmuch-show-signature-button-format, notmuch-show-citation-button-format Allow customization of button text. - notmuch-show-citation-lines-min Do not buttonize citations below the given threshold. Reviewed-by: Kan-Ru Chen <kanru@kanru.info>
* notmuch.h: Fix a couple of typos in the documentation.Gravatar Carl Worth2010-02-05
| | | | | Obviously, the spell-checker isn't able to catch every mistake I make.
* notmuch restore: Don't waste time with messages with unchanged tags.Gravatar Carl Worth2010-02-05
| | | | | | | | | | It's a simple optimization to look at a message and check that the existing tags are actually different than the tags we are setting before we do anything. For my mail store this takes a "notmuch restore" that does nothing from about 10 minutes down to 1 minute, so there's a significant speedup here.
* notmuch-test: Add basic tests for "notmuch dump" and "notmuch restore"Gravatar Carl Worth2010-02-05
| | | | Our test-suite coverage keeps improving, (slowly).
* notmuch-test: Fix misalignment in output.Gravatar Carl Worth2010-02-05
| | | | Clean output is just so much easier to read (and validate).
* notmuch.el: Use emacs built-in forward-button and backward-buttonGravatar Kan-Ru Chen2010-02-05
| | | | | | There are built-ins, so why not use them? Signed-off-by: Kan-Ru Chen <kanru@kanru.info>
* Use forward-line instead of next-lineGravatar Carl Worth2010-02-05
| | | | | | We do this all the time, but at least emacs is kind enough to remind us, (when compiling), that next-line is only intended for interactive use, and we should use forward-line inside of lisp code.
* notmuch.el: Add missing documentation for the new 'h' keybinding.Gravatar Carl Worth2010-02-05
| | | | | Without this, our help screen displayed 'h' with no description of what it does.
* notmuch.el: Add keybinding to toggle display of message body and headers.Gravatar Kan-Ru Chen2010-02-05
| | | | | | | I really missed this feature. Added notmuch-show-toggle-current-body and notmuch-show-toggle-current-header and bind them to 'b' and 'h'. Signed-off-by: Kan-Ru Chen <kanru@kanru.info>
* notmuch-test: Add test to verify that uuencoded data is not indexed.Gravatar Carl Worth2010-02-05
| | | | | As recently promised, no new features are being accepted to notmuch without corresponding new tests for the test suite.
* notmuch-test: Add several tests of "notmuch search"Gravatar Carl Worth2010-02-05
| | | | | | These tests were surprisingly simple to write---not much code at all and most of them worked the first time even with hand-prepared versions of the expected output.
* notmuch-test: Add a new add_message function.Gravatar Carl Worth2010-02-04
| | | | | | | The previous generate_message function is what's needed when testing "notmuch new". But after that, we never want to generate a message without also adding it to the index. So create a new add_message function with this convenience.
* Eliminate some useless gobject boilerplate.Gravatar Carl Worth2010-02-04
| | | | | | If we had external users of this filter then they might expect some of these macros to exist. But since this is just internal, that's just unneeded noise.
* notmuch new: Don't index uuencoded data.Gravatar Carl Worth2010-02-04
| | | | | | | | | | | | | | With modern MIME attachments, we're already avoiding indexing the attachments. But for old-school uuencoded data in the mail, we have been directly indexing the encoded data as terms, (which is not useful at all---nobody will ever ytry to search based on the seemingly random uuencoded data). Additionally, indexing a modestly large uuencoded file seems to make Xapian go insane, (consuming *lots* of memory). We fix both problems by detecting uuencoded content and not performing any indexing of it.
* notmuch reply: Rename the mailing_list_munged_reply_to functionGravatar Carl Worth2010-02-04
| | | | | | | | | This function detects whether the address in the Reply-To header already appears in either To or Cc. So give it a name that reflects what it does (reply_to_header_is_redundant) rather than the old name which described one possible use of the function, (as a simple heuristic for detecting whether a mailing list had applied reply-to munging).
* notmuch reply: Prevent GMIME assertion complaints for empty Reply-to header.Gravatar Carl Worth2010-02-04
| | | | | | Apparently, GMime doesn't want to create a valid address list object for an empty string. That's annoying, but it's easy enough to test for the empty string and avoid the problem.
* notmuch reply: Use strstr instead of strcasestr for portability.Gravatar Carl Worth2010-02-04
| | | | | | | | This change was already recommended in a comment in the original implementation of this patch. If someone really wants to support un-munging in the case of To: and Reply-To: having the same address but different case, then they can provide a portable approach for that.
* notmuch reply: Fix the support for reply-to un-munging.Gravatar Carl Worth2010-02-04
| | | | | The condition was using a reversed sense for the test of the return value of strcasestr, (perhaps confusing it with the usage of strcmp?).
* notmuch-reply: Add missing whitespace.Gravatar Carl Worth2010-02-04
| | | | | Some recently-added functions were to hard for me to read without the expected whitespace. Fix these.
* notmuch-test: Test "notmuch reply" with a reply-to-munged mailGravatar Carl Worth2010-02-04
| | | | | | | | This is a test for the recently added feature where we detect that the reply-to address already exists in the To: or Cc: header so will already be replied to. In this case we want to include the From: address in our reply, (where, otherwise we would use the Reply-To address *instead* of the address in the From header).