notmuch.git
10 years agodoc: Add rst2html support for building HTML docs doc-build
W. Trevor King [Sat, 10 May 2014 16:40:55 +0000 (09:40 -0700)]
doc: Add rst2html support for building HTML docs

We already fall back to rst2man if Sphinx isn't available for building
the man pages.  With this commit we'll fall back to rst2html for
building the HTML docs too.  The only tricky bit here is that
HAVE_SPHINX explicitly checks for sphinx.writers.manpage.  I'm just
assuming sphinx.writers.html exists, to avoid adding a separate
SPHINX_HTML variable.  However, the HTML builder is Sphinx's default,
so it's hard to imagine it not being installed :p.  Perhaps it would
be better to drop the HAVE_* settings and SPHINXBUILD to use:

* SPHINX2MAN empty for not-available, otherwise path to script that
  can handle '-b manpage'
* SPHINX2HTML empty for not-available, otherwise path to script that
  can handle '-b html'
* RST2MAN empty for not-available, otherwise path to script
* RST2HTML empty for not-available, otherwise path to script

I'm sticking with the less intrusive change for now, but I'm happy
with either approach.

10 years agodoc: Consolidate Makefile targets around {build|install}-{format}
W. Trevor King [Sat, 5 Apr 2014 17:17:03 +0000 (10:17 -0700)]
doc: Consolidate Makefile targets around {build|install}-{format}

The rst2man target was removed in 9d9a700 (doc: build man pages at
build time; introduce HAVE_SPHINX, HAVE_RST2MAN, 2014-03-13), but a
reference in the install docs slipped through.  While I was removing
that reference, I also:

* Converted doc/INSTALL to reStructuredText, so I can link to Sphinx
  and Docutils directly.  Not everyone has access to Debian's
  python-docutils, so it's better to be genric here.
* Converted from an unordered list to paragraphs, because I think it
  flows better.
* Dropped the rst2man no-automatic-install caveat.  I don't think this
  applies to the current code, although I haven't tried to track down
  a commit that adds the automatic-install support.  Anyhow,

    $ make HAVE_SPHINX=0 HAVE_RST2MAN=1 RST2MAN=rst2man.py DESTDIR=/tmp/ install-man

  works for me.
* Restructured the Makefile to use build- and install- prefixes
  consistently, regardless of Sphinx/rst2x backend.
* Instead of disabling the build-man and install-man targets if
  HAVE_SPHINX and HAVE_RST2MAN are both empty, just pull build-man and
  install-man out of the default build tree.  That way:

    $ make HAVE_SPHINX=0 HAVE_RST2MAN=0 build-man

  will fail like it should, instead of successfully doing nothing.  If
  packagers *do* want to force building the docs, despite any config
  settings, you can override the BUILD_MAN and INSTALL_MAN variables:

    $ make BUILD_MAN=build-man all

10 years agodoc/prerst2x.py: Adjust to handle any output format, not just man pages
W. Trevor King [Sat, 10 May 2014 04:51:42 +0000 (21:51 -0700)]
doc/prerst2x.py: Adjust to handle any output format, not just man pages

For example, with these changes we can build HTML output using:

  $ prerst2x.py rst2html ${SRCDIR} ${OUTDIR} html

The extension adjustment ensures that the output filenames from the
above command match what we currently generate with sphinx-html.

10 years agodoc/prerst2man.py: Convert execfile to import
W. Trevor King [Sat, 5 Apr 2014 17:13:55 +0000 (10:13 -0700)]
doc/prerst2man.py: Convert execfile to import

excefile is gone in Python 3 [1].  Instead of exec-ing the
configuration, it's easier to insert the source directory in Python's
path [2], and just import the configuration.  With this change,
prerst2man.py is compatible with both Python 2 and 3.

[1]: https://docs.python.org/3.0/whatsnew/3.0.html#builtins
[2]: https://docs.python.org/3/library/sys.html#sys.path

10 years agodoc: Allow rst2man.py as an alternative to rst2man
W. Trevor King [Sat, 5 Apr 2014 17:04:22 +0000 (10:04 -0700)]
doc: Allow rst2man.py as an alternative to rst2man

Gentoo's dev-python/docutils-0.10 installs Docutils scripts with a
*.py extension, so I have /usr/bin/rst2man.py and no rst2man script.
This patch supports users with both types of systems by checking for
rst2man, falling back on rst2man.py, and giving up only if neither is
found.  Users can also set the new RST2MAN path variable explicitly
when they call Make:

  make RST2MAN=/my/custom/rst_to_man_converter build-man

I use POSIX's 'command -v' [1] to find the path to rst2man or
rst2man.py, and save that as RST2MAN in Makefile.config.  Then pass
the configured RST2MAN path through to prerst2man.py to use in its
system call.

We can use a non-empty RST2MAN to check for the availability of an
rst2man program, so there's no need for a separate HAVE_RST2MAN.
However, we keep the existing HAVE_RST2MAN for consistency with
HAVE_SPHINX.

[1]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html

10 years agoMerge in a few Debian commits.
David Bremner [Thu, 8 May 2014 21:38:42 +0000 (06:38 +0900)]
Merge in a few Debian commits.

10 years agodebian: disable atomicity tests on armel.
David Bremner [Thu, 8 May 2014 05:28:13 +0000 (14:28 +0900)]
debian: disable atomicity tests on armel.

