David Bremner [Sun, 25 Jan 2015 14:04:51 +0000 (15:04 +0100)]
doc: gzipped notmuch.3 before trying to install notmuch.3.gz
If HAVE_SPHINX=0 but HAVE_DOXYGEN=1, then the previous version was
trying to install notmuch.3.gz but only got as far as creating
notmuch.3
Todd [Thu, 22 Jan 2015 23:43:40 +0000 (17:43 -0600)]
Update documentation
Adds new entry to the NEWS file, and updates the search terms section
of the man page. The search terms section needs to be updated again
once the new section in the documentation covering probablistic terms
has been committed.
Todd [Thu, 22 Jan 2015 23:43:39 +0000 (17:43 -0600)]
Update completions for Emacs and bash
This adds completions for both Emacs and bash. ZSH does not appear to
have completions for search terms.
Todd [Thu, 22 Jan 2015 23:43:38 +0000 (17:43 -0600)]
Add indexing for the mimetype term
This adds the indexing support for the "mimetype:" term and removes
the broken test flag. The indexing is probablistic in Xapian terms,
which gives a better experience to end users. Standard content-types
of the form "foo/bar" are automatically interpreted as phrases in
Xapian due to the embedded slash.
Assume, separate messages with application/pdf and application/x-pdf
are indexed, then:
- mimetype:application/x-pdf will find only the application/x-pdf
- mimetype:application/pdf will find only the application/pdf
- mimetype:pdf will find both of the messages
Todd [Thu, 22 Jan 2015 23:43:37 +0000 (17:43 -0600)]
Add the NOTMUCH_FEATURE_INDEXED_MIMETYPES database feature
This feature will exist in all newly created databases, but there is
no upgrade provided for it. If this flag exists, it indicates that
the database was created after the indexed MIME-types feature was
added.
Todd [Thu, 22 Jan 2015 23:43:36 +0000 (17:43 -0600)]
test: Add failing unit tests for indexed mime types
Adds three failing unit tests for searching of mime-types.
An attempt was made at adding a negative test (i.e. searching for a
non-existent mime-type and ensuring it didn't return a message), but
that test would always pass making it pointless.
David Bremner [Thu, 22 Jan 2015 08:37:32 +0000 (09:37 +0100)]
emacs: escape % in header line format
We set header-line-format to the message subject, but if the subject
contains percents, the next character is interpreted as a formatting
control, which is not desired.
Franz Fellner [Thu, 22 Jan 2015 20:16:47 +0000 (21:16 +0100)]
VIM: Improve performance of folders_render
Simply use query.count_[messages,threads] instead of actually running
the query and using the count attribute of the result set.
Franz Fellner [Thu, 22 Jan 2015 12:52:47 +0000 (13:52 +0100)]
VIM: Respect exclude_tags specified in .notmuch-config
Exclude mails tagged with any tag specified in 'notmuch config get
search.exclude_tags' in folders list and search list.
David Bremner [Sun, 18 Jan 2015 16:55:10 +0000 (17:55 +0100)]
doc: remove support for rst2man
It was becoming increasingly complicated to support rst2man, and there
were apparently not many people that relied on it.
Tomi Ollila [Sun, 21 Sep 2014 18:06:20 +0000 (21:06 +0300)]
test: prepare test-lib.sh for possible test system debug session
When something in tests fails one possibility to test is to run
the test script as `bash -x TXXX-testname.sh`. As stderr (fd 2) was
redirected to separate file during test execution also this set -x
(xtrace) output would also go there.
test-lib.sh saves the stderr to fd 7 from where it can be restored,
and bash has BASH_XTRACEFD variable, which is now given the same value
7, making bash to output all xtrade information (consistently) there.
This lib file used to save fd's 1 & 2 to 6 & 7 (respectively) in
test_begin_subtest(), but as those needs to be set *before* XTRACEFD
variable is set those are now saved at the beginning of the lib (once).
This is safe and simple thing to do.
To make xtrace output more verbose PS4 variable was set to contain the
source file, line number and if execution is in function, that function
name. Setting this variable has no effect when not xtracing.
As it is known that fd 6 is redirected stdout, printing status can now
use that fd, instead of saving stdout to fd 5 and use it.
Todd [Sat, 17 Jan 2015 15:51:46 +0000 (09:51 -0600)]
lib: Fix use after free
_thread_set_subject_from_message sometimes replaces the subject, making the
cur_subject point to free'd memory
==6550== ERROR: AddressSanitizer: heap-use-after-free on address 0x601a0000bec0 at pc 0x4464a4 bp 0x7fffa40be910 sp 0x7fffa40be908
READ of size 1 at 0x601a0000bec0 thread T0
#0 0x4464a3 in _thread_add_matched_message /home/todd/.apps/notmuch/lib/thread.cc:369
#1 0x443c2c in notmuch_threads_get /home/todd/.apps/notmuch/lib/query.cc:496
#2 0x41d947 in do_search_threads /home/todd/.apps/notmuch/notmuch-search.c:131
#3 0x40a3fe in main /home/todd/.apps/notmuch/notmuch.c:345
#4 0x7f4e535b4ec4 in __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287
#5 0x40abe6 in _start ??:?
0x601a0000bec0 is located 96 bytes inside of 134-byte region [0x601a0000be60,0x601a0000bee6)
freed by thread T0 here:
#0 0x7f4e54e6933a in __interceptor_free ??:?
#1 0x7f4e54482fab in _talloc_free ??:?
previously allocated by thread T0 here:
#0 0x7f4e54e6941a in malloc ??:?
#1 0x7f4e54485b5d in talloc_strdup ??:?
Todd [Sat, 17 Jan 2015 15:51:45 +0000 (09:51 -0600)]
lib: Fix potential invalid read past an empty string
==22884== ERROR: AddressSanitizer: heap-buffer-overflow on address 0x601600008291 at pc 0x7ff6295680e5 bp 0x7fff4ab9aa40 sp 0x7fff4ab9aa08
READ of size 1 at 0x601600008291 thread T0
#0 0x7ff6295680e4 in __interceptor_strcmp ??:?
#1 0x44763b in _thread_add_message /home/todd/.apps/notmuch/lib/thread.cc:255
#2 0x4459e8 in notmuch_threads_get /home/todd/.apps/notmuch/lib/query.cc:496
#3 0x41e2a7 in do_search_threads /home/todd/.apps/notmuch/notmuch-search.c:131
#4 0x40a408 in main /home/todd/.apps/notmuch/notmuch.c:345
#5 0x7ff627cb9ec4 in __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287
#6 0x40abf3 in _start ??:?
0x601600008291 is located 0 bytes to the right of 97-byte region [0x601600008230,0x601600008291)
allocated by thread T0 here:
#0 0x7ff62956e41a in malloc ??:?
#1 0x7ff628b8ab5d in talloc_strdup ??:?
Michal Sojka [Fri, 19 Sep 2014 18:16:40 +0000 (20:16 +0200)]
Emacs: Display a message when generating address completion candidates
The TAB-initiated address completion generates completion candidates
synchronously, blocking the UI. Since this can take long time, it is
better to let the use know what's happening.
W. Trevor King [Fri, 3 Oct 2014 18:20:58 +0000 (11:20 -0700)]
nmbug: Add a 'help' command for folks who don't like --help
The 'if args.func == help' block at the end avoids:
AttributeError: 'functools.partial' object has no attribute '__code__'
Jesse Rosenthal [Wed, 29 Oct 2014 20:51:45 +0000 (16:51 -0400)]
thread-naming test: Test empty subject names.
We test all empty subjects, and then empty subjects followed by
non-empty subjects (searching both oldest- and newest-first).
Jesse Rosenthal [Wed, 29 Oct 2014 20:51:44 +0000 (16:51 -0400)]
test-lib: Add dummy subject to force empty subject
At the moment, the test-lib fills in any missing headers. This makes
it impossible to test our handling of empty subjects. This will
allow us to use a special dummy subject -- `@FORCE_EMPTY` -- to force
the subject to remain empty.
Jesse Rosenthal [Wed, 29 Oct 2014 20:51:43 +0000 (16:51 -0400)]
thread.cc: Avoid empty thread names if possible.
Currently the thread is named based on either the oldest or newest
matching message (depending on the search order). If this message has
an empty subject, though, the thread will show up with an empty
subject in the search results. (See the thread starting with
`id:
1412371140-21051-1-git-send-email-david@tethera.net` for an
example.)
This changes the behavior so it will use a non-empty name for the
thread if possible. We name threads based on (a) non-empty matches for
the query, and (b) the search order. If the search order is
oldest-first (as in the default inbox) it chooses the oldest matching
non-empty message as the subject. If the search order is newest-first
it chooses the newest one.
Jani Nikula [Fri, 2 Jan 2015 17:48:17 +0000 (19:48 +0200)]
emacs: add stash support for git send-email command line
Stash From/To/Cc as --to/--to/--cc, respectively, and Message-Id as
--in-reply-to, suitable for pasting to git send-email command line.
David Bremner [Wed, 14 Jan 2015 19:57:49 +0000 (20:57 +0100)]
emacs: make citation function customizable.
Make a new customizable variable instead of relying on
message-cite-function because the default for the latter changed
between emacs releases.
The defcustom is borrowed from the message.el source, with minor
modifications.
David Bremner [Wed, 14 Jan 2015 14:25:30 +0000 (15:25 +0100)]
contrib: remove notmuch deliver
contrib/notmuch-deliver is presumed obsoleted by notmuch-insert.
David Edmondson [Fri, 31 Oct 2014 08:05:21 +0000 (08:05 +0000)]
emacs: Washing should use more `defcustom'.
More of the washing variables should be available through the standard
customisation interface.
David Edmondson [Fri, 31 Oct 2014 08:05:20 +0000 (08:05 +0000)]
emacs: More flexible washed faces.
The faces used when washing messages should be notmuch specific and
inherit from the underlying emacs face rather than using it
directly. This allows the washed face to be modified without requiring
the modification of the underlying face.
David Bremner [Sat, 3 Jan 2015 12:58:19 +0000 (13:58 +0100)]
configure: add check for python interepreter name
Currently we hardcode "python" in several places. This makes things
hard for people who have only commands called python3 and/or
python2. We also add the name to sh.config to eventually replace the
current workaround in the test suite.
David Bremner [Sat, 3 Jan 2015 13:14:03 +0000 (14:14 +0100)]
build: eliminate use of python execfile command
As discussed in
id:
8cc9dd580ad672527e12f43706f9803b2c8e99d8.
1405220724.git.wking@tremily.us,
execfile is unavailable in python3.
The approach of this commit avoids modifying the python module path,
which is arguably preferable since it avoids potentially accidentally
importing a module from the wrong place.
David Bremner [Sat, 3 Jan 2015 12:26:19 +0000 (13:26 +0100)]
debian: update ./debian/.gitignore
One binary package was renamed, and notmuch-dbg was mysteriously
missing from the existing .gitignore.
Jani Nikula [Fri, 2 Jan 2015 18:03:28 +0000 (20:03 +0200)]
completion: remove the broken notmuch-completion.tcsh
The tcsh completion is minimal yet doesn't work at all. We're better
off without it, it's more embarrassing than useful.
David Bremner [Fri, 2 Jan 2015 16:18:42 +0000 (17:18 +0100)]
lib: convert two "iterator copy strings" into references.
Apparently this is a supported and even idiomatic way of keeping a
temporary object (e.g. like that returned from an operator
dereference) alive.
David Bremner [Sun, 28 Dec 2014 10:45:08 +0000 (11:45 +0100)]
lib: another iterator-temporary/stale-pointer bug
Tamas Szakaly points out [1] that the bug fixed in
51b073c still
exists in at least one place. This change follows the suggestion of
[2] and creates a block scope temporary std::string to avoid the rules
of iterators temporaries.
[1]: id:
20141226113755.GA64154@pamparam
[2]: id:
20141226230655.GA41992@pamparam
Jani Nikula [Thu, 1 Jan 2015 14:34:30 +0000 (16:34 +0200)]
completion: complete notmuch insert --folder to maildir folders only
The --folder option expects a folder relative from maildir root, so
complete like the folder: search term.
Jani Nikula [Mon, 10 Nov 2014 19:35:42 +0000 (21:35 +0200)]
completion: complete notmuch insert --keep and --no-hooks options
Sergei Shilovsky [Tue, 14 Oct 2014 14:30:56 +0000 (18:30 +0400)]
Add default configuration values to the man page
Jani Nikula [Sun, 23 Nov 2014 11:15:12 +0000 (13:15 +0200)]
lib: drop the deprecation message for single-message mbox files
We generally do not support mbox files, but for historical reasons
we've supported single-message mbox files, with a deprecation
message. We've tried dropping the support altogether, but backed out
of it because we'd need to stop indexing them, while keeping support
for previously indexed files. This would be more complicated than
simply supporting single-message mbox files. Therefore, drop the
deprecation message, and just silently accept single-message mboxes.
David Bremner [Thu, 1 Jan 2015 12:16:38 +0000 (13:16 +0100)]
bindings/ruby: gitignore *.o
Jesse Rosenthal [Sat, 22 Nov 2014 13:17:16 +0000 (08:17 -0500)]
lib: Use email address instead of empty real name.
Currently, if a From-header is of the form:
"" <address@example.com>
the empty string will be treated as a valid real-name, and the entry
in the search results will be empty.
The new behavior here is that we treat an empty real-name field as if
it were null, so that the email address will be used in the search
results instead.
Signed-off-by: Jesse Rosenthal <jrosenthal@jhu.edu>
Jesse Rosenthal [Sat, 22 Nov 2014 13:17:15 +0000 (08:17 -0500)]
test: Add known-broken test for empty author name
We test for whether a quoted empty email address
"" <address@example.com>
will show up as the address, instead of the empty string. This is
marked as known-broken, since the current behavior is to use the empty
string.
This is a new test file, since handling of unusual email addresses
doesn't seem to fit well in any of our existing tests.
Signed-off-by: Jesse Rosenthal <jrosenthal@jhu.edu>
David Edmondson [Tue, 18 Nov 2014 07:03:17 +0000 (07:03 +0000)]
emacs: `with-current-notmuch-show-message' should not leak `coding-system-for-read'
`with-current-notmuch-show-message' applies a `no-conversion' coding
system when reading a raw message from notmuch. That coding system
should _not_ be applied when the body of the macro is evaluated, as it
can cause file operations used during that evaluation to incorrectly
apply the `no-conversion' coding system.
This was discovered when a user's .signature file contained non-ASCII
characters. When a message is forwarded, the `no-conversion' coding
system was applied to the reading of the .signature file, resulting in
raw rather than UTF-8 interpretation of the data.
Tomi Ollila [Sat, 15 Nov 2014 14:52:44 +0000 (16:52 +0200)]
NEWS & doc: typing fixes
Some inconsistent formatting in NEWS for 0.19, 0.18 & 0.17 fixed.
Extra `*` when making bold text in doc/man1/notmuch-search.rst removed.
David Bremner [Sat, 15 Nov 2014 07:47:00 +0000 (08:47 +0100)]
Merge tag '0.19'
notmuch 0.19 release
David Bremner [Fri, 14 Nov 2014 19:35:40 +0000 (20:35 +0100)]
debian: update debian/NEWS and debian/changelog
Plagiarize my upstream summary for debian, and mention the new
upgrade.
David Bremner [Fri, 14 Nov 2014 18:35:02 +0000 (19:35 +0100)]
version: bump to 0.19
David Bremner [Thu, 13 Nov 2014 20:59:43 +0000 (21:59 +0100)]
NEWS: deprecate notmuch deliver
notmuch-deliver has no commits for about 2.5 years. notmuch-insert has
all the features that deliver does, and as far as I understand the
error handling has now caught up.
David Bremner [Thu, 13 Nov 2014 20:59:42 +0000 (21:59 +0100)]
NEWS: add short overview section
I decided to err on the side of brevity, since the details are just
below.
markwalters1009@gmail.com [Thu, 13 Nov 2014 17:25:21 +0000 (17:25 +0000)]
News for mark read handling
amended by db: capitalized notmuch.
Michal Sojka [Wed, 12 Nov 2014 16:44:59 +0000 (17:44 +0100)]
doc: Minor fixes related to notmuch-address
- Add notmuch-address to HTML index
- Remove extra '*'
Michal Sojka [Wed, 12 Nov 2014 16:44:58 +0000 (17:44 +0100)]
NEWS: notmuch address
Jani Nikula [Mon, 10 Nov 2014 19:27:53 +0000 (21:27 +0200)]
NEWS: functions in emacs notmuch-show-stash-mlarchive-link-alist
News for emacs: allow functions in
notmuch-show-stash-mlarchive-link-alist.
Jani Nikula [Mon, 10 Nov 2014 19:27:52 +0000 (21:27 +0200)]
NEWS: notmuch insert, search updates
News for
- cli: add support for notmuch search --duplicate=N with --output=messages
- cli/insert: add post-insert hook
- cli/insert: require succesful message indexing for success statu
Austin Clements [Mon, 10 Nov 2014 13:13:42 +0000 (08:13 -0500)]
NEWS: Database version 3, API improvements, and ghost messages
David Bremner [Sun, 9 Nov 2014 15:46:55 +0000 (16:46 +0100)]
debian: bump standards version
David Bremner [Sun, 9 Nov 2014 15:23:58 +0000 (16:23 +0100)]
bump version to 0.19~rc2
Mark Walters [Sat, 6 Sep 2014 16:22:10 +0000 (17:22 +0100)]
emacs: show: document the mark unread defcustom function
Tomi Ollila [Fri, 7 Nov 2014 18:31:50 +0000 (20:31 +0200)]
cli: notmuch address option defaults update
When no --output option were given, change default to display senders
only.
When only --count option is given, display senders (in contrary to not
displaying anything).
Document that --count with --sort=**order** is not supported option
combination.
Clean up some whitespace in the documentation.
One test updated to have --output=count without sender nor recipient
output option.
Tomi Ollila [Thu, 6 Nov 2014 17:46:59 +0000 (19:46 +0200)]
doc: whitespace cleanup
Changed one tab in doc/man1/notmuch-show.rst to 8 spaces.
Removed one leading tab in doc/man5/notmuch-hooks.rst to make
the SYNOPSIS style consistent with other pages.
Mark Walters [Sat, 8 Nov 2014 08:04:56 +0000 (08:04 +0000)]
News for dump/writelock change
David Bremner [Wed, 5 Nov 2014 23:30:57 +0000 (00:30 +0100)]
debian: bump date in changelog.
It looks a bit riduculous to have a September date there.
David Bremner [Wed, 5 Nov 2014 23:10:03 +0000 (00:10 +0100)]
lib: bump LIBNOTMUCH_MAJOR_VERSION to 4
This should have been done at the same time as the SONAME bump.
David Bremner [Wed, 5 Nov 2014 23:06:06 +0000 (00:06 +0100)]
version: update to 0.19~rc1
Sync NEWS debian/changelog at the same time, although in those cases it's a downgrade.
David Bremner [Wed, 5 Nov 2014 22:41:21 +0000 (23:41 +0100)]
doc: add notmuch-address.rst to sphinx config
This is needed so that the rst docs are converted to man and info
pages.
Michal Sojka [Wed, 5 Nov 2014 00:25:58 +0000 (01:25 +0100)]
cli: address: Add --output=count
This output prints how many times was each address encountered during
search.
Michal Sojka [Wed, 5 Nov 2014 00:25:57 +0000 (01:25 +0100)]
cli: address: Do not output duplicate addresses
This filters out duplicate addresses from address command output.
It also also adds tests for the address command.
The code here is an extended version of a patch from Jani Nikula.
Michal Sojka [Wed, 5 Nov 2014 00:25:56 +0000 (01:25 +0100)]
cli: search: Convert --output to keyword argument
Now, when address related outputs are in a separate command, it makes
no sense to combine multiple --output options in search command line.
Using switch statement to handle different outputs is more readable
than a series of if statements.
Michal Sojka [Wed, 5 Nov 2014 00:25:55 +0000 (01:25 +0100)]
cli: Introduce "notmuch address" command
This moves address-related functionality from search command to the
new address command. The implementation shares almost all code and
some command line options.
Options --offset and --limit were intentionally not included in the
address command, because they refer to messages numbers, which users
do not see in the output. This could confuse users because, for
example, they could see more addresses in the output that what was
specified with --limit. This functionality can be correctly
reimplemented for address subcommand later.
Also useless values of --exclude flag were not included in the address
command.
This was inspired by a patch from Jani Nikula.
Jani Nikula [Wed, 5 Nov 2014 00:25:54 +0000 (01:25 +0100)]
cli: add support for hierarchical command line option arrays
NOTMUCH_OPT_INHERIT expects a notmuch_opt_desc_t * pointer in
output_var.
The "Unrecognized option" message was moved out of parse_option() to
not be emitted twice or when parsing a non-inherited option.
Michal Sojka [Wed, 5 Nov 2014 00:25:53 +0000 (01:25 +0100)]
cli: search: Split notmuch_search_command to smaller functions
In a subsequent commit, these functions will be used to share some
functionality between search and address commands.
Michal Sojka [Wed, 5 Nov 2014 00:25:52 +0000 (01:25 +0100)]
cli: search: Convert ctx. to ctx->
In the next commit, notmuch_search_command will be refactored to
several smaller functions. In order to simplify the next commit to
verbatim move of several lines to new functions with search_context_t*
argument, we convert all references to this structure to pointer
dereferences. To do so we rename the context variable and use the
original name ctx as the pointer to the renamed structure.
Michal Sojka [Wed, 5 Nov 2014 00:25:51 +0000 (01:25 +0100)]
cli: search: Move more variables into search_context_t
In order to share some command line options between search and address
subcommands we need to add corresponding variables to the context
structure. While we are at it, we also add notmuch_database_t to unify
parameters of all do_search_* functions and to simplify subsequent
commits.
Otherwise, there are no functional changes.
Michal Sojka [Wed, 5 Nov 2014 00:25:50 +0000 (01:25 +0100)]
cli: search: Rename options to context
In the next commit the options structure will be extended by
non-option variables. Therefore we need a more generic name.
Just text replacement, no other changes.
Tomi Ollila [Sat, 1 Nov 2014 10:47:12 +0000 (12:47 +0200)]
devel: man-to-mdwn.pl: add GPLv3+ notice to manpages.mdwn
Make the generated head manual page (in the notmuchmail wiki)
display the licence information the whole notmuch software is licenced
under.
Tomi Ollila [Mon, 4 Aug 2014 17:39:32 +0000 (20:39 +0300)]
devel: make man-to-mdwn.pl to work with generated manual pages
The new manual pages converted from rst using sphinx or rst2man
has somewhat different syntax. man-to-mdwn.pl is now adjusted
to produce even better output from this syntax. The changes also
include using utf-8 locale (e.g. for tables and generated hypens)
and and quite a few bugs fixes.
This tool still produces better results than just using the
html pages generated using sphinx / rst2html. For example those
tools don't create inter-page hyperlinks -- and the preformatted
pages written by man-to-mdwn.pl just works well with manual page
content.
Jesse Rosenthal [Fri, 31 Oct 2014 17:33:25 +0000 (13:33 -0400)]
test: Make gen-threads work with python3
python3 doesn't allow dictionaries to be initialized with non-string
keywords. This presents problems on systems in which "python" means
"python3". We instead initalize the dictionary using the dict
comprehension and then update it with the values from the tree. This
will work with both python2 and python3.
Jani Nikula [Sat, 1 Nov 2014 09:31:07 +0000 (11:31 +0200)]
test: add tests for --output=messages --duplicate=N
Basic smoke tests for the feature, nothing fancy.
Jani Nikula [Sat, 1 Nov 2014 09:31:06 +0000 (11:31 +0200)]
cli: add support for notmuch search --duplicate=N with --output=messages
Print the message IDs of all messages matching the search terms that
have at least N files associated with them.
Tomi Ollila [Sat, 1 Nov 2014 09:39:04 +0000 (11:39 +0200)]
configure: move make {,install} instructions to the end
There was theorical possibility that writing the config files could
have skipped (by interruption) after the instructions how to make
notmuch was printed out.
Michal Sojka [Fri, 31 Oct 2014 21:53:58 +0000 (22:53 +0100)]
cli: search: Add --output={sender,recipients}
The new outputs allow printing senders, recipients or both of matching
messages. To print both, the user can use --output=sender and
--output=recipients simultaneously.
Currently, the same address can appear multiple times in the output.
The next commit will change this. For this reason, tests are
introduced there.
We use mailbox_t rather than InternetAddressMailbox because we will
need to extend it in a following commit.
This code is based on a patch from Jani Nikula.
Michal Sojka [Fri, 31 Oct 2014 21:53:57 +0000 (22:53 +0100)]
cli: search: Convert --output to keyword-flag argument
This converts "notmuch search" to use the recently introduced
keyword-flag argument parser. At this point, it only makes the code
slightly less readable but following commits that add new --output
keywords will profit from this.
Jani Nikula [Fri, 31 Oct 2014 21:53:56 +0000 (22:53 +0100)]
cli: Add support for parsing keyword-flag arguments
This allows having multiple --foo=bar --foo=baz options on the command
line, with the corresponding values OR'd together.
[Test added by Michal Sojka]
Michal Sojka [Fri, 31 Oct 2014 21:53:55 +0000 (22:53 +0100)]
cli: search: Refactor passing of command line options
Many functions that implement the search command need to access command
line options. Instead of passing each option in a separate variable, put
them in a structure and pass only this structure.
This will become handy in the following commits.
David Edmondson [Fri, 31 Oct 2014 17:24:47 +0000 (17:24 +0000)]
NEWS: Improved `q` binding.
David Edmondson [Wed, 29 Oct 2014 14:18:49 +0000 (14:18 +0000)]
emacs: Improve the behaviour of the 'q' binding.
When a user hits 'q' in a notmuch buffer, kill the buffer only if
there are no other windows currently showing it.
Jani Nikula [Mon, 20 Oct 2014 15:03:21 +0000 (18:03 +0300)]
test: use LDFLAGS in test/Makefile.local
Apparently the test binaries are built with minimal LDFLAGS, only
adding dependency specific LDFLAGS as needed. However because some of
the test binaries incorporate notmuch object files, it is necessary to
use the same link flags as notmuch. For example user provided
CFLAGS/CXXFLAGS/LDFLAGS with -fsanitize=undefined fails to build the
test binaries if the flags differ.
David Bremner [Sat, 18 Oct 2014 07:22:35 +0000 (09:22 +0200)]
test: add simple tests for post-insert hook
Most of the existing tests for pre/post-new hook don't seem to apply.
Jani Nikula [Sun, 28 Sep 2014 14:40:59 +0000 (17:40 +0300)]
cli/insert: add post-insert hook
The post-new hook might no longer be needed or run very often if
notmuch insert is being used. Therefore a post-insert hook is needed
(arguably pre-insert not so much, so don't add one). Also add the
--no-hooks option to skip hooks.
Jani Nikula [Mon, 27 Oct 2014 17:59:34 +0000 (19:59 +0200)]
gitignore: ignore sh.config and doc/config.dox
Jani Nikula [Tue, 28 Oct 2014 08:17:26 +0000 (09:17 +0100)]
cli: cast timeval fields to long for format
This hides platform differences between struct timeval field types.
David Edmondson [Wed, 22 Oct 2014 06:05:33 +0000 (07:05 +0100)]
emacs: notmuch-jump.el should provide.
To ease loading, notmuch-jump.el should provide 'notmuch-jump.
Austin Clements [Thu, 23 Oct 2014 12:30:41 +0000 (08:30 -0400)]
lib: Remove unnecessary thread linking steps when using ghost messages
Previously, it was necessary to link new messages to children to work
around some (though not all) problems with the old metadata-based
approach to stored thread IDs. With ghost messages, this is no longer
necessary, so don't bother with child linking when ghost messages are
in use.
Austin Clements [Thu, 23 Oct 2014 12:30:40 +0000 (08:30 -0400)]
test: Test upgrade to ghost messages feature
Austin Clements [Thu, 23 Oct 2014 12:30:39 +0000 (08:30 -0400)]
lib: Enable ghost messages feature
This fixes the broken thread order test.
Austin Clements [Thu, 23 Oct 2014 12:30:38 +0000 (08:30 -0400)]
lib: Implement upgrade to ghost messages feature
Somehow this is the first upgrade pass that actually does *any* error
checking, so this also adds the bit of necessary infrastructure to
handle that.
Austin Clements [Thu, 23 Oct 2014 12:30:37 +0000 (08:30 -0400)]
lib: Implement ghost-based thread linking
This updates the thread linking code to use ghost messages instead of
user metadata to link messages into threads.
In contrast with the old approach, this is actually correct.
Previously, thread merging updated only the thread IDs of message
documents, not thread IDs stored in user metadata. As originally
diagnosed by Mark Walters [1] and as demonstrated by the broken
T260-thread-order test, this can cause notmuch to fail to link
messages even though they're in the same thread. In principle the old
approach could have been fixed by updating the user metadata thread
IDs as well, but these are not indexed and hence this would have
required a full scan of all stored thread IDs. Ghost messages solve
this problem naturally by reusing the exact same thread ID and message
ID representation and indexing as regular messages.
Furthermore, thanks to this greater symmetry, ghost messages are also
algorithmically simpler. We continue to support the old user metadata
format, so this patch can't delete any code, but when we do remove
support for the old format, several functions can simply be deleted.
[1] id:8738h7kv2q.fsf@qmul.ac.uk
Austin Clements [Thu, 23 Oct 2014 12:30:36 +0000 (08:30 -0400)]
lib: Internal support for querying and creating ghost messages
This updates the message abstraction to support ghost messages: it
adds a message flag that distinguishes regular messages from ghost
messages, and an internal function for initializing a newly created
(blank) message as a ghost message.
Austin Clements [Fri, 24 Oct 2014 12:49:15 +0000 (08:49 -0400)]
lib: Introduce macros for bit operations
These macros help clarify basic bit-twiddling code and are written to
be robust against C undefined behavior of shift operators.
Austin Clements [Thu, 23 Oct 2014 12:30:34 +0000 (08:30 -0400)]
lib: Update database schema doc for ghost messages
This describes the structure of ghost mail documents. Ghost messages
are not yet implemented.
Austin Clements [Thu, 23 Oct 2014 12:30:33 +0000 (08:30 -0400)]
lib: Add a ghost messages database feature
This will be implemented over the next several patches. The feature
is not yet "enabled" (this does not add it to
NOTMUCH_FEATURES_CURRENT).
David Bremner [Sat, 25 Oct 2014 16:55:25 +0000 (18:55 +0200)]
Merge tag '0.18.2'
notmuch 0.18.2 release
David Bremner [Sat, 25 Oct 2014 16:23:33 +0000 (18:23 +0200)]
debian: add changelog stanza for 0.18.2-1
David Bremner [Sat, 25 Oct 2014 16:23:06 +0000 (18:23 +0200)]
version: bump to 0.18.2
No non-documentation changes
David Bremner [Sat, 25 Oct 2014 10:10:05 +0000 (12:10 +0200)]
NEWS: give real entry for 0.18.2
Expand out what the actual test suite changes are, so people have a
better idea if the release is relevant to them.
David Bremner [Sat, 25 Oct 2014 09:38:18 +0000 (11:38 +0200)]
Merge tag '0.18.2_rc1'
notmuch 0.18.2~rc1 release
Conflicts:
NEWS
debian/changelog