Commit graph

3439 commits

Author SHA1 Message Date
Tomi Ollila
085d45e389 exec emacs at the end of run_emacs script
In the last line of run_emacs, exec the emacs process.
With one fork less the process list is (also) neater.
2011-11-12 23:21:44 -04:00
David Bremner
ebd1adc55b contrib/nmbug: new script for sharing tags with a given prefix.
The main idea is consider the notmuch database as analogous to the
work-tree. A bare git repo is maintained in the users home directory,
with a tree of the form tags/$message-id/$tag

Like notmuch and git, we have a set of subcommnds, mainly modelled on
git.

Implementation wise, the heavy lifting is in the following functions.

   commit	xapian -> git
   checkout	git -> xapian
   merge	fetched git + git -> xapian
   status	find differences between xapian, git, and remote git.

The central implementation trick, from an idea I think due to
tomprince on IRC is manipulate the git index directly from the xapian
tag information.  The merge routine is still done using a temporary
checkout as I wasn't able to get it working with the index only.

There are also some convenience wrappers around git commands, like "fetch"
that essential just set GIT_DIR in the environment.

In order to encode tags (viewed as octet sequences) into filenames,
we whitelist a smallish set of characters and %hex escape anything outside.

The prefix is omitted in git, which lets one save and restore to
different prefixes (although this is only lightly tested).

Thanks to Tomi Ollila for a huge amount of feedback and patches while
putting this together.
2011-11-12 21:24:25 -04:00
Jameson Graef Rollins
9207f90f52 emacs: update notmuch-crypto-process-mime config variable documentation.
This mentions the fact that prefix arguments are now used to enable to
crypto switch.
2011-11-12 20:50:22 -04:00
Jameson Graef Rollins
07022714eb emacs: Unbind M-RET as display of thread with crypto switch.
Use prefix argument instead to set switch.
2011-11-12 20:42:25 -04:00
Pieter Praet
64febdf71c test: stashing in notmuch-{show,search}
Should provide full test coverage of the stashing feature.

Signed-off-by: Pieter Praet <pieter@praet.org>
2011-11-12 20:32:47 -04:00
Pieter Praet
f9764bfacc emacs: add keybind and function to stash Message-ID without prefix
Add function `notmuch-show-stash-message-id-stripped'
which stashes a Message-ID after ripping off the prefix and quotes,
add bind it to "I" key in `notmuch-show-stash-map'.