Another temporary fix for build problems.

10 years agodebian: disable atomicity tests on armhf
David Bremner [Wed, 7 May 2014 23:29:15 +0000 (08:29 +0900)]
debian: disable atomicity tests on armhf

In fact a fix for these tests is currently being reviewed, but I want
to roll it together with a few other portability fixes for a point
release.

10 years agoMerge tag '0.18'
David Bremner [Tue, 6 May 2014 08:14:26 +0000 (17:14 +0900)]
Merge tag '0.18'

notmuch 0.18 release

10 years agodebian: changelog stanza for 0.18 0.18
David Bremner [Tue, 6 May 2014 07:27:29 +0000 (16:27 +0900)]
debian: changelog stanza for 0.18

plagiariaze my own summary from upstream NEWS

10 years agoversion: bump to 0.18
David Bremner [Tue, 6 May 2014 07:24:17 +0000 (16:24 +0900)]
version: bump to 0.18

debian changelog to be done seperately.

10 years agoemacs: allow functions in notmuch-show-stash-mlarchive-link-alist
Jani Nikula [Thu, 1 May 2014 12:35:11 +0000 (15:35 +0300)]
emacs: allow functions in notmuch-show-stash-mlarchive-link-alist

Some archives may use a more complicated scheme for referring to
messages than just concatenated url and message-id. In particular,
patchwork requires a query to translate message-id to a patchwork
patch id. Allow functions in notmuch-show-stash-mlarchive-link-alist
to facilitate this.

For example, one could use something like this for patchwork.

(lambda (message-id)
  (concat
   "http://patchwork.example.com/patch/"
   (nth 0
(split-string
 (car (last (process-lines "pwclient" "search" "-n" "1"
   "-m" (concat "<" message-id ">"))))))))

10 years agoMerge tag '0.18_rc1'
David Bremner [Sat, 3 May 2014 23:32:05 +0000 (08:32 +0900)]
Merge tag '0.18_rc1'

notmuch 0.18~rc1 release

10 years agobuild: use UPSTREAM_TAG and not VERSION to generate tarball 0.18_rc1 debian/0.18_rc1-1
David Bremner [Sat, 3 May 2014 23:11:35 +0000 (08:11 +0900)]
build: use UPSTREAM_TAG and not VERSION to generate tarball

The latter can have "~" in it, which is not legal for a git tag.

10 years agodoc/doxygen.cfg: bump version to 0.18
David Bremner [Sat, 3 May 2014 22:38:21 +0000 (07:38 +0900)]
doc/doxygen.cfg: bump version to 0.18

10 years agoversion: bump for 0.18~rc1
David Bremner [Sat, 3 May 2014 22:32:43 +0000 (07:32 +0900)]
version: bump for 0.18~rc1

Doing all of the needed version bumps in one commit, and do a
complete, if minimal debian changelog entry

10 years agovim: improve the way messages are sent
Felipe Contreras [Thu, 1 May 2014 22:57:54 +0000 (17:57 -0500)]
vim: improve the way messages are sent

We want the proper encoding and content-type to be set when sending the
mail, but human-readable plain-text for composing. So split the code in
two parts: the presentation and the transport conversion.

This fixes an issue while sending non-ascii mails to strict servers; the
mail needs to be encoded.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agovim: make the html handler configurable
Paul Roberts [Thu, 1 May 2014 22:57:53 +0000 (17:57 -0500)]
vim: make the html handler configurable

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agovim: fix count_threads variable check
Felipe Contreras [Thu, 1 May 2014 22:57:52 +0000 (17:57 -0500)]
vim: fix count_threads variable check

It never really worked; in Ruby only 'nil' and 'false' evaluate to
false, therefore the statement '0 : true ? false' returns true, so it
doesn't matter if notmuch_folders_count_threads = 0, count_threads would
be true.

We need to check specifically if the value is 1 or 0.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agodoc: add *.pyc to doc/.gitignore
Jani Nikula [Fri, 2 May 2014 14:51:01 +0000 (17:51 +0300)]
doc: add *.pyc to doc/.gitignore

10 years agotest: add have-man and have-compact in test/.gitignore
Jani Nikula [Fri, 2 May 2014 14:51:00 +0000 (17:51 +0300)]
test: add have-man and have-compact in test/.gitignore

Sort the file while at it.

10 years agoNEWS: make it explicit that wildcard matching is no longer supported
Jani Nikula [Fri, 2 May 2014 16:28:38 +0000 (19:28 +0300)]
NEWS: make it explicit that wildcard matching is no longer supported

Wildcard matching was a feature of the probabilistic prefix, and we no
longer have it for the boolean prefix. Also note that top-level folder
can now be searched.

10 years agoNEWS: insert and new refuse invalid tags
Jani Nikula [Thu, 1 May 2014 14:42:02 +0000 (17:42 +0300)]
NEWS: insert and new refuse invalid tags

10 years agoNEWS: message piping working directory
Jani Nikula [Thu, 1 May 2014 14:42:01 +0000 (17:42 +0300)]
NEWS: message piping working directory

10 years agoNEWS: emacs: push mark before signature on reply
Jani Nikula [Thu, 1 May 2014 14:41:59 +0000 (17:41 +0300)]
NEWS: emacs: push mark before signature on reply

