mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-26 19:34:51 +01:00
793cbf8049
The rudimentary aspect here is that the date ranges are specified with UNIX timestamp values (number of seconds since 1970-01-01 UTC). One thing that can help here is using the date program to determins timestamps, such as: $(date +%s -d 2009-10-01)..$(date +%s) Long-term, we'll probably need to do our own query parsing to be able to support directly-specified dates and also relative expressions like "since:'2 months ago'".
193 lines
6.7 KiB
Text
193 lines
6.7 KiB
Text
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)
|
|
|
|
3. Make emacs fast for big search results (see "lazy searching" below)
|
|
|
|
4. Fix Xapian defect #250 so tagging is fast.
|
|
|
|
Emacs interface (notmuch.el)
|
|
----------------------------
|
|
Make the keybindings help ('?') display the summary of each command's
|
|
documentation, not the function name.
|
|
|
|
Add a global keybinding table for notmuch, and then view-specific
|
|
tables that add to it.
|
|
|
|
Add a command to archive all threads in a search view.
|
|
|
|
Lazy searching: call "notmuch search" with --first and --max to fill
|
|
just a screenful of results, and then fill in more as ther user pages
|
|
through the buffer.
|
|
|
|
Add a '|' binding from the search view.
|
|
|
|
Add a binding to run a search from notmuch-show-mode.
|
|
|
|
When a thread has been entirely read, start out by closing all
|
|
messages except those that matched the search terms.
|
|
|
|
Add support for choosing from one of the user's configured email
|
|
addresses for the From line.
|
|
|
|
Make 'notmuch-show-pipe-message have a private history.
|
|
|
|
Add support for a delete keybinding that adds a "deleted" tag to the
|
|
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 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).
|
|
|
|
Portability
|
|
-----------
|
|
Fix configure script to test each compiler warning we want to use.
|
|
|
|
Implement strndup locally (or call talloc_strndup instead).
|
|
|
|
Implement getline locally, (look at gnulib).
|
|
|
|
Completion
|
|
----------
|
|
Fix bash completion to complete multiple search options (both --first
|
|
and *then* --max-threads), and also complete value for --sort=
|
|
(oldest-first or newest-first).
|
|
|
|
notmuch command-line tool
|
|
-------------------------
|
|
Teach "notmuch search" to return many different kinds of results. Some
|
|
ideas:
|
|
|
|
notmuch search --for threads # Default if no --for is given
|
|
notmuch search --for messages
|
|
notmuch search --for tags
|
|
notmuch search --for addresses
|
|
notmuch search --for 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. Until we get the
|
|
Xapian bugs fixed that are making this operation slow, we really need
|
|
to let the user know that things are still moving.
|
|
|
|
Add a "-f <filename>" option to select an alternate configuration
|
|
file.
|
|
|
|
Fix notmuch.c to call add_timestamp/get_timestamp with path names
|
|
relative to the database path. (Otherwise, moving the database to a
|
|
new directory will result in notmuch creating new timestamp documents
|
|
and leaving stale ones behind.)
|
|
|
|
Ensure that "notmuch new" is sane if its first, giant indexing session
|
|
gets interrupted, (that is, ensure that any results indexed so far are
|
|
flushed).
|
|
|
|
Fix notmuch.c to use a DIR prefix for directory timestamps, (the idea
|
|
being that it can then add other non-directory timestamps such as for
|
|
noting how far back in the past mail has been indexed, and whether it
|
|
needs to re-tag messages based on a theoretical "auto-tags"
|
|
configuration file).
|
|
|
|
Make "notmuch new" notice when a mail directory has gone more than a
|
|
month without receiving new mail and use that to trigger the printing
|
|
of the note that the user might want to mark the directory read-only.
|
|
|
|
Also make "notmuch new" optionally able to just mark those month-old
|
|
directories read-only on its own. (Could conflict with low-volume
|
|
lists such as announce lists if they are setup to deliver to their own
|
|
maildirs.)
|
|
|
|
Allow configuration for filename patterns that should be ignored when
|
|
indexing.
|
|
|
|
notmuch library
|
|
---------------
|
|
Provide a sane syntax for date ranges. First, we don't want to require
|
|
both endpoints to be specified. For example it would be nice to be
|
|
able to say things like "since:2009-01-1" or "until:2009-01-1" and
|
|
have the other enpoint be implicit. Second we'de like to support
|
|
relative specifications of time such as "since:'2 months ago'". To do
|
|
any of this we're probably going to need to break down an write our
|
|
own parser for the query string rather than using Xapian's QueryParser
|
|
class.
|
|
|
|
Add support for files that are moved or deleted (which obviously need
|
|
to be handled differently).
|
|
|
|
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.
|
|
|
|
General
|
|
-------
|
|
Audit everything for dealing with out-of-memory (and drop xutil.c).
|
|
|
|
Write a test suite.
|
|
|
|
Achieve 100% test coverage with the test suite.
|
|
|
|
Investigate why the notmuch database is slightly larger than the sup
|
|
database for the same corpus of email.
|
|
|
|
Xapian
|
|
------
|
|
Fix defect #250
|
|
|
|
replace_document should make minimal changes to database file
|
|
http://trac.xapian.org/ticket/250
|
|
|
|
It looks like it's going to be easy to fix. Here's the file to
|
|
change:
|
|
|
|
xapian-core/backends/flint/flint_database.cc
|
|
|
|
And look for:
|
|
|
|
// FIXME - in the case where there is overlap between the new
|
|
// termlist and the old termlist, it would be better to compare the
|
|
// two lists, and make the minimum set of modifications required.
|
|
// This would lead to smaller changesets for replication, and
|
|
// probably be faster overall
|
|
|
|
So I think this might be as easy as just walking over two
|
|
sorted lists looking for differences.
|
|
|
|
Note that this is in the currently default "flint" backend,
|
|
but the Xapian folks are probably more interested in fixing
|
|
the in-development "chert" backend. So the patch to get
|
|
upstreamed there will probably also fix:
|
|
|
|
xapian-core/backends/chert/chert_database.cc
|
|
|
|
(I'm hoping the fix will be the same---an identical comment
|
|
exists there.)
|
|
|
|
Also, if you want to experiment with the chert backend,
|
|
compile current Xapian source and run notmuch with
|
|
XAPIAN_PREFER_CHERT=1. I haven't tried that yet, but there are
|
|
claims that a chert database can be 40% smaller than an
|
|
equivalent flint database.
|
|
|
|
Report this bug:
|
|
|
|
"tag:foo and tag:bar and -tag:deleted" goes insane
|
|
|
|
This seems to be triggered by a Boolean operator next to a
|
|
token starting with a non-word character---suddenly all the
|
|
Boolean operators get treated as literal tokens)
|