Simplifying `notmuch-show-get-message-id' instead might seem better,
but that would require concat'ing in 9 places instead of 1.

Signed-off-by: Pieter Praet <pieter@praet.org>
2011-11-12 20:29:04 -04:00
David Bremner
fd700ec961 NEWS: mention dtach instead of screen in the description of testing changes
This brings NEWS back in line with the actual code.
2011-11-12 10:46:13 -05:00
Dmitry Kurochkin
e972d752c0 emacs: add invisible space after the search widget field in notmuch-hello
It is very convenient when C-e (bound to `widget-end-of-line') ignores
trailing spaces inside the search widget.  But it only does so if a
widget is not followed by a newline (that is why it works in the saved
search widgets).  The patch just adds an invisible space after the
search widget to get the desirable behavior of `widget-end-of-line'.
The extra space is also added to expected results of emacs tests.
2011-11-12 10:34:53 -05:00
Austin Clements
a2d78fba20 emacs: Use a single buffer invisibility spec to fix quadratic search cost.
Buffer redisplay requires traversing the buffer's invisibility spec
for every part of the display that has an 'invisible text or overlay
property.  Previously, the search buffer's invisibility spec list
contained roughly one entry for each search result.  As a result,
redisplay took O(NM) time where N is the number of visible lines and M
is the total number of results.  On a slow computer, this is enough to
make even buffer motion noticeably slow.  Worse, during a search
operation, redisplay is triggered for each search result (even if
there are no visible buffer changes), so search was quadratic
(O(NM^2)) in the number of search results.

This change switches to using a single element buffer invisibility
spec.  To un-hide authors, instead of removing an entry from the
invisibility spec, it simply removes the invisibility overlay from
those authors.

I tested using a query with 6633 results on a 9 year old machine.
Before this patch, Emacs took 70 seconds to fill the search buffer;
toward the end of the search, Emacs consumed 10-20x as much CPU as
notmuch; and moving point in the buffer took about a second.  With
this patch, the same query takes 40 seconds, Emacs consumes ~3x the
CPU of notmuch by the end, and there's no noticeable lag to moving
point.  (There's still some source of non-linearity, because Emacs and
notmuch consume roughly the same amount of CPU early in the search.)
2011-11-12 09:21:03 -05:00
Tomi Ollila
ac46c6fdc2 smtp-dummy: clear sockaddr_in structure before use in bind()
Any junk bytes in sockaddr_in structure before passing that
to bind() system call may cause problems.
2011-11-12 07:48:00 -05:00
Jameson Graef Rollins
1351fc7384 debian: update build dependency on dtach instead of screen
This reflects a modification to the test suite to use dtach instead of
screen.
2011-11-11 18:31:44 -05:00
Jameson Graef Rollins
5dda92f778 debian: clean up Uploaders and Build-Depends fields in debian/control
No functional change, but this will make for cleaner diffs down the
line.
2011-11-11 18:30:32 -05:00
Tomi Ollila
2f2ea8a49a test: use dtach(1) instead of screen(1) in emacs tests
dtach is simpler than screen and is not setuid/setgid program so
TMPDIR does not get cleared by dynamic loader when executed
2011-11-11 18:24:53 -05:00
Michal Sojka
0234a16b56 Do not query on notmuch-search exit
Emacs 23.2 queries by default about killing existing processes. This
is annoying when one wants to interrupt long search with 'q' key.
Disable this behavior for notmuch.
2011-11-08 14:25:07 -04:00
Dmitry Kurochkin
34aa8e8a9c emacs: remove unused `point-invisible-p' function
`point-invisible-p' does not work correctly when `invisible'
property is a list.  There are standard `invisible-p' and related
functions that should be used instead.
2011-11-07 20:38:37 -04:00
Dmitry Kurochkin
8809e09dcc emacs: remove no longer used functions from notmuch-show.el
Remove `notmuch-show-move-past-invisible-backward' and
`notmuch-show-move-past-invisible-forward' functions which are
unused.
2011-11-07 20:38:37 -04:00
Dmitry Kurochkin
6e6cb68b80 emacs: improve hidden signatures handling in notmuch-show-advance-and-archive
Use `previous-single-char-property-change' instead of going
through each character by hand and testing it's visibility.  This
fixes `notmuch-show-advance-and-archive' to work for the last
message in thread with hidden signature.
2011-11-07 20:38:37 -04:00
Dmitry Kurochkin
9689656351 test: `notmuch-show-advance-and-archive' with invisible signature
Add Emacs test to check that `notmuch-show-advance-and-archive'
works for the last message in thread with invisible signature.
2011-11-07 20:38:37 -04:00
David Bremner
760b311bb5 NEWS: tentative news item about requiring screen to run the test suite.
Hopefully this will be fixed before release, but for the moment,
explain to people why their test suite might not be working like it
used to.
2011-11-05 22:10:51 -03:00
David Bremner
a824fe1da6 debian: build-depend on screen.
This is needed for emacs tests, now that those are run in screen.
2011-11-05 22:08:00 -03:00
Dmitry Kurochkin
95cf33cc78 test: do not set frame width in emacs
No need for `set-frame-width' in emacs tests since it runs in
screen now.
2011-11-05 21:55:57 -03:00
Dmitry Kurochkin
746a13e6f4 test: avoid using screen(1) configuration files
Set SCREENRC and SYSSCREENRC environment variables to "/dev/null"
as suggested by Jim Paris to avoid potential problems with
screen(1) configuration files.
2011-11-05 21:54:40 -03:00
Dmitry Kurochkin
a1ea4e914f test: run emacs inside screen
Before the change, emacs run in daemon mode without any visible
buffers.  Turns out that this affects emacs behavior in some
cases.  In particular, `window-end' function returns `point-max'
instead of the last visible position.  That makes it hard or
impossible to implement some tests.  The patch runs emacs in a
detached screen(1) session.  So that it works exactly as if it
has a visible window.

Note: screen terminates when emacs exits.  So the patch does not
introduce new "running processes left behind" issues.
2011-11-05 20:49:27 -03:00
Dmitry Kurochkin
749abb74f2 test: json show format of message with inline attachment with filename
The patch adds a test to check that json show format includes
filenames for attachments with inline disposition.
2011-11-05 20:15:00 -03:00
Ali Polatel
5a446f4765 notmuch-deliver: update gitignore 2011-11-05 01:12:35 +02:00
Thomas Schwinge
c39fd2a479 notmuch-deliver: Don't read errno inappropriately.
Signed-off-by: Thomas Schwinge <thomas@schwinge.name>
2011-11-05 01:12:35 +02:00
Thomas Schwinge
8935c83c56 notmuch-deliver: Won't deliver to more than one folder.
Signed-off-by: Thomas Schwinge <thomas@schwinge.name>
2011-11-05 01:12:35 +02:00
Thomas Schwinge
47ddec5034 notmuch-deliver: Advance imported files to maildrop-2.5.2 release. 2011-11-05 01:12:35 +02:00
Thomas Schwinge
f0c3f7a995 notmuch-deliver: Import said files from maildrop-2.2.0 release.
We won't use all of the included build infrastructure files, but adding them
nevertheless helps to track changes that are applied to them upstream.