10 years agoNEWS: cli exit status codes
Jani Nikula [Thu, 1 May 2014 14:42:00 +0000 (17:42 +0300)]
NEWS: cli exit status codes

10 years agoNEWS: notmuch insert respects maildir.synchronize_flags
Jani Nikula [Thu, 1 May 2014 14:41:58 +0000 (17:41 +0300)]
NEWS: notmuch insert respects maildir.synchronize_flags

10 years agoNEWS: add overview section for 0.18
David Bremner [Wed, 30 Apr 2014 23:13:44 +0000 (08:13 +0900)]
NEWS: add overview section for 0.18

This mentions the things I (subjectively) thought were most likely to
either annoy people or make it worth upgrading.

10 years agoNEWS: message header parser changes
Jani Nikula [Sun, 27 Apr 2014 21:09:21 +0000 (00:09 +0300)]
NEWS: message header parser changes

10 years agoNEWS: mbox files are no longer supported
Jani Nikula [Sun, 27 Apr 2014 20:54:24 +0000 (23:54 +0300)]
NEWS: mbox files are no longer supported

10 years agoNEWS: folder:, path:, and database upgrade
Jani Nikula [Sun, 27 Apr 2014 14:46:17 +0000 (17:46 +0300)]
NEWS: folder:, path:, and database upgrade

Related news together.

10 years agoNEWS: replies to encrypted messages encrypted by default
Jani Nikula [Sun, 27 Apr 2014 16:30:47 +0000 (19:30 +0300)]
NEWS: replies to encrypted messages encrypted by default

10 years agoNEWS: Ido initialization for Emacs 23.[123]
Tomi Ollila [Sat, 26 Apr 2014 09:59:23 +0000 (12:59 +0300)]
NEWS: Ido initialization for Emacs 23.[123]

10 years agobuilding from git: use --abbrev=7 for version string
Tomi Ollila [Tue, 22 Apr 2014 15:19:44 +0000 (18:19 +0300)]
building from git: use --abbrev=7 for version string

Users may have set core.abbrev=n, where n != 7 in their git config
file(s) which would give them different than expected version strings
when building notmuch from git. This fixes the commit hash part of
version string to 7 hexadecimal values.

10 years agoMerge tag '0.18_rc0'
David Bremner [Tue, 22 Apr 2014 05:40:56 +0000 (14:40 +0900)]
Merge tag '0.18_rc0'

notmuch 0.18~rc0 release

10 years agodoc: remove conf.pyc on clean 0.18_rc0 debian/0.18_rc0-1
David Bremner [Tue, 22 Apr 2014 05:24:04 +0000 (14:24 +0900)]
doc: remove conf.pyc on clean

This build artifict messes up the packaging process for (at least)
Debian if not removed on clean.

10 years agopython: bump version
David Bremner [Tue, 22 Apr 2014 00:36:26 +0000 (09:36 +0900)]
python: bump version

10 years agoNEWS: bump version
David Bremner [Tue, 22 Apr 2014 00:34:44 +0000 (09:34 +0900)]
NEWS: bump version

As usual, we'll just edit the version in place for release candidates.

10 years agodebian: NEWS item about database upgrade
David Bremner [Tue, 22 Apr 2014 00:33:16 +0000 (09:33 +0900)]
debian: NEWS item about database upgrade

10 years agodebian: changelog stanza for 0.18~rc0-1
David Bremner [Tue, 22 Apr 2014 00:27:55 +0000 (09:27 +0900)]
debian: changelog stanza for 0.18~rc0-1

- make versions match to pacify release-checks.sh
- close a few more bugs.
- fix one HTMLism

10 years agoversion: bump to 0.18~rc0
David Bremner [Mon, 21 Apr 2014 22:00:29 +0000 (07:00 +0900)]
version: bump to 0.18~rc0

Start the promised feature freeze

10 years agodoc: Simplify and clarify notmuch show --format=sexp description
Austin Clements [Fri, 18 Apr 2014 22:42:08 +0000 (18:42 -0400)]
doc: Simplify and clarify notmuch show --format=sexp description

Previously, this was a verbatim copy of the --format=json text.
Change it to instead reference the JSON text and actually describe how
the S-expression format works.

10 years agodoc: Clarify charset encoding of JSON output
Austin Clements [Fri, 18 Apr 2014 22:42:07 +0000 (18:42 -0400)]
doc: Clarify charset encoding of JSON output

10 years agodoc: Fix minor formatting issues in notmuch-show.rst
Austin Clements [Fri, 18 Apr 2014 22:42:06 +0000 (18:42 -0400)]
doc: Fix minor formatting issues in notmuch-show.rst

There were some extra line breaks and missing periods.

10 years agodoc: Clarify notmuch show --format=raw description
Austin Clements [Fri, 18 Apr 2014 22:42:05 +0000 (18:42 -0400)]
doc: Clarify notmuch show --format=raw description

In addition to being generally more precise, this is explicit that
there is no charset conversion.

10 years agoemacs: hello: bugfix for saved searches defcustom
Mark Walters [Wed, 16 Apr 2014 21:21:53 +0000 (22:21 +0100)]
emacs: hello: bugfix for saved searches defcustom

The recent changes for saved searches introduced a bug when notmuch
was loaded after the saved search was defined. This was caused by a
utility function not being defined when the defcustom was loaded.

