]> git.notmuchmail.org Git - notmuch/blobdiff - TODO
create notmuch_show_params_t structure for holding parameters passed to show functions.
[notmuch] / TODO
diff --git a/TODO b/TODO
index 572dac8ee3e3709d5a78fb7ddb496a04950bc6bc..260ffe18b37c778fcb7b13325f78547e76257aaa 100644 (file)
--- a/TODO
+++ b/TODO
@@ -2,12 +2,17 @@ Fix the things that are causing the most pain to new users
 ----------------------------------------------------------
 1. A new import is tagging all messages as "inbox" -- total pain
 
-2. Allow an easy way to get tags from directory names (if the user has them)
-
 Emacs interface (notmuch.el)
 ----------------------------
-Enhance '+' and '-' in the search view to operate on an entire region
-if set.
+Add notmuch-bcc and notmuch-cc for setting default Bcc and Cc values,
+(should affect the message-setup-hook).
+
+Switch the notmuch-search view to use "notmuch search --format=json"
+to fix large classes of bugs regarding poorly-escaped output and lame
+regular expressions. (The most recently found, unfixed example is the
+sender's name containing ';' which causes emacs to drop a search
+result.) This may require removing the outer array from the current
+"notmuch search --format=json" results.
 
 Fix '*' to work by simply calling '+' or '-' on a region consisting of
 the entire buffer.
@@ -27,51 +32,33 @@ current message/thread and make searches not return deleted messages
 by default, (unless the user asks explicitly for deleted messags in
 the search query).
 
+Add keybindings for next/previous thread.
+
 Add support to "mute" a thread (add a "muted" tag and then don't
 display threads in searches by default where any message of the thread
 has the "muted" tag).
 
-Fix i-search to open up invisible citations as necessary.
-
 Make '=' count from the end rather than from the beginning if more
 than half-way through the buffer.
 
-Emacs saved-search interface
-----------------------------
-Here's a proposal Carl wrote (id:87einafy4u.fsf@yoom.home.cworth.org):
-
-  So what I'm imagining for the default notmuch view is something like
-  this:
+Fix to automatically wrap long headers (for RFC compliance) before
+sending. This should probably just be fixed in message-mode itself,
+(but perhaps we can have a notmuch-message-mode that layers this on
+top).
 
-          Welcome to notmuch.
+Stop hiding the headers so much in the thread-view mode.
 
-              Notmuch search: _________________________________________
+Allow opening a message in thread-view mode by clicking on either
+line.
 
-          Saved searches:
+Automatically open a message when navigating to it with N or P.
 
-              55,342      All messages
-                  22      Inbox
+Change 'a' command in thread-view mode to only archive open messages.
 
-          Recent searches:
+Add a binding to open all closed messages.
 
-                   1      from:"someone special" and tag:unread
-                  34      tag:notmuch and tag:todo
-
-          Click (or press Enter) on any search to see the results.
-          Right-click (or press Space) on any recent search to save it.
-
-  So the "saved searches" portion of the view is basically just what
-  notmuch-folder displays now. Above that there's an obvious place to
-  start a new search, (in a slightly more "web-browser-like" way than the
-  typical mini-buffer approach).
-
-  All recent searches appear in the list at the bottom automatically, and
-  there's the documented mechanism for saving a search, (giving it a name
-  and having it appear above).
-
-Portability
------------
-Fix configure script to test each compiler warning we want to use.
+Change the 'a'rchive command in the thread view to only archive open
+messages.
 
 Completion
 ----------
@@ -81,6 +68,28 @@ and *then* --max-threads), and also complete value for --sort=
 
 notmuch command-line tool
 -------------------------
+Add support to "notmuch search" and "notmuch show" to allow for
+listing of duplicate messages, (distinct filenames with the same
+Message-ID). I'm not sure what the option should be named. Perhaps
+--with-duplicates ?
+
+Add a -0 option to "notmuch search" so that one can safely deal with
+any filename with:
+
+       notmuch search --output=files -0 <terms> | xargs -0 <command>
+
+"notmuch setup" should use realpath() before replacing the
+configuration file. The ensures that the final target file of any
+intermediate symbolic links is what is actually replaced, (rather than
+any symbolic link).
+
+Replace "notmuch reply" with "notmuch compose --reply <search-terms>".
+This would enable a plain "notmuch compose" to be used to construct an
+initial message, (which would then have the properly configured name
+and email address in the From: line. We could also then easily support
+"notmuch compose --from <something>" to support getting at alternate
+email addresses.
+
 Fix the --format=json option to not imply --entire-thread.
 
 Implement "notmuch search --exclude-threads=<search-terms>" to allow
@@ -94,21 +103,9 @@ option (or similar) to "notmuch show".) For now, this is being worked
 around in the emacs interface by noticing that "notmuch show" returns
 nothing and re-rerunning the command without the extra arguments.
 
-Teach "notmuch search" to return many different kinds of results. Some
-ideas:
-
-       notmuch search --output=threads # Default if no --output is given
-       notmuch search --output=messages
-       notmuch search --output=tags
-       notmuch search --output=addresses
-       notmuch search --output=terms
-
 Add a "--format" option to "notmuch search", (something printf-like
 for selecting what gets printed).
 
