David Edmondson [Tue, 12 Apr 2016 08:04:04 +0000 (09:04 +0100)]
emacs: Don't indent multipart sub-parts during reply.
When generating cited messages for replay, override any existing
setting for `notmuch-show-indent-multipart' to ensure that no
indentation occurs.
David Bremner [Sat, 16 Apr 2016 11:45:56 +0000 (08:45 -0300)]
debian: minimal changelog for 0.22~rc0-1
David Bremner [Sat, 16 Apr 2016 11:44:39 +0000 (08:44 -0300)]
version: bump to 0.22~rc0
Jani Nikula [Wed, 13 Apr 2016 18:08:45 +0000 (21:08 +0300)]
bindings: drop build time message on missing ruby dependency
The usual make message on everything being up to date is:
make: Nothing to be done for 'all'.
However, since
commit
d038b9320949c79503fe4b76870aaabf279405ab
Author: David Bremner <david@tethera.net>
Date: Mon Jun 1 09:08:59 2015 +0200
build: integrate building ruby bindings into notmuch build process
if one doesn't have the ruby dependencies installed, the message has
been:
Missing dependency, skipping ruby bindings
Restore the usual behaviour by dropping the message. It's redundant
during build anyway, since the configure script already outputs:
Checking for ruby development files... No (skipping ruby bindings)
Chunyang Xu [Wed, 13 Apr 2016 07:58:48 +0000 (03:58 -0400)]
emacs: Add notmuch homepage to package header
So user can find out notmuch's homepage with:
C-h P ('describe-package') notmuch
Chunyang Xu [Wed, 13 Apr 2016 07:58:47 +0000 (03:58 -0400)]
emacs: Fix packaging
Refer to (info "(elisp) Library Headers") for package conventions.
Daniel Kahn Gillmor [Sat, 9 Apr 2016 01:54:52 +0000 (22:54 -0300)]
complete ghost-on-removal-when-shared-thread-exists
To fully complete the ghost-on-removal-when-shared-thread-exists
proposal, we need to clear all ghost messages when the last active
message is removed from a thread.
Amended by db: Remove the last test of T530, as it no longer makes sense
if we are garbage collecting ghost messages.
Daniel Kahn Gillmor [Sat, 9 Apr 2016 01:54:51 +0000 (22:54 -0300)]
On deletion, replace with ghost when other active messages in thread
There is no need to add a ghost message upon deletion if there are no
other active messages in the thread.
Also, if the message being deleted was a ghost already, we can just go
ahead and delete it.
Daniel Kahn Gillmor [Sat, 9 Apr 2016 01:54:50 +0000 (22:54 -0300)]
Introduce _notmuch_message_has_term()
It can be useful to easily tell if a given message has a given term
associated with it.
Daniel Kahn Gillmor [Sat, 9 Apr 2016 01:54:49 +0000 (22:54 -0300)]
Add internal functions to search for alternate doc types
Publicly we are only exposing the non-ghost documents (of "type"
"mail"). But internally we might want to inspect the ghost messages
as well.
This changeset adds two new private interfaces to queries to recover
information about alternate document types.
Daniel Kahn Gillmor [Sat, 9 Apr 2016 01:54:48 +0000 (22:54 -0300)]
fix thread breakage via ghost-on-removal
implement ghost-on-removal, the solution to T590-thread-breakage.sh
that just adds a ghost message after removing each message.
It leaks information about whether we've ever seen a given message id,
but it's a fairly simple implementation.
Note that _resolve_message_id_to_thread_id already introduces new
message_ids to the database, so i think just searching for a given
message ID may introduce the same metadata leakage.
Daniel Kahn Gillmor [Sat, 9 Apr 2016 01:54:47 +0000 (22:54 -0300)]
test thread breakage when messages are removed and re-added
This test (T590-thread-breakage.sh) has known-broken subtests.
If you have a two-message thread where message "B" is in-reply-to "A",
notmuch rightly sees this as a single thread.
But if you:
* remove "A" from the message store
* run "notmuch new"
* add "A" back into the message store
* re-run "notmuch new"
Then notmuch sees the messages as distinct threads.
This happens because if you insert "B" initially (before anything is
known about "A"), then a "ghost message" gets added to the database in
reference to "A" that is in the same thread, which "A" takes over when
it appears.
But if "A" is subsequently removed, no ghost message is retained, so
when "A" appears, it is treated as a new thread.
I see a few options to fix this:
ghost-on-removal
----------------
We could unilaterally add a ghost upon message removal. This has a
few disadvantages: the message index would leak information about what
messages the user has ever been exposed to, and we also create a
perpetually-growing dataset -- the ghosts can never be removed.
ghost-on-removal-when-shared-thread-exists
------------------------------------------
We could add a ghost upon message removal iff there are other
non-ghost messages with the same thread ID.
We'd also need to remove all ghost messages that share a thread when
the last non-ghost message in that thread is removed.
This still has a bit of information leakage, though: the message index
would reveal that i've seen a newer message in a thread, even if i had
deleted it from my message store
track-dependencies
------------------
rather than a simple "ghost-message" we could store all the (A,B)
message-reference pairs internally, showing which messages A reference
which other messages B.
Then removal of message X would require deleting all message-reference
pairs (X,B), and only deleting a ghost message if no (A,X) reference
pair exists.
This requires modifying the database by adding a new and fairly weird
table that would need to be indexed by both columns. I don't know
whether xapian has nice ways to do that.
scan-dependencies
-----------------
Without modifying the database, we could do something less efficient.
Upon removal of message X, we could scan the headers of all non-ghost
messages that share a thread with X. If any of those messages refers
to X, we would add a ghost message. If none of them do, then we would
just drop X entirely from the table.
---------------------
One risk of attempted fixes to this problem is that we could fail to
remove the search term indexes entirely. This test contains
additional subtests to guard against that.
This test also ensures that the right number of ghost messages exist
in each situation; this will help us ensure we don't accumulate ghosts
indefinitely or leak too much information about what messages we've
seen or not seen, while still making it easy to reassemble threads
when messages come in out-of-order.
David Bremner [Sat, 9 Apr 2016 01:54:46 +0000 (22:54 -0300)]
test: add test-binary to print the number of ghost messages
This one-liner seems preferable to the complications of depending on
delve, getting the binary name right and parsing the output.
Jani Nikula [Sun, 10 Apr 2016 19:43:23 +0000 (22:43 +0300)]
lib: clean up _notmuch_database_split_path
Make the logic it a bit easier to read. No functional changes.
Jani Nikula [Sun, 10 Apr 2016 19:43:22 +0000 (22:43 +0300)]
lib: fix handling of one character long directory names at top level
The code to skip multiple slashes in _notmuch_database_split_path()
skips back one character too much. This is compensated by a +1 in the
length parameter to the strndup() call. Mostly this works fine, but if
the path is to a file under a top level directory with one character
long name, the directory part is mistaken to be part of the file name
(slash == path in code). The returned directory name will be the empty
string and the basename will be the full path, breaking the indexing
logic in notmuch new.
Fix the multiple slash skipping to keep the slash variable pointing at
the last slash, and adjust strndup() accordingly.
The bug was introduced in
commit
e890b0cf4011fd9fd77ebd87343379e4a778888b
Author: Carl Worth <cworth@cworth.org>
Date: Sat Dec 19 13:20:26 2009 -0800
database: Store the parent ID for each directory document.
just a little over two months after the initial commit in the Notmuch
code history, making this the longest living bug in Notmuch to date.
Jani Nikula [Sun, 10 Apr 2016 19:43:21 +0000 (22:43 +0300)]
test: test one character long directory names at top level
Yes, it's broken. Reported by h01ger on IRC.
David Bremner [Sat, 9 Apr 2016 01:49:50 +0000 (22:49 -0300)]
test: cope with glass backend file naming variations
In several places in the test suite we intentionally corrupt the Xapian
database in order to test error handling. This corruption is specific to
the on-disk organization of the database, and that changed with the
glass backend. We use the previously computed default backend to make
the tests adapt to changing names.
David Bremner [Sat, 9 Apr 2016 01:49:49 +0000 (22:49 -0300)]
configure: add test for default xapian backend
This is mainly for the test suite. We already expect the tests to be
run in the same environment as configure was run, at least to get the
name of the python interpreter. So we are not really imposing a new
restriction.
David Bremner [Sat, 9 Apr 2016 01:49:48 +0000 (22:49 -0300)]
test/atomicity: guard chert-only optimization
This should potentially be updated to have an equivalent optimization
for the glass backend, but it in my unscientific tests, the glass backend
without the optimization is faster then the chert backend with.
David Bremner [Sat, 9 Apr 2016 01:49:47 +0000 (22:49 -0300)]
test: improve error handling in lib-error tests
There is at least one bug fixed here (missing parameter to printf), even
if exiting via segfault is considered OK.
aeuii@posteo.de [Fri, 8 Apr 2016 21:43:27 +0000 (23:43 +0200)]
emacs: make use of `message-make-from'
Please put my address in CC when replying. Thanks!
From
4b9ab261a0ea8a31065e310c5150f522be86d37b Mon Sep 17 00:00:00 2001
From: stefan <aeuii@posteo.de>
Date: Fri, 8 Apr 2016 22:47:06 +0200
Subject: [PATCH] emacs: make use of `message-make-from'
Will respect `mail-from-style'.
David Edmondson [Sun, 3 Apr 2016 15:38:22 +0000 (16:38 +0100)]
emacs: Always insert crypto buttons.
When no decryption or signature examination is
happening (i.e. `notmuch-crypto-process-mime' is `nil') insert buttons
that indicate this, rather than remaining silent.
David Edmondson [Sun, 3 Apr 2016 16:04:38 +0000 (17:04 +0100)]
emacs: Allow part preferences to depend on message content.
Currently the preference for which sub-part of a multipart/alternative
part is shown is global. Allow to the user to override the settings on a
per-message basis by providing the ability to call a function that has
access to the message to return the discouraged type list.
The original approach is retained as the default.
David Bremner [Sat, 26 Mar 2016 17:57:11 +0000 (14:57 -0300)]
configure: autodetect xapian-1.3
Mimic the handling of python2 versus python3. In particular if both
xapian-config and xapian-config-1.3 are found, use xapian-config
David Bremner [Wed, 30 Mar 2016 02:03:02 +0000 (23:03 -0300)]
cli/new: add better error messages for FILE_ERROR
The code in add_file seems to assume that NOTMUCH_STATUS_FILE_ERROR is
never returned from add_message. This turns out to be false (although it
seems to only happen in certain fairly rare race conditions).
David Bremner [Sun, 10 Jan 2016 01:34:21 +0000 (21:34 -0400)]
CLI: add print_status_database
This could probably be used at quite a few places in the existing code,
but in the immediate future I plan to use in some new code in
notmuch-dump
David Bremner [Sun, 27 Mar 2016 20:25:11 +0000 (17:25 -0300)]
nmbug: ignore # comments
Lines starting with # have always (for a long time, anyway) been ignored
by notmuch-restore, but have not been generated by notmuch-dump
previously. In order to make nmbug robust against such output, ignore
comment lines.
David Edmondson [Tue, 8 Mar 2016 17:12:59 +0000 (17:12 +0000)]
emacs: Improve the acquisition of text parts.
`notmuch-get-bodypart-text' assumed that it is always possible to
acquire text/* parts via the sexp output format. This is not true if the
part in question has a content type of application/octet-stream but is
being interpreted as text/* based on the extension of the part filename.
Rework `notmuch-get-bodypart-text' to use the raw output format to
address this and make the implementation common with that of
`notmuch-get-bodypart-binary'.
David Edmondson [Tue, 8 Mar 2016 17:12:58 +0000 (17:12 +0000)]
emacs: Neaten `notmuch-show-insert-bodypart-internal'.
David Edmondson [Tue, 8 Mar 2016 17:12:57 +0000 (17:12 +0000)]
emacs: `notmuch-show-insert-part-multipart/encrypted' should not assume the presence of a button.
Missed in
c802d12a1e43fe69f2fcf7a2f7d44018a55bfb65.
Tomi Ollila [Sat, 19 Mar 2016 15:50:29 +0000 (17:50 +0200)]
test/test-lib.el: revert setting notmuch-mua-reply-insert-header-p-function
in
d27d90875dfb1 (2016-02-20) notmuch-mua-reply-insert-header-p-function
was set to notmuch-show-reply-insert-header-p-never as its default was
changed to something else. Now that default is set back to *-never so
this change done in
d27d90875dfb1 is not needed anymore.
W. Trevor King [Thu, 24 Mar 2016 17:08:18 +0000 (10:08 -0700)]
NEWS: Consolidate nmbug-status and notmuch-report sections
These are the same tool; the nmbug-status text just landed before the
name change. We can also drop the message-url details from NEWS,
since they're already in the man page.
David Edmondson [Mon, 8 Feb 2016 11:34:22 +0000 (11:34 +0000)]
emacs: `notmuch-show-forward-message' can use `notmuch-mua-new-forward-messages'
Which allows `notmuch-mua-new-forward-message' to be removed.
David Edmondson [Mon, 8 Feb 2016 11:34:21 +0000 (11:34 +0000)]
emacs: Add `notmuch-show-forward-open-messages'.
Add a function to forward all open messages in the current view of a
thread. Bind this to "F".
David Edmondson [Tue, 9 Feb 2016 12:23:49 +0000 (12:23 +0000)]
emacs: Improve crypto button labels.
Make the labels for both encryption and signature buttons share a common
format, in which both report the status if it is not one of those known.
W. Trevor King [Sat, 2 Jan 2016 06:08:05 +0000 (22:08 -0800)]
NEWS: Document the notmuch-report branch
W. Trevor King [Sat, 2 Jan 2016 06:08:04 +0000 (22:08 -0800)]
notmuch-report: Add notmuch-report(1) and notmuch-report.json(5) man pages
To describe the script and config file format, so folks don't have to
dig through NEWS or the script's source to get that information.
The Makefile and conf.py are excerpted from the main doc/ directory
with minor simplifications and adjustments. The devel/nmbug/ scripts
are largely independent of notmuch, and separating the docs here
allows packagers to easily build the docs and install the scripts in a
separate package, without complicating notmuch's core build/install
process.
W. Trevor King [Sat, 2 Jan 2016 06:08:03 +0000 (22:08 -0800)]
notmuch-report.json: Rename from status-config.json
status-config.json wasn't obviously associated with the old
nmubg-status, now notmuch-report. The new name is
${CONFIGURED_SCRIPT}.json, so the association should be clear.
W. Trevor King [Sat, 2 Jan 2016 06:08:02 +0000 (22:08 -0800)]
notmuch-report: Rename from nmbug-status
This script generates reports based on notmuch queries, and doesn't
really have anything to do with nmbug, except for sharing the NMBGIT
environment variable.
W. Trevor King [Sat, 2 Jan 2016 06:07:43 +0000 (22:07 -0800)]
status-config.json: Remove parens from query entry
These are now added by nmbug-status.
W. Trevor King [Sat, 2 Jan 2016 06:07:42 +0000 (22:07 -0800)]
nmbug-status: Wrap query phrases in parentheses when and-ing together
For example:
"query": ["tag:a", "tag:b or tag:c"]
is now converted to:
( tag:a ) and ( tag:b or tag:c )
instead of the old:
tag:a and tag:b or tag:c
This helps us avoid confusion due to Xapian's higher-precedence AND
[1], where the old query would be interpreted as:
( tag:a and tag:b ) or tag:c
[1]: http://xapian.org/docs/queryparser.html
W. Trevor King [Sat, 2 Jan 2016 06:07:41 +0000 (22:07 -0800)]
nmbug-status: Add meta.message-url config setting
So you can link to archives other than Gmane. For example, I'm doing
this in [1].
[1]: https://github.com/wking/nmbug-oci
Nicolas Petton [Wed, 16 Mar 2016 08:19:55 +0000 (09:19 +0100)]
emacs: Change the default notmuch-mua-reply-insert-header-p-function
Set notmuch-show-reply-insert-header-p-never as the default value for
notmuch-mua-reply-insert-header-p-function.
Michal Sojka [Tue, 29 Dec 2015 21:55:40 +0000 (22:55 +0100)]
doc/reply: Clarify how reply-to header is handled
Current documentation and comments in the code do not correspond to
the actual code and tests in the test suite ("Un-munging Reply-To" in
T230-reply-to-sender.sh). Fix it.
David Bremner [Fri, 29 Jan 2016 11:53:13 +0000 (07:53 -0400)]
test: canonicalize quotes in xapian error messages
These differ between 1.2 and 1.3, so we transform the 1.2 backquote to a
single quote for compatibility
David Bremner [Fri, 29 Jan 2016 11:53:11 +0000 (07:53 -0400)]
test: replace single giant term with large phrase
We only need a long string, not a single long term to trigger batch
mode. The giant term triggers a bug/incompatibility in Xapian 1.3.4
that throws an exception because it is longer than the Xapian term size
limit.
Tomi Ollila [Tue, 1 Mar 2016 19:30:07 +0000 (21:30 +0200)]
lib: NOTMUCH_DEPRECATED macro also for older compilers
Some compilers (older than gcc 4.5 and clang 2.9) do support
__attribute__ ((deprecated)) but not
__attribute__ ((deprecated("message"))).
Check if clang version is at least 3.0, or gcc version
is at least 4.5 to define NOTMUCH_DEPRECATED as the
latter variant above. Otherwise define NOTMUCH_DEPRECATED
as the former variant above.
For a bit simpler implementation clang 2.9 is not included
to use the newer variant. It is just one release, and the
older one works fine. Clang 3.0 was released around 2011-11
and gcc 5.1 2015-04-22 (therefore newer macro for gcc 4.5+)
Jani Nikula [Sun, 13 Mar 2016 12:27:17 +0000 (14:27 +0200)]
emacs: hello: promote '?' as the universal help key
Move the brief help text at the bottom of the hello screen to the
notmuch-hello-mode help, and promote '?' as the universal help key
across Notmuch. This unclutters the hello screen, and allows for a
more verbose description in the mode help. Hopefully, this change is
useful for both experienced and new users alike.
While at it, improve the links to Notmuch and hello screen
customization.
Justus Winter [Mon, 14 Mar 2016 19:29:08 +0000 (20:29 +0100)]
python: update the README
Signed-off-by: Justus Winter <justus@gnupg.org>
Tomi Ollila [Fri, 12 Feb 2016 19:17:00 +0000 (21:17 +0200)]
test/README: have matching test script file names
A while ago test script names were changed to format
Tddd-basename.sh. Update README to reflect that.
While at it, included some small requirements updates.
David Bremner [Sat, 13 Feb 2016 17:11:19 +0000 (13:11 -0400)]
STYLE: suggest long names
Hopefully the exceptions are common sense.
David Bremner [Sat, 13 Feb 2016 17:11:18 +0000 (13:11 -0400)]
STYLE: document some rules about variable declarations
No-one seemed opposed to C99 style loop variable declarations. The
requirement to declare variables at the top of blocks is maybe a little
more contested, but I believe it reflects the status quo.
Mark Walters [Tue, 23 Feb 2016 21:47:01 +0000 (21:47 +0000)]
NEWS: updates for reply changes
Also include NEWS for the filter/limit keybinding change.
David Edmondson [Sat, 20 Feb 2016 18:24:40 +0000 (18:24 +0000)]
emacs/mua: Let user specify which parts get a header in citations.
Add a customizable function specifying which parts get a header when
replying, and give some sensible possiblities. These are,
1) all parts except multipart/*. (Subparts of a multipart part do
receive a header button.)
2) only included text/* parts.
3) Exactly as in the show buffer.
4) None at all. This means the reply contains a mish-mash of all the
original message's parts.
In the test suite we set the choice to option 4 to match the
previous behaviour.
David Edmondson [Sat, 20 Feb 2016 18:24:39 +0000 (18:24 +0000)]
emacs/show: Remove the 'no-buttons option of `notmuch-show-insert-bodypart'
No code uses the 'no-buttons argument to
`notmuch-show-insert-bodypart', so remove it.
David Edmondson [Sat, 20 Feb 2016 18:24:38 +0000 (18:24 +0000)]
emacs/mua: Generate improved cited text for replies
Use the message display code to generate message text to cite in
replies.
For now we set insert-headers-p function to
notmuch-show-reply-insert-header-p-never so that, as before, we don't
insert part buttons.
With that choice of insert-headers-p function there is only one
failing test: this test has a text part (an email message) listed as
application/octet-stream. Notmuch show displays this part, but the
reply code omitted it as it had type application/octet-stream. The new
code correctly includes it. Thus update the expected output to match.
David Edmondson [Sat, 20 Feb 2016 18:24:37 +0000 (18:24 +0000)]
emacs/show: Accommodate the lack of part header buttons
Various pieces of code assumed (reasonably) that part header buttons
are present. Modify them to avoid problems if no part headers were
inserted.
David Edmondson [Sat, 20 Feb 2016 18:24:36 +0000 (18:24 +0000)]
emacs/show: Make the insertion of part headers overridable.
This allows callers of notmuch-show-insert-bodypart to use a `let'
binding to override the default function for specifying when part
headers should be inserted.
We also add an option to never show part buttons which will be used by
the test suites for the reply tests.
David Edmondson [Sat, 20 Feb 2016 18:24:35 +0000 (18:24 +0000)]
emacs/show: Re-arrange determination if a part header is necessary
Move the determination of whether a part header is required to a
distinct function.
David Edmondson [Thu, 11 Feb 2016 08:33:27 +0000 (08:33 +0000)]
emacs: Report a lack of matches when calling `notmuch-show'.
If the basic query passed to `notmuch-show' generates no results, ring
the bell and inform the user that no messages matched the query rather
than displaying an empty buffer and showing an obscure error.
Similarly when refreshing a `notmuch-show' buffer and no messages match.
Mark Walters [Sat, 13 Jun 2015 08:08:10 +0000 (09:08 +0100)]
emacs: Bind filter in search to 'l'
Change the key binding for filter (or "limit") in search-mode. This
gives consistency with the new filter in show-mode, and frees 'f' for
forward-thread in the future.
Tomi Ollila [Fri, 22 Jan 2016 22:01:53 +0000 (00:01 +0200)]
configure: pass HAVE_TIMEGM to build
Checking the existence of timegm() function and setting
configure internal variable ${have_timegm} was done, but
actually defining HAVE_TIMEGM in build was not done --
meaning that compat timegm() was always part of final
notmuch binaries.
David Bremner [Fri, 29 Jan 2016 11:53:12 +0000 (07:53 -0400)]
test: fix typo in informational message
Thanks to Olly Betts for noticing
David Edmondson [Sat, 6 Feb 2016 17:55:43 +0000 (17:55 +0000)]
emacs: Fix compiler warnings.
notmuch-mua.el should declare functions that it uses from
notmuch-maildir-fcc.el.
Daniel Kahn Gillmor [Wed, 10 Feb 2016 16:53:46 +0000 (11:53 -0500)]
notmuch.Database.remove_message should raise exception on failure
The notmuch python bindings document that database.remove_message
should raise an exception when the message removal fails, but they
don't actually do it.
David Bremner [Sun, 16 Aug 2015 17:41:16 +0000 (19:41 +0200)]
debian: add gpgsm as build dependency
It's not needed for the actual build, but it is needed to run the
SMIME tests; <!nocheck> means it can be omitted if the tests are not
going to be run.
Jameson Graef Rollins [Sun, 16 Aug 2015 17:41:15 +0000 (19:41 +0200)]
debian: Recommend gpgsm for S/MIME support
Jani Nikula [Sun, 16 Aug 2015 17:41:14 +0000 (19:41 +0200)]
cli: crypto: S/MIME verification support
notmuch-show --verify will now also process S/MIME multiparts if
encountered. Requires gmime-2.6 and gpgsm.
Based on work by Jameson Graef Rollins <jrollins@finestructure.net>.
David Bremner [Sun, 16 Aug 2015 17:41:13 +0000 (19:41 +0200)]
test: add broken S/MIME signature verification test for notmuch CLI
The test is pretty much cut and paste from the PGP/MIME version, with
obvious updates taken from notmuch output. This also requires setting
up gpgsm infrastucture.
David Bremner [Sun, 16 Aug 2015 17:41:12 +0000 (19:41 +0200)]
test: initial tests for S/MIME and notmuch-emacs
Test the ability of notmuch-mua-mail to send S/MIME signed (and
encrypted) messages; this really relies on existing functionality in
message-mode.
The generated keys and messages will later be useful for testing the
notmuch CLI.
David Bremner [Sat, 23 Jan 2016 12:49:26 +0000 (08:49 -0400)]
test: refactor directory name sanitization
test_C and notmuch_search_files_sanitize were giving different output on
the same path, which is not technically wrong, but slightly
confusing.
Daniel Kahn Gillmor [Fri, 15 Jan 2016 05:23:10 +0000 (00:23 -0500)]
clean up stray apostrophe in comment
This is a nit-picky orthographical fix for an nit-picky ontological
comment.
Daniel Kahn Gillmor [Fri, 15 Jan 2016 19:02:38 +0000 (14:02 -0500)]
correct comment referring to notmuch_database_remove_message
notmuch_database_remove_message has no leading underscore in its name.
Tomi Ollila [Wed, 6 Jan 2016 19:04:03 +0000 (21:04 +0200)]
devel/emacs: add devel/try-emacs-mua
devel/try-emacs-mua provides an easy way to try and experiment
with the notmuch emacs client distributed in emacs subdirectory of
the notmuch source tree.
try-emacs-mua starts a new emacs process and if initial checks pass
*scratch* buffer is filled with information of how to begin.
Normal emacs command line arguments can be used, like -q or -Q.
These arguments are appended verbatim to the starting emacs process.
If the emacs version in use is smaller than 24.4, special care is taken
to ensure that notmuch*.elc files older than corresponding .el files
are not loaded. Since emacs 24.4, setting `load-prefer-newer' variable
takes care of this.
W. Trevor King [Wed, 30 Dec 2015 21:04:13 +0000 (13:04 -0800)]
nmbug-status: Fix unbalanced <p> tags in default header/footer
These were broken by
b70386a4 (Move the generated date from the top of
the page to the footer, 2014-05-31), which moved 'Generated ...' to
the footer with the opening tag, but didn't replace the blurb opening
tag or add a closing tag after 'Generated ...'.
W. Trevor King [Thu, 7 Jan 2016 13:51:29 +0000 (05:51 -0800)]
nmbug-status: Style headers with smaller fonts
We only use h1 through h3, and David prefers smaller headers [1], so
shift over to the font sizes usually used for h2 through h4 [2,3,4].
I haven't bothered with the W3C's default margins, since a bit of
extra whitespace doesn't seem like a big deal.
[1]: id:87k2nl8r0k.fsf@zancas.localnet
http://article.gmane.org/gmane.mail.notmuch.general/21595
[2]: http://www.w3.org/TR/html-markup/h2.html
[3]: http://www.w3.org/TR/html-markup/h3.html
[4]: http://www.w3.org/TR/html-markup/h4.html
W. Trevor King [Wed, 30 Dec 2015 21:04:12 +0000 (13:04 -0800)]
nmbug-status: Adjust headers to start with h1
We've been leading off with h2s since
3e5fb88f (contrib/nmbug: add
nmbug-status script, 2012-07-07), but the semantically-correct headers
are:
<h1>{title}</h1>
...
<h2>Views</h2>
...
<h3>View 1</h3>
...
<h3>View 2</h3>
...
We can always add additional CSS if the default h1 formatting is too
intense.
Justus Winter [Fri, 8 Jan 2016 12:56:10 +0000 (13:56 +0100)]
python: cleanup imports
Drop unused imports, and avoid warning about unused imports when we
import something on behalf of another module.
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
Justus Winter [Fri, 8 Jan 2016 11:27:20 +0000 (12:27 +0100)]
python: Remove {Filenames,Threads}.__len__
Remove the __len__ functions, as they exhaust the iterator, breaking
'list(x)'.
This is a follow-up to
8866a89e.
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
Justus Winter [Thu, 24 Dec 2015 12:57:21 +0000 (13:57 +0100)]
python: update bindings for the new query search API
Use 'notmuch_query_search_{threads,messages}_st' instead of their
deprecated counterpart.
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
Justus Winter [Thu, 24 Dec 2015 11:51:30 +0000 (12:51 +0100)]
python: add new errors
Add support for the new notmuch status codes UNSUPPORTED_OPERATION,
UPGRADE_REQUIRED, and PATH_ERROR.
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
Justus Winter [Thu, 24 Dec 2015 11:41:24 +0000 (12:41 +0100)]
python: add missing import
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
Michal Sojka [Wed, 6 Jan 2016 21:28:45 +0000 (22:28 +0100)]
emacs: Don't use nconc on quoted list
As pointed out by David Bremner, Elisp manual says "A common pitfall
is to use a quoted constant list as a non-last argument to ‘nconc’."
Since this was the case in recently added code, we fix it here.
Michal Sojka [Sat, 2 Jan 2016 16:47:45 +0000 (17:47 +0100)]
emacs: Handle switch-function argument of notmuch-mua-mail
notmuch-mua-mail ignored the switch-function argument and always used
the function returned by notmuch-mua-get-switch-function instead. In
order to support standard emacs interfaces (compose-mail in this
case), this commit changes notmuch-mua-mail to use the switch-function
argument if it is non-nil and notmuch-mua-get-switch-function
otherwise.
Michal Sojka [Sat, 2 Jan 2016 16:47:44 +0000 (17:47 +0100)]
emacs: Refactor notmuch-mua-mail
This should be more readable.
Michal Sojka [Sat, 2 Jan 2016 16:47:43 +0000 (17:47 +0100)]
emacs: Fix mail composition under Emacs 23
Commit
570c0aeb40bd0c3af8174624a55e968f62c44f09 reworked
notmuch-mua-mail function in a way that worked only under Emacs 24.
The reason was that message-setup-1 took one argument less in Emacs
23.
We fix this by only supplying the return-action argument when it is
actually set by the caller.
Daniel Kahn Gillmor [Sat, 12 Dec 2015 19:22:12 +0000 (14:22 -0500)]
python: fix argument for filenames_destroy
W. Trevor King [Sat, 2 Jan 2016 06:07:40 +0000 (22:07 -0800)]
NEWS: Remove trailing comma from an old nmbug-status config
That closing brace is the end of the config JSON; there won't be
anything coming after it.
W. Trevor King [Sat, 2 Jan 2016 06:08:01 +0000 (22:08 -0800)]
nmbug-status: Avoid hard-coded filename in error message
We already have a 'filename' variable with the name, so stay DRY and
use that variable here.
Also fix a missing-whitespace error from
bed8b674 (nmbug-status:
Clarify errors for illegible configs, 2014-05-10), wrapping on the
sentence to match similar error-generation earlier in this function.
Michal Sojka [Mon, 21 Dec 2015 09:41:15 +0000 (10:41 +0100)]
emacs: Improve notmuch-message-mode initialization
Recent addition of notmuch-message-mode introduced several problems:
1. When message-setup-hook is used to set buffer local variables,
these settings are not effective, because all buffer local
variables are immediately erased by notmuch-message-mode
initialization.
2. message-mode-hook gets invoked twice - first when message-mail
invokes message-mode and second when notmuch-mua-mail invokes
notmuch-message-mode.
This commit fixes these problems by replacing a call to message-mail
with notmuch-specific code that is (hopefully) equivalent to
message-mail functionality before introduction of
notmuch-message-mode.
We first initialize notmuch-message-mode with
notmuch-mua-pop-to-buffer, which is a modified version of
message-pop-to-buffer and then call message-setup-1, which is the only
functionality of message-mail that is needed for notmuch.
Jani Nikula [Tue, 3 Nov 2015 19:49:29 +0000 (21:49 +0200)]
cli: fix function name in notmuch new debug logging
add_files_recursive has been renamed add_files long ago.
Jani Nikula [Mon, 14 Dec 2015 13:38:52 +0000 (09:38 -0400)]
cli: let the user know which protocol is unknown or unsupported
The current error message is not helpful.
Jani Nikula [Mon, 14 Dec 2015 13:38:51 +0000 (09:38 -0400)]
crypto: make crypto ctx initialization an array
Make it trivial to add handlers for new protocols without duplicating
code. No functional changes.
Jani Nikula [Mon, 14 Dec 2015 13:38:50 +0000 (09:38 -0400)]
crypto: refactor context creation to facilitate further work
Let the context creation functions decide how to handle multiple calls
and cache the crypto context. No functional changes.
Michal Sojka [Tue, 29 Dec 2015 08:52:17 +0000 (09:52 +0100)]
test: Unset ALTERNATE_EDITOR before running emacsclient
ALTERNATE_EDITOR causes emacsclient to run an alternate editor if the
emacs server is not ready. This can collide with intended
functionality in test-lib.sh.
If the ALTERNATE_EDITOR is set but empty, emacsclient runs emacs
daemon and tries to connect to it. When this happens the emacs run by
test-lib.sh fails to start the server and the subsequent attempts to
use the server fail because the daemon started by emacsclient does not
know about notmuch-test-progn. This leads to test suite failure due to
time out on any emacs test.
Michal Sojka [Tue, 29 Dec 2015 09:30:26 +0000 (10:30 +0100)]
test: Always use paths without symlinks
When notmuch sources are at a symlinked path, some tests fail because
one part of the test uses physical path and another uses logical
path (with symlinks). For example the following test output is
produced when the test is started from /home/src/symlink-to-notmuch,
which is a symlink to /home/src/notmuch.
FAIL notmuch-fcc-dirs set to a string
--- T310-emacs.26.OUTPUT 2015-12-29 08:54:29.
055878637 +0000
+++ T310-emacs.26.EXPECTED 2015-12-29 08:54:29.
055878637 +0000
@@ -1,5 +1,5 @@
From: Notmuch Test Suite <test_suite@notmuchmail.org>
To:
Subject:
-Fcc: /home/src/notmuch/test/tmp.T310-emacs/mail/sent-string
+Fcc: /home/src/symlink-to-notmuch/test/tmp.T310-emacs/mail/sent-string
--text follows this line--
nil
This commit makes all paths in test scripts physical. With it, all
tests pass even when run from a symlinked directory.
Daniel Kahn Gillmor [Thu, 10 Dec 2015 02:16:40 +0000 (21:16 -0500)]
python: add notmuch.Database.status_string()
This gives some additional access to debugging information when using
the python bindings.
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
David Bremner [Sun, 6 Dec 2015 15:59:57 +0000 (11:59 -0400)]
configure: drop use of "pkg-config emacs"
This does not play well with --prefix. As Tomi notes in
id:m2k2p2rwth.fsf@guru.guru-group.fi, people still have the option of e.g.
% ./configure ---emacslispdir=`pkg-config emacs --variable sitepkglispdir`
David Bremner [Mon, 23 Nov 2015 12:40:40 +0000 (08:40 -0400)]
Merge branch 'release'
Merge bugfixes applied directly to release
Mark Walters [Wed, 28 Oct 2015 18:28:39 +0000 (18:28 +0000)]
emacs: poll: return useful errors when poll fails.
Previously poll called from emacs would fail silently. This makes it
return a useful error message.
In the non-deprecated case of notmuch new and appropriate hooks, it
uses notmuch-call-notmuch-process which gives an error and
additionally puts the stdout/stderr etc in the *Notmuch errors*
buffer.
In the deprecated case of a custom poll script it only returns an
error message.
Commit based on a bug report, and a potential fix, by Ketil Malde.