Fix this by moving some code around: the defcustom is moved into
notmuch-hello (which is a more natural place anyway), and the utility
functions are moved before the defcustom in notmuch-hello. We are
rather constrained as the defcustom for saved searches is the first
variable in the notmuch-hello customize window; to avoid moving this
customize the defcustom needs to be the first defcustom in
notmuch-hello, and the utility functions come before that.

This patch also renames one of the utility functions from
notmuch--saved-searches-to-plist to
notmuch-hello--saved-searches-to-plist (as it is purely local to
notmuch-hello) and corrects a couple of typo/spelling mistakes pointed
out by Tomi.

10 years agodoc/prerst2man.py: Fix 'os.system' -> 'system' typo
W. Trevor King [Sat, 5 Apr 2014 17:31:08 +0000 (10:31 -0700)]
doc/prerst2man.py: Fix 'os.system' -> 'system' typo

Avoid:

  $ make HAVE_SPHINX=0 HAVE_RST2MAN=1 build-man
  python ./doc/prerst2man.py ./doc doc/_build/man
  Traceback (most recent call last):
    File "./doc/prerst2man.py", line 65, in <module>
      os.system('set -x; rst2man {0} {1}/{2}.{3}'
  NameError: name 'os' is not defined
  make: *** [doc/_build/man/man1/notmuch.1] Error 1

by using system directly.  We don't need the 'os.' namespacing,
because the function was imported with:

  from os import makedirs, system

10 years agodoc/prerst2man.py: Use Python-3-compatible octal notation
W. Trevor King [Sat, 5 Apr 2014 17:31:07 +0000 (10:31 -0700)]
doc/prerst2man.py: Use Python-3-compatible octal notation

Python 3 only supports the 0oXXX notation for octal literals [1,2],
which have also been supported in 2.x since 2.6 [2].

[1]: https://docs.python.org/3.0/whatsnew/3.0.html#integers
[2]: http://legacy.python.org/dev/peps/pep-3127/

10 years agodoc/mkdocdeps.py: Use "with" statement for the output file
W. Trevor King [Sat, 5 Apr 2014 17:31:06 +0000 (10:31 -0700)]
doc/mkdocdeps.py: Use "with" statement for the output file

Before this patch, the open was unnecessarily early and relied on the
process cleanup to close.  Neither one of these was a real problem,
but PEP 343's context managers (which landed in Python 2.5) make
proper cleanup very easy.

[1]: http://legacy.python.org/dev/peps/pep-0343/

10 years agodoc/mkdocdeps.py: Convert execfile to import
W. Trevor King [Sat, 5 Apr 2014 17:31:05 +0000 (10:31 -0700)]
doc/mkdocdeps.py: Convert execfile to import

excefile is gone in Python 3 [1].  Instead of exec-ing the
configuration, it's easier to insert the source directory in Python's
path [2], and just import the configuration.  With this change,
mkdocdeps.py is compatible with both Python 2 and 3.

[1]: https://docs.python.org/3.0/whatsnew/3.0.html#builtins
[2]: https://docs.python.org/3/library/sys.html#sys.path

10 years agoNEWS for displaying tag changes
Mark Walters [Sat, 19 Apr 2014 08:52:35 +0000 (09:52 +0100)]
NEWS for displaying tag changes

10 years agodoc: make notmuch-new summary line more generic
David Bremner [Sat, 19 Apr 2014 05:29:06 +0000 (14:29 +0900)]
doc: make notmuch-new summary line more generic

Since 'notmuch new' now takes multiple options, it's confusing to show
only one of them in the summary.

10 years agoNews for changes from Austin Clements
Austin Clements [Sat, 19 Apr 2014 03:31:03 +0000 (23:31 -0400)]
News for changes from Austin Clements

10 years agoemacs: Honor debug-on-error for part renderers
Austin Clements [Fri, 18 Apr 2014 22:57:17 +0000 (18:57 -0400)]
emacs: Honor debug-on-error for part renderers

Previously, even if debug-on-error was non-nil, the debugger would not
trap on part renderer errors.  This made debugging part renderer bugs
frustrating, so let the debugger trap these errors.

10 years agoconfigure: fix comment, pass HAVE_CANONICALIZE_FILE_NAME to build
David Bremner [Thu, 17 Apr 2014 22:24:21 +0000 (07:24 +0900)]
configure: fix comment, pass HAVE_CANONICALIZE_FILE_NAME to build

Apparently omitting it is not fatal, but let's be consistent with the
other compat functions.

10 years agobuild: add canonicalize_file_name to symbols exported from libnotmuch.so
David Bremner [Wed, 9 Apr 2014 11:24:02 +0000 (08:24 -0300)]
build: add canonicalize_file_name to symbols exported from libnotmuch.so

This is needed for our compat version of canonicalize_file_name to be used.

10 years agodoc: Fix parallel build of roff files
Austin Clements [Thu, 17 Apr 2014 20:34:57 +0000 (16:34 -0400)]
doc: Fix parallel build of roff files

The roff build rule builds all of the roff files in a single command.
Previously, this was expressed as a multi-target rule, but since this
is equivalent to specifying a copy of the rule for each target, make
-jN could start up to N parallel instances of this command.  Fix this
by bottlenecking this rule through a single stamp file.

This also removes the unused man.stamp from CLEAN.

10 years agoNEWS: notmuch-init-file and notmuch-emacs-version related news
Tomi Ollila [Mon, 14 Apr 2014 18:32:35 +0000 (21:32 +0300)]
NEWS: notmuch-init-file and notmuch-emacs-version related news

Along with those, removed trailing space from subsection title.

10 years agoNEWS: Document the recent 'nmbug clone' and @{upstream} changes
W. Trevor King [Tue, 15 Apr 2014 21:03:56 +0000 (14:03 -0700)]
NEWS: Document the recent 'nmbug clone' and @{upstream} changes

The changes landed with c200167 (nmbug: Add 'clone' and replace
FETCH_HEAD with @{upstream}, 2014-03-09).

The preferred markup language for NEWS seems to be Markdown, which is
parsed by devel/news2wiki.pl into Markdown chunks for rendering by
ikiwiki [1].

[1]: http://notmuchmail.org/news/

10 years agotest: use test_expect_equal for PATH test, update message
David Bremner [Sun, 13 Apr 2014 12:42:49 +0000 (09:42 -0300)]
test: use test_expect_equal for PATH test, update message

- The old test was quite impossible to debug; the new one shows the difference
  between the two directories, if any.

- "repository" doesn't make sense for out of tree builds. Or tarball
  builds, for that matter.

10 years agonmbug: mark repository as bare on clone
David Bremner [Sat, 12 Apr 2014 16:30:32 +0000 (13:30 -0300)]
nmbug: mark repository as bare on clone

If a git repository is non-bare, and core.worktree is not set, git
tries to deduce the worktree. This deduction is not always helpful, e.g.

% git --git-dir=$HOME/.nmbug clean -f

would likely delete most of the files in the current directory

10 years agoNEWS: document possible breakage from saved-search format change
Mark Walters [Sat, 12 Apr 2014 12:46:27 +0000 (13:46 +0100)]
NEWS: document possible breakage from saved-search format change

If the user has unsorted or alphabetically sorted saved-searches these
should continue to work. If they have some custom lisp sort function
then it will need updating to work with the new saved-sort
format. Document this, and how the updating should be done.

Also roll in fixes for the markdown in the first part of the NEWS
suggested by Tomi: change `just work' to *just work* and removed
periods from the end of subtitle lines.

10 years agoemacs: hello: bugfix: make alphabetically sorted saved searches work
Mark Walters [Sat, 12 Apr 2014 12:46:26 +0000 (13:46 +0100)]
emacs: hello: bugfix: make alphabetically sorted saved searches work

My recent changes to the saved search format broke the alphabetically
sorted saved sort option. This makes it work again.

Also update docs for saved-search sort defcustom to match the new
format.

Finally, since the saved-search list is no longer an alist change the
names in the sort function to avoid confusion.

10 years agoemacs: remove auto-signing of replies to signed messages
Jameson Graef Rollins [Mon, 14 Apr 2014 19:40:50 +0000 (12:40 -0700)]
emacs: remove auto-signing of replies to signed messages

It was decided that auto-signing is potentially too troublesome for the
apparently common case of users who enable crypto processing for the
purpose of checking signature validity but who are not in a position to
sign out-going messages.  Users can still manually invoke signing as needed.

Encrypting replies to encrypted messages is more of a security issue
so we leave it in place.

10 years agoemacs: add $(srcdir) to notmuch-version.el.tmpl dependency
Tomi Ollila [Sat, 12 Apr 2014 11:59:46 +0000 (14:59 +0300)]
emacs: add $(srcdir) to notmuch-version.el.tmpl dependency

This fixes out-of-tree build when generating emacs/notmuch-version.el.

10 years agoconfigure: add $(ZLIB_CFLAGS) to CONFIGURE_CFLAGS
Tomi Ollila [Sat, 12 Apr 2014 16:30:22 +0000 (19:30 +0300)]
configure: add $(ZLIB_CFLAGS) to CONFIGURE_CFLAGS

As it is defined in CONFIGURE_CXXFLAGS.

10 years agoemacs: sign/encrypt replies to signed/encrypted messages
Jani Nikula [Sat, 5 Apr 2014 09:18:06 +0000 (12:18 +0300)]
emacs: sign/encrypt replies to signed/encrypted messages

This is a simple approach to improving security when replying to
signed or encrypted messages. If the message being replied to was
signed, add mml tag to sign the reply. If the message being replied to
was encrypted, add mml tag to sign and encrypt the reply.

This may need configuration; I for one might want to encrypt replies
to encrypted messages, but not always sign replies to signed messages.

This still includes a slight bug: if any mml tags are added, they are
included in the region containing the quoted parts. Killing the region
will kill the mml tags too.

10 years agotest: verify tag backup generated by database upgrade
David Bremner [Wed, 2 Apr 2014 00:34:52 +0000 (21:34 -0300)]
test: verify tag backup generated by database upgrade

'pre upgrade dump' is not much of a test, but at least this way we get
somewhat sensible behaviour if it fails.

10 years agonotmuch-new: backup tags before database upgrade
David Bremner [Tue, 1 Apr 2014 14:06:05 +0000 (11:06 -0300)]
notmuch-new: backup tags before database upgrade

All we do here is calculate the backup filename, and call the existing
dump routine.

Also take the opportunity to add a message about being safe to
interrupt.

10 years agorestore: transparently support gzipped input
David Bremner [Sat, 29 Mar 2014 18:12:28 +0000 (15:12 -0300)]
restore: transparently support gzipped input

We rely completely on zlib to do the right thing in detecting gzipped
input. Since our dump format is chosen to be 7 bit ascii, this should
be fine.

10 years agotest: restore with missing final newline
David Bremner [Thu, 3 Apr 2014 11:02:23 +0000 (08:02 -0300)]
test: restore with missing final newline

Recent proposed patches for gzipped input had a bug with handling
missing newlines that was not caught by the current test suite

10 years agoutil: add gz_readline
David Bremner [Sat, 29 Mar 2014 17:53:17 +0000 (14:53 -0300)]
util: add gz_readline

The idea is to provide a more or less drop in replacement for readline
to read from zlib/gzip streams.  Take the opportunity to replace
malloc with talloc.

10 years agodump: support gzipped and atomic output
David Bremner [Sat, 29 Mar 2014 01:14:51 +0000 (22:14 -0300)]
dump: support gzipped and atomic output

The main goal is to support gzipped output for future internal
calls (e.g. from notmuch-new) to notmuch_database_dump.

The additional dependency is not very heavy since xapian already pulls
in zlib.

We want the dump to be "atomic", in the sense that after running the
dump file is either present and complete, or not present.  This avoids
certain classes of mishaps involving overwriting a good backup with a
bad or partial one.

10 years agoNews for emacs saved-searches change.
Mark Walters [Wed, 9 Apr 2014 17:09:54 +0000 (18:09 +0100)]
News for emacs saved-searches change.

The important point is that the changed search variable is not forward
compatible (it *is* backwards compatible): that is previous version
of notmuch-emacs will be unusable with a new style
notmuch-saved-search variable.

10 years agoemacs: Add a sort-order option to saved-searches
Mark Walters [Sun, 6 Apr 2014 05:44:49 +0000 (06:44 +0100)]
emacs: Add a sort-order option to saved-searches

This adds a sort-order option to saved-searches, stores it in the
saved-search buttons (widgets), and uses the stored value when the
button is pressed.

Storing the sort-order in the widget was suggested by Jani in
id:4c3876274126985683e888641b29cf18142a5eb8.1391771337.git.jani@nikula.org.

10 years agoemacs: hello: switch notmuch-hello-insert-buttons to plists
Mark Walters [Sun, 6 Apr 2014 05:44:48 +0000 (06:44 +0100)]
emacs: hello: switch notmuch-hello-insert-buttons to plists

Switching notmuch-hello-insert-buttons to plists means we can easily
pass extra options through to the buttons.

10 years agoemacs: hello: add a customize for saved-searches
Mark Walters [Sun, 6 Apr 2014 05:44:47 +0000 (06:44 +0100)]
emacs: hello: add a customize for saved-searches

Make the defcustom for notmuch-saved-searches use the new plist
format. It should still work with oldstyle saved-searches but will
write the newstyle form.

10 years agoemacs: hello: use the saved-search helper functions
Mark Walters [Sun, 6 Apr 2014 05:44:46 +0000 (06:44 +0100)]
emacs: hello: use the saved-search helper functions

This uses the helper functions: the saved searches format has not
changed yet but backwards compatibility means everything still works.

10 years agoemacs: hello: add helper functions for saved-searches
Mark Walters [Sun, 6 Apr 2014 05:44:45 +0000 (06:44 +0100)]
emacs: hello: add helper functions for saved-searches

Add helper functions to for saved searches to ease the transition to
the new plist form while maintaining backwards compatibility. They
will be used in the next patch.

10 years agoemacs: defun notmuch-hello-versions and bind 'v' in hello mode to it
Tomi Ollila [Wed, 19 Mar 2014 20:37:11 +0000 (22:37 +0200)]
emacs: defun notmuch-hello-versions and bind 'v' in hello mode to it

If notmuch cli & notmuch emacs MUA versions differ, print also the
emacs MUA version string (along with the cli version) to the
minibuffer.

10 years agoemacs: add notmuch-version.el.tmpl and create notmuch-version.el from it
Tomi Ollila [Wed, 19 Mar 2014 20:37:10 +0000 (22:37 +0200)]
emacs: add notmuch-version.el.tmpl and create notmuch-version.el from it

The notmuch cli program and emacs lisp versions may differ (especially
in remote usage). It helps to resolve problems if we can determine
the versions of notmuch cli and notmuch emacs mua separately.

The build process now creates notmuch-version.el from template file
by filling the version info to notmuch-emacs-version variable.

10 years agobuild: write version.stamp file containing $(VERSION) string
Tomi Ollila [Wed, 19 Mar 2014 20:37:09 +0000 (22:37 +0200)]
build: write version.stamp file containing $(VERSION) string

This version file will be as prerequisite to the target files
that use the version info for some purpose, like printing
it for the user to examine. The contents of the version.stamp
file is seldom read by the build system itself as the $(VERSION)
variable has the same information.

Thanks to Trevor, David and Mark for their contributions.

10 years agonmbug: Add 'clone' and replace FETCH_HEAD with @{upstream}
W. Trevor King [Mon, 10 Mar 2014 00:28:49 +0000 (17:28 -0700)]
nmbug: Add 'clone' and replace FETCH_HEAD with @{upstream}

With two branches getting fetched (master and config), the branch
referenced by FETCH_HEAD is ambiguous.  For example, I have:

  $ cat FETCH_HEAD
  41d7bfa7184cc93c9dac139d1674e9530799e3b0 \
    not-for-merge   branch 'config' of http://nmbug.tethera.net/git/nmbug-tags
  acd379ccb973c45713eee9db177efc530f921954 \
    not-for-merge   branch 'master' of http://nmbug.tethera.net/git/nmbug-tags

(where I wrapped the line by hand).  This means that FETCH_HEAD
references the config branch:

  $ git rev-parse FETCH_HEAD
  41d7bfa7184cc93c9dac139d1674e9530799e3b0

which breaks all of the FETCH_HEAD logic in nmbug (where FETCH_HEAD is
assumed to point to the master branch).

Instead of relying on FETCH_HEAD, use @{upstream} as the
remote-tracking branch that should be merged/diffed/integrated into
HEAD.  @{upstream} was added in Git v1.7.0 (2010-02-12) [1], so
relying on it should be fairly safe.  One tricky bit is that bare
repositories don't set upstream tracking branches by default:

  $ git clone --bare http://nmbug.tethera.net/git/nmbug-tags.git nmbug-bare
  $ cd nmbug-bare
  $ git remote show origin
  * remote origin
    Fetch URL: http://nmbug.tethera.net/git/nmbug-tags.git
    Push  URL: http://nmbug.tethera.net/git/nmbug-tags.git
    HEAD branch: master
    Local refs configured for 'git push':
      config pushes to config (up to date)
      master pushes to master (up to date)

While in a non-bare clone:

  $ git clone http://nmbug.tethera.net/git/nmbug-tags.git
  $ cd nmbug-tags
  $ git remote show origin
  * remote origin
    Fetch URL: http://nmbug.tethera.net/git/nmbug-tags.git
    Push  URL: http://nmbug.tethera.net/git/nmbug-tags.git
    HEAD branch: master
    Remote branches:
      config tracked
      master tracked
    Local branch configured for 'git pull':
      master merges with remote master
    Local ref configured for 'git push':
      master pushes to master (up to date)

From the clone docs [2]:

  --bare::
        Make a 'bare' Git repository…
        Also the branch heads at the remote are copied directly
        to corresponding local branch heads, without mapping
        them to `refs/remotes/origin/`.  When this option is
        used, neither remote-tracking branches nor the related
        configuration variables are created.

To use @{upstream}, we need to the local vs. remote-tracking
distinction, so this commit adds 'nmbug clone', replacing the
previously suggested --bare clone with a non-bare --no-checkout
--separate-git-dir clone into a temporary work directory.  After
which:

  $ git rev-parse @{upstream}
  acd379ccb973c45713eee9db177efc530f921954

gives us the master-branch commit.  Existing nmbug users will have to
run the configuration tweaks and re-fetch by hand.  If you don't have
any local commits, you could also blow away your NMBGIT repository and
re-clone from scratch:

  $ nmbug clone http://nmbug.tethera.net/git/nmbug-tags.git

Besides removing the ambiguity of FETCH_HEAD, this commit allows users
to configure which upstream branch they want nmbug to track via 'git
config', in case they want to change their upstream repository.

[1]: http://git.kernel.org/cgit/git/git.git/tree/Documentation/RelNotes/1.7.0.txt
[2]: http://git.kernel.org/cgit/git/git.git/tree/Documentation/git-clone.txt

10 years agorelease-checks: removed manual page version check
Tomi Ollila [Sat, 5 Apr 2014 09:47:29 +0000 (12:47 +0300)]
release-checks: removed manual page version check

Manual pages are now generated and during the generation the version
string is read from `version` file, so this (currently failing) test
checking manual page versions can be removed.

While at it, changed the case pattern *[^0-9.]*
to its portable alternative *[!0-9.]*

10 years agodoc: added 'Init File' section to notmuch-emacs info source
Tomi Ollila [Thu, 3 Apr 2014 20:53:03 +0000 (23:53 +0300)]
doc: added 'Init File' section to notmuch-emacs info source

While adding that fixed (also other) typos noticed by aspell(1) run,
and capitalized Emacs and (most) Notmuch terms to match how emacs
Info documentation seems to look in general.

10 years agodoc: move doxgen config from devel/ to doc/
David Bremner [Sun, 6 Apr 2014 02:02:23 +0000 (23:02 -0300)]
doc: move doxgen config from devel/ to doc/

a first step towards actually instally the API docs

10 years agocompat: add canonicalize_file_name
David Bremner [Mon, 27 Jan 2014 14:12:12 +0000 (10:12 -0400)]
compat: add canonicalize_file_name

the POSIX 2008 behaviour of realpath is not available everywhere so we
provide a simple wrapper function.  We use (and provide) the gnu
extension canonicalize_file_name to make it cleaner to test for the
feature we need; otherwise we have to rely on realpath segfaulting if
the second argument is null.

10 years agodebian: add build conflicts against ruby1.8
David Bremner [Sun, 6 Apr 2014 13:03:17 +0000 (10:03 -0300)]
debian: add build conflicts against ruby1.8

Debian stable has ruby 1.9, so this should be OK. The issue is that
the ruby bindings don't build if "ruby" points to ruby1.8

10 years agodebian: really delete madduck from uploaders
David Bremner [Sun, 6 Apr 2014 12:53:39 +0000 (09:53 -0300)]
debian: really delete madduck from uploaders

I'm not sure how it got into debian/changelog without actually
happening, but actually delete martin from debian/control per
request in Debian bug #719100

10 years agodebian: ignore performance corpus when making source package
David Bremner [Sun, 30 Mar 2014 14:54:15 +0000 (11:54 -0300)]
debian: ignore performance corpus when making source package

Currently "make debian-snapshot" will include the performance corpus
tarball in the source package, which slows things down and wastes disk
space.  tar-ignore is needed twice to keep the default exclude rules
(e.g. to exclude .git)

10 years agolib: replace the header parser with gmime
Jani Nikula [Sun, 30 Mar 2014 21:21:49 +0000 (00:21 +0300)]
lib: replace the header parser with gmime

The notmuch library includes a full blown message header parser. Yet
the same message headers are parsed by gmime during indexing. Switch
to gmime parsing completely.

These are the main changes:

* Gmime stops header parsing at the first invalid header, and presumes
  the message body starts from there. The current parser is quite
  liberal in accepting broken headers. The change means we will be
  much pickier about accepting invalid messages.

* The current parser converts tabs used in header folding to
  spaces. Gmime preserve the tabs. Due to a broken python library used
  in mailman, there are plenty of mailing lists that produce headers
  with tabs in header folding, and we'll see plenty of tabs. (This
  change has been mitigated in preparatory patches.)

* For pure header parsing, the current parser is likely faster than
  gmime, which parses the whole message rather than just the
  headers. Since we parse the message and its headers using gmime for
  indexing anyway, this avoids and extra header parsing round when
  adding new messages. In case of duplicate messages, we'll end up
  parsing the full message although just headers would be
  sufficient. All in all this should still speed up 'notmuch new'.

* Calls to notmuch_message_get_header() may be slightly slower than
  previously for headers that are not indexed in the database, due to
  parsing of the whole message. Within the notmuch code base, notmuch
  reply is the only such user.

10 years agolib: drop support for single-message mbox files
Jani Nikula [Sun, 30 Mar 2014 21:21:48 +0000 (00:21 +0300)]
lib: drop support for single-message mbox files

We've supported mbox files containing a single message for historical
reasons, but the support has been deprecated, with a warning message
while indexing, since Notmuch 0.15. Finally drop the support, and
consider all mbox files non-email.

10 years agocli: abstract dump file open from the dump command
Jani Nikula [Tue, 25 Mar 2014 17:48:57 +0000 (19:48 +0200)]
cli: abstract dump file open from the dump command

Also expose the dump function to the rest of notmuch. No functional
changes, except for slight improvement in error handling.

10 years agocli: abstract database dumping from the dump command
Jani Nikula [Tue, 25 Mar 2014 17:07:49 +0000 (19:07 +0200)]
cli: abstract database dumping from the dump command

No functional changes, except for slight improvement in error
handling.

10 years agoemacs: push mark before signature on reply
Jani Nikula [Fri, 28 Mar 2014 18:04:25 +0000 (20:04 +0200)]
emacs: push mark before signature on reply

We push mark on reply so user can cut the quote. Push the mark before
signature, if any, instead of end of buffer so the signature is
preserved.

This is consistent with message-kill-to-signature.

10 years agoemacs: add defcustom notmuch-init-file and load it if exists
Tomi Ollila [Sat, 29 Mar 2014 08:07:59 +0000 (10:07 +0200)]
emacs: add defcustom notmuch-init-file and load it if exists

So that users can easily organize their notmuch-specific configurations
to separate file and they don't have to have notmuch configurations in
*every* emacs installation they launch, especially if those need to
'(require notmuch) to make the configurations possible.

10 years agoemacs: instruct user to autoload notmuch instead of require'ing it
Tomi Ollila [Sat, 29 Mar 2014 08:07:58 +0000 (10:07 +0200)]
emacs: instruct user to autoload notmuch instead of require'ing it

When (require 'notmuch) is added to ~/.emacs notmuch is loaded to every
instance of emacs although it may not be used in majority of
those instances.

When (autoload 'notmuch "notmuch" ...) is added to ~/.emacs notmuch
is loaded (only) when user invokes the notmuch function.

User may want to add other entrypoints to notmuch by adding more
autoloads -- the autoload instruction given should offer them clue how
to do so.

10 years agocli: fix notmuch help additional topics
Jani Nikula [Sat, 22 Mar 2014 13:06:58 +0000 (15:06 +0200)]
cli: fix notmuch help additional topics

The help for hooks was missing.

10 years agotest: conditionally test help system depending on configured support
Jani Nikula [Wed, 26 Mar 2014 08:48:12 +0000 (09:48 +0100)]
test: conditionally test help system depending on configured support

If neither sphinx nor rst2man is available, the notmuch man pages will
not be available. Take this into account in the help system test.

10 years agocli: Flush stdout before fork()ing to run hooks
Austin Clements [Sun, 23 Mar 2014 21:22:26 +0000 (17:22 -0400)]
cli: Flush stdout before fork()ing to run hooks

Without this flush, if stdout is block buffered (which will happen if
it's a pipe or a file, for example) and the hook also writes to
stdout, then notmuch new's output will appear *after* the hook output.

This situation may be a little esoteric, but it's good practice to
flush before you fork anyway.