summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* TODO: Add a todo item for adding a message as a blob, rather than a filename.Carl Worth2010-03-31
| | | | | This was suggested by Srinivasa and is intended to make it easier to integrate notmuch into an mbox-loving mail client.
* TODO: Add some new items about improving the test suite.Carl Worth2010-03-31
| | | | | | | | I just tried (and failed) to write a test for the recent magic inference of phrase searches. That's a feature that makes me *really* uncomfortable to not have an automated test. But I believe the proposed modularization of the test suite should reduce some quoting nightmares, so will hopefully make this easier.
* test: Fix phrase-search tests.Carl Worth2010-03-31
| | | | | With some extra qutotation marks, we are now doing actual phrase searches so these tests pass.
* test: Add some negative results for the phrase searches.Carl Worth2010-03-31
| | | | | | | | | These results have all the same terms as the target phrase, but not in the expected order. They are designed to ensure that we actually test phrase searches. And as it turns out, we're not currently quoting the search terms properly, so the phrase-search tests now fail with this commit.
* notmuch-show: add tags to json outputSebastian Spaeth2010-03-11
| | | | | | | | The previous json patches forgot to add the notmuch tags to the json output. This is inconsistent to the text output so here they are. We just output a 'tags' field that sends notmuch tags as a json array. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
* emacs: Fix search refresh when on the last line of a search buffer.Carl Worth2010-03-10
| | | | | | | | | | | | | | | We currently allow the cursor to be positioned on the "End of search results" line after the last thread in a search buffer. When refreshing on this line, there's no thread ID to be used as the target. Previously, a refresh from this case would result in a nil thread target, but we were also using nil to indicate that the target thread had been found. This caused the position to be lost during refresh, (the cursor would move from the last line in the buffer to the first). We fix this by using a magic string of "found" rather than nil to clearly indicate whether the target thread has actually been found.
* emacs: Adjust search refresh to use a target line not a target position.Carl Worth2010-03-10
| | | | | | It doesn't make sense to move the cursor to some random point in the middle of a line. We always want the refresh to leave the cursor at the beginning of some line instead.
* Makefile: Fix Makefiles to depend on all child Makefile fragments.Carl Worth2010-03-10
| | | | | | | | | | | | | | We were previously maintaining two lists of the child Makefile fragments---one for the includes and another for the dependencies. So, of course, they drifted and the dependency list wasn't up to date. We fix this by adding a single subdirs variable, and then using GNU Makefile substitution to generate both the include and the dependency lists. Some side effect of this change caused the '=' assignment of the dir variable to not work anymore. I'm not sure why that is, but using ':=' makes sense here and fixes the problem.
* Makefile: Use 'emacs --quick' for a less noisy build of "make install-emacs".Carl Worth2010-03-10
| | | | | I don't really notice if it goes any quicker, but it's sure nice to have less spew now.
* Makefile: Add a message after "make install-emacs"Carl Worth2010-03-10
| | | | | More help to guide the new user here. Tell the user how to actually invoke the emacs client now that it's installed.
* Makefile: Conditionalize the "make install" message.Carl Worth2010-03-10
| | | | This is the same approach as with the 'all' target previously.
* Makefile: Simplify the conditional message of the all target.Carl Worth2010-03-10
| | | | | | | | | | | | | | We wamt a simple "make" to call the 'all' target and then print a message when done, but we don't want "make install" which depends on that same 'all' target to print the message. We previously did this with a separate 'all-without-message' target, which was inelegant because it caused all users of the target to carefully depend on 'all-without-message' rather than 'all'. Instead, we now use a single 'all' target but with a Makefile conditional that examines the MAKECMDGOALS variable to determine whether to print the message.
* Makefile: Add message to make install listing the other install targets.Carl Worth2010-03-10
| | | | | Otherwise, it's hard for the user to know that things like install-emacs, install-bash, and install-zsh even exist.
* Makefile: Add a meesage after "make" telling the user to run "make install"Carl Worth2010-03-09
| | | | | As one command completes, it's kind of the tool to indicate which command the user should execute next.
* Makefile: Rename all_deps to global_depsCarl Worth2010-03-09
| | | | | | The "all" inside this variable name was easy to confuse with the separate "all" target. This variable specifies dependencies that apply to every target, so use "global" instead.
* Add is:<tag> as a synonym for tag:<tag> in search terms.Carl Worth2010-03-09
| | | | | I like the readability of this, it provides compatibility with people trained in this syntax by sup, and it even saves one character.
* emacs: Move emacs UI (currently just one file) to subdirectory.David Bremner2010-03-09
| | | | | | Add emacs/Makefile.local and emacs/Makefile. Move emacs targets into emacs/Makefile.local, but leave the byte compilation rule in the top level Makefile.
* INSTALL: Include Fedora command for installing dependencies of notmuch.Carl Worth2010-03-09
| | | | | We already had this command in the error message from the configure script, so we should include it here as well.
* INSTALL: Add a pointer to ./configure --helpCarl Worth2010-03-09
| | | | | We have some good documentation in ./configure --help, so we should direct users to it.
* lib: Silence a compiler warning.Carl Worth2010-03-09
| | | | | The original code was harmless, but apparently some compilers aren't able to think deep enough to catch that.
* emacs: Fix refresh of search results to leave cursor on current thread.Carl Worth2010-03-09
| | | | | | | | | | This has been broken since the addition of support for streaming search results to the emacs interface. With the old apparoach it was easy to simply wait for all search results to land in the buffer and then search for the desired line. With streaming results, we have to save the target off to the side and allow the process filter and sentinel functions to correctly respond when the target thread appears.
* Fix a few documentation typos in notmuch.hFernando Carrijo2010-03-09
| | | | | | Fix a few documentation typos in notmuch.h Signed-off-by: Fernando Carrijo <fcarrijo@yahoo.com.br>
* Update documentation of notmuch_query_createFernando Carrijo2010-03-09
| | | | | | | | | | | Commit cd467caf renamed notmuch_query_search to notmuch_query_search_messages. Commit 1ba3d46f created notmuch_query_search_threads. We better keep the docs of notmuch_query_create consistent with those changes. Signed-off-by: Fernando Carrijo <fcarrijo@yahoo.com.br> Edited-by: Carl Worth to explicitly list the full name of each function being referenced.
* notmuch show: Don't show empty headers.Carl Worth2010-03-09
| | | | | | | This is a fairly old regression. There has always been code to avoid printing empty headers (such as Cc or Bcc with no values), but it has been broken since notmuch_message_get_header was changed to return an empty string rather than a NULL pointer for these fields.
* TODO: Add proposal for a saved-search interface.Carl Worth2010-03-09
| | | | Adding this to our TODO list so that it doesn't get forgotten.
* TODO: Remove many items that have been completed recently.Carl Worth2010-03-09
| | | | | | | | | There's been a lot of good work done, and we've been doing a generally poor job of noticing when some of the tasks we've completed were already on our TODO list. So here's a careful scan, removing all items I could find that have already been done.
* emacs: Fix documentation of notmuch-search-remove-tag.Carl Worth2010-03-09
| | | | | | | The behavior was changed in commit 4aff2ca55bfe285ced36e9fe02c907d8b4120672 to affect all messages in the thread (and not only those matching the current search) but the documentation was not updated (until now).
* lib: Document what move_to_next does at the end of the list.Carl Worth2010-03-09
| | | | | Explicitly mention that there's an invalid position after the last item in the list.
* lib: Rename iterator functions to prepare for reverse iteration.Carl Worth2010-03-09
| | | | | | | | We rename 'has_more' to 'valid' so that it can function whether iterating in a forward or reverse direction. We also rename 'advance' to 'move_to_next' to setup parallel naming with the proposed functions 'move_to_first', 'move_to_last', and 'move_to_previous'.
* emacs: Fix backspace to not scroll more than the previous messageCarl Worth2010-03-09
| | | | | The bug was occuring due to counting invisible lines, but then scrolling past them since they are invisible.
* emacs: Unbreak notmuch-show-rewind (the function to which Backspace is bound)Carl Worth2010-03-09
| | | | | | | Commit 095a02211e696434e5b41a85ab516b3a639f9a9b broke the backspace key by trying to execute nil as a function, (which obviously won't work), when it was intended as a return value. Fix this now, (and pine for a test suite that exercises the emacs user-interface of notmuch).
* emacs: Make 'n' and 'p' navigate only open messages.Carl Worth2010-02-26
| | | | | And add new 'N' and 'P' keybindings for navigating through messages that are open or closed.
* emacs: Don't open unread messages by default.Carl Worth2010-02-26
| | | | | | | | | When searching for an individual message, (by message id, say), it's really annoying to have the entire thread open just because the thread was archived without ever having been read. This means that the "unread" tag is a lot less special, and it really just exists as a mild cue for the user.
* README: Mention that notmuch only supports maildir or mh format.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 navigationCarl 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.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.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 JSONCarl 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 cJSONCarl 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 ↵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 --outputCarl 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.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 pageJames Westby2010-02-23
| | | | Briefly describe the NOTMUCH_CONFIG variable there.
* notmuch.el: Emphasize the 'i' of 'ID' in the documentation for 'c i'.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.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.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 ↵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).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.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.Carl Worth2010-02-20
| | | | I'm not sure when this managed to creep in, but we don't want it.