-Add a "--count-only" (or so?) option to "notmuch search" for returning
-the count of search results.
-
 Give "notmuch restore" some progress indicator.
 
 Fix "notmuch restore" to operate in a single pass much like "notmuch
@@ -128,8 +125,33 @@ provide more MIME-structure information in its output first).
 Replace the "notmuch search-tags" command with "notmuch search
 --output=tags".
 
+Fix to avoid this ugly message:
+
+       (process:17197): gmime-CRITICAL **: g_mime_message_get_mime_part: assertion `GMIME_IS_MESSAGE (message)' failed
+       Warning: Not indexing empty mime part.
+
+  This probably means adding a test case to generate that message,
+  filing an upstream bug against GMime, and then silencing the
+  notmuch-generated portion of the warning (so that once GMime is
+  fixed, this is all silent).
+
+Simplify notmuch-reply to simply print the headers (we have the
+original values) rather than calling GMime (which encodes) and adding
+the confusing gmime-filter-headers.c code (which decodes).
+
 notmuch library
 ---------------
+Add support for custom flag<->tag mappings. In the notmuch
+configuration file this could be
+
+       [maildir]
+       synchronize_flags = R:replied; D*:deleted; S:~unread;
+
+In the library interface this could be implemented with an array of
+structures to define the mapping (flag character, tag name,
+inverse-sense bit (~ above), and tag-when-any-file-flagged
+vs. tag-when-all-files-flagged (* above)).
+
 Add an interface to accept a "key" and a byte stream, rather than a
 filename.
 
@@ -146,14 +168,10 @@ Make failure to read a file (such as a permissions problem) a warning
 rather than an error (should be similar to the existing warning for a
 non-mail file).
 
-Actually compile and install a libnotmuch shared library.
-
 Fix to use the *last* Message-ID header if multiple such headers are
 encountered, (I noticed this is one thing that kept me from seeing the
 same message-ID values as sup).
 
-Add support for the user to specify custom headers to be indexed.
-
 Add support for configuring "virtual tags" which are a tuple of
 (tag-name, search-specification). The database is responsible for
 ensuring that the virtual tag is always consistent.
@@ -187,17 +205,69 @@ notmuch searches. Here was one proposal made in IRC:
 Provide a ~me Xapian synonym for all of the user's configured email
 addresses.
 
-Test suite
-----------
-Achieve 100% test coverage with the test suite.
+Add symbol hiding so that we don't risk leaking any private symbols
+into the shared-library interface.
+
+Audit all libnotmuch entry points to ensure that all Xapian calls are
+wrapped in a try/catch block.
+
+Fix the "count" functionality to be exact as Olly explained in IRC:
+
+       ojwb> cworth: if you set the check_at_least parameter to the
+       database size, get_matches_estimated() will be exact
+
+Fix the threading of a message that has a References: header but no
+In-Reply-To: header (see id:"87lixxnxpb.fsf@yoom.home.cworth.org").
+
+Search syntax
+-------------
+Implement support for "tag:*" to expand to all tags.
+
+Fix "notmuch search to:" to be less confusing. Many users expect this
+to search for all messages with a To: header, but it instead searches
+for all messages with the word "to". If we don't provide the first
+behavior, perhaps we should exit on an error when a configured prefix
+is provided with no value?
 
-Modularize test suite (to be able to run individual tests).
+Support "*" in all cases and not just as a special case. That is, "* "
+should also work, as well as "* and tag:inbox".
 
-Summarize test results at the end.
+Implement a syntax for requesting set-theoertic operations on results
+of multiple searches. For example, I would like to do:
 
-Fix the insane quoting nightmare of the test suite, (and once we do
-that we can actually test the implicit-phrase search feature such as
-"notmuch search 'body search (phrase)'"
+       "tag:inbox" SET-SUBTRACT "tag:muted"
+
+    as well as:
+
+       "tag:notmuch and <date-range>" SET-INTERSECT
+       "tag:notmuch and not (tag:merged or tag:postponed)"
+
+    See id:3wdpr282yz2.fsf@testarossa.amd.com for more details on the
+    use cases of the above.
+
+Database changes
+----------------
+Store a reference term for every message-id that appears in
+References. We just started doing this for newly-added documents, but
+at the next convenient database-schema upgrade, we should go back and
+fix old messages to be consistent.
+
+Start indexing the List-Id header, (and re-index this header for
+existing messages at the next database upgrade).
+
+Add support for the user to specify custom headers to be indexed (and
+re-index these for existing messages at the next database upgrade).
+
+Save filenames for files detected as "not an email file" in the
+database. This would allow for two things: 1. Optimizing "notmuch new"
+to not have to look at these files again (since they are potentially
+large so the detection could be potentially slow). 2. A "notmuch
+search" syntax could be added to allow the user to find these files,
+(and perhaps delete them or move them away as appropriate).
+
+Test suite
+----------
+Achieve 100% test coverage with the test suite.
 
 General
 -------
@@ -205,3 +275,6 @@ Audit everything for dealing with out-of-memory (and drop xutil.c).
 
 Investigate why the notmuch database is slightly larger than the sup
 database for the same corpus of email.
+
+Makefile should print message teaching user about LD_LIBRARY_PATH (or
+similar) if libdir is not set to a directory examined by ldconfig.