Signed-off-by: Thomas Schwinge <thomas@schwinge.name>
2011-11-05 01:12:35 +02:00
Thomas Schwinge
38b245b46a Move files copied from maildrop to a separate hierarchy.
Signed-off-by: Thomas Schwinge <thomas@schwinge.name>
2011-11-05 01:12:35 +02:00
Thomas Schwinge
5f53ce3e2b Make it build in a separate build directory.
Signed-off-by: Thomas Schwinge <thomas@schwinge.name>
2011-11-05 01:12:35 +02:00
Ali Polatel
01478051aa notmuch-deliver: Add mailmap 2011-11-05 01:12:35 +02:00
alip
5a74347025 notmuch-deliver: Fix utter failure 2011-11-05 01:12:35 +02:00
Ali Polatel
73258fec79 notmuch-deliver: Use splice() if it's available
NOTMUCH_DELIVER_NO_SPLICE environment variable may be set to fallback to
the read/write method.
2011-11-05 01:12:35 +02:00
Ali Polatel
c145323120 notmuch-deliver: Add --enable-{gprof,gcov} options to configure 2011-11-05 01:12:35 +02:00
Ali Polatel
649db5eab6 More debug messages 2011-11-05 01:12:35 +02:00
Ali Polatel
d478384dfb notmuch-deliver: Fix typos in option context description 2011-11-05 01:12:35 +02:00
Ali Polatel
50d5caacc9 notmuch-deliver: Fix copy/paste fail 2011-11-05 01:12:34 +02:00
Ali Polatel
af863f8c7f notmuch-deliver: Initial import 2011-11-05 01:12:34 +02:00
Daniel Schoepe
6a280088e6 emacs: Tab completion for notmuch-search and notmuch-search-filter
This patch adds completion with <tab> in the minibuffer for
notmuch-search and notmuch-search-filter.
2011-11-02 22:06:44 -03:00
David Bremner
606e4461f8 lib/database.cc: use flush Xapian method instead of commit
Apparently the method was renamed in Xapian 1.1.0 but the old method
name will stay around for a while. It seems better to stick with the
old name to make notmuch compile with older versions of Xapian, at
least for now.
2011-11-02 20:38:22 -03:00
Tomi Ollila
556c5fa890 remove GCC visibility pragmas
libnotmuch.so.* linking fail on some environments. According to
David Bremner on irc:
 "We jump through hoops with the linker script (notmuch.sym) so
 the pragmas are not needed. And they are a little bizarre in a
 library anyway..."
2011-10-31 09:05:07 -03:00
David Bremner
7a87830f5e xregcomp: don't consider every regex compilation failure an internal error.
This pushes the error handling up one step, but makes the function
more flexible. Running out of memory still triggers an internal error,
in the spirit of other xutils functions.
2011-10-30 23:10:38 -03:00
David Bremner
1dedfc90f6 xutil.c: remove duplicate copies, create new library libutil.a to contain xutil.
We keep the lib/xutil.c version. As a consequence, also factor out
_internal_error and associated macros.  It might be overkill to make a
new file error_util.c for this, but _internal_error does not really
belong in database.cc.
2011-10-30 23:09:49 -03:00
David Bremner
a1ca7e8ebb build system: target to make a Debian snapshot package.
Currently this builds a native package, but since the source package
is throw away, it should not matter too much, except for the extra
warnings from lintian.

The extra +1 is so that if $(VERSION) is the same as the last released
version (for example outside a git repo) then the versions still order
correctly.
2011-10-28 14:14:43 -03:00
David Bremner
d9868bc056 build system: remove dashes from git-describe generated version.
This makes it less confusing with released Debian versions, now that we have
non-native Debian versions.
2011-10-28 14:14:32 -03:00
Daniel Schoepe
4a4ada73b7 emacs: Turn id:"<message-id>" elements into buttons for notmuch searches
This fixes the minor annoyance that message ids were parsed as mail
addresses by goto-address-mode in notmuch-show buffers.
2011-10-28 14:12:19 -03:00
Amadeusz Żołnowski
e6d85fb97d Separate Emacs misc. files dir. from Emacs code dir.
New option --emacsetcdir was added, but it's set default to the same
value as --emacslispdir for backward compatibility.
2011-10-28 14:07:44 -03:00
Amadeusz Żołnowski
8d282adf53 Prefix lib/notmuch.h and lib/gen-version-script.sh with $(srcdir)
lib/notmuch.h and lib/gen-version-script.sh couldn't have been found
when building out of sources directory.
2011-10-24 21:56:23 -03:00
David Bremner
3ae8ac6ace docs: Update news, man page, and online help for restore --accumulate
As a side effect, reformat the NEWs entry for notmuch dump for
consistency with the notmuch restore NEWS submitted by Thomas
Schwinge.
2011-10-23 10:27:57 -03:00