Commit graph

1203 commits

Author SHA1 Message Date
Carl Worth
da2403c310 RELEASING: Add this file describing the steps to make a release.
These steps might be changing a bit as we work on making the initial
0.1 release.
2010-04-05 15:29:54 -07:00
Carl Worth
1e66fb0e22 Increment version to 0.1.1
After publishing the first notmuch release (0.1) to
http://notmuchmail.org/releases .
2010-04-05 14:25:06 -07:00
Carl Worth
04e816416f Makefile: Add a dist target.
To create a versioned tar file for release.
2010-04-05 14:22:00 -07:00
Carl Worth
4235ef5109 Makfiles: Make the top-level targets PHONY
Just to avoid any clash with files of the same names.
2010-04-05 12:59:06 -07:00
David Bremner
c2f3710a78 notmuch-query.el: new file to support access to the notmuch database.
Initially this file provides one main function
notmuch-query-get-threads, which takes a set of search terms, and
returns a parsed set of matching threads as a lisp data structure.

A set of notmuch-query-map-* functions are provided to help map
functions over the data structure.

The function notmuch-query-get-message-ids uses this machinery to get
the set of message-ids matching a query.

Edited-by: Carl Worth <cworth@cworth.org>: Change comment syntax,
(";;" rather than ";" to make emacs-lisp mode happy), and eliminate
some excess whitespace, as suggested by David Edmonson.
2010-04-05 11:08:45 -07:00
David Edmondson
9eb3603299 notmuch: Correctly terminate text/* parts in JSON output
Text parts returned by `g_mime_stream_mem_get_byte_array()' are not
NULL terminated strings - add `json_quote_chararray()' to handle them
correctly.
2010-04-05 10:57:23 -07:00
David Edmondson
bb52116846 git: Ignore `notmuch-shared' 2010-04-05 09:25:56 -07:00
David Edmondson
e8414a72d4 emacs: Move notmuch-show functionality to notmuch-show.el
To ease the transition to a JSON based implementation of
`notmuch-show', move the current implementation into a separate file.

Create `notmuch-lib.el' to hold common variables.
2010-04-05 09:25:56 -07:00
Carl Worth
3f8dfc36c4 TODO: Add notes on removing "notmuch part" and "notmuch search-tags".
Both of these ideas were recently discussed on the mailing list.
2010-04-03 12:42:03 -07:00
Carl Worth
03588ee710 emacs: Fix "free variable" warning for notmuch-folder-show-empty.
Emacs really wants us to defvar each variable before assigning to it,
(which gives us a place to document the variable as well).
2010-04-03 12:31:49 -07:00
David Edmondson
e33b73819a emacs/notmuch.el: Improve tag highlighting in search mode
Assume that tags never include an opening bracket, and hence improve
the regular expression used to highlight them. This avoids false
matches where the 'from' address of a thread participant includes an
opening bracket.
2010-04-03 12:31:49 -07:00
David Edmondson
d3884a5984 Makefile.local: Automatically use makefile mode
We add a magic line to the beginning of each Makefile.local file to
help the editor know that it should use makefile mode for editing the
file, (even though the filename isn't exactly "Makefile").

Edited-by: Carl Worth <cworth@cworth.org>: Expand treatment from
emacs/Makefile.local to each instance of Makefile.local.
2010-04-03 12:31:49 -07:00
David Edmondson
7b1566db8a Makefile: Add the emacs directory to load-path when compiling
Reviewed-by: Carl Worth <cworth@cworth.org>: Presumably, this is to
enable proper building in the very near-term future where the emacs
implementation consists of multiple files where some will `require'
functions from others.
2010-04-03 12:11:55 -07:00
Carl Worth
44df403ccd Merge remote branch 'dme/dme-for-cworth'
Conflicts:
	notmuch.c (Simply the change in documentation indentation level).
2010-04-02 15:47:27 -07:00
Carl Worth
a07962d3ec Makefile: Only print the "make install" hint after the first build.
It was getting quite annoying to see this big block of text on every
little build, (but I didn't want to get rid of it for any new users).
This seems to strike the right balance.
2010-04-02 14:06:32 -07:00
Carl Worth
3d33ec7349 notmuch help: Eliminate a gratuitous level of indentation.
I don't really know why we ended up having everything indented by two
tabs, (perhaps trying to make it match the man page)? But wihout any
containing context to justify that it just looks odd.
2010-04-02 12:26:31 -07:00
Carl Worth
5a9be8a7ad notmuch help: Simplify output by omitting arguments for each command.
The output was far too busy otherwise. It's more useful to just
show the argument list in the case of "notmuch help <command>"
for a specific command.

(Credit due to running "git help" and seeing a much more readable
list than what was coming out of "notmuch help".)
2010-04-02 12:12:18 -07:00
Carl Worth
b2a9fcd5cf notmuch: Add a version (0.1 initially) with a new --version option.
We're planning to do actual releases soon, so we need a version
number to put into the tar file.
2010-04-02 11:55:09 -07:00
Carl Worth
9d9aeb7c71 notmuch: Add support for a --help option.
Previously, only "notmuch help" worked while a call to "notmuch --help"
would just print a message telling the user to call "notmuch help".
Instead of the redirection, just support --help directly now.
2010-04-02 11:53:22 -07:00
David Edmondson
2e9c7aba99 notmuch: Add a 'part' subcommand
A new 'part' subcommand allows the user to extract a single part from
a MIME message. Usage:
  notmuch part --part=<n> <search terms>
The search terms must match only a single message
(e.g. id:foo@bar.com). The part number specified refers to the part
identifiers output by `notmuch show'. The content of the part is
written the stdout with no formatting or identification marks. It is
not JSON formatted.
2010-04-02 09:43:03 +01:00
David Edmondson
930a47935f notmuch-show: Add unix and relative dates to the JSON output
Include a 'date_unix' and 'date_relative' field in the JSON output for
each message. 'date_relative' can be used by a UI implementation,
whereas 'date_unix' is useful when scripting.
2010-04-02 09:25:38 +01:00
Carl Worth
f689c83af4 Compile a static notmuch binary (but only install the shared version)
The idea here is to allow a new user of notmuch to be able to run
notmuch immediately after compiling, (without having to install
the shared library first). This also ensures that the test suite
tests the locally compiled library, and not whatever installled
version of the library the dynamic linker happens to find.
2010-04-01 15:03:40 -07:00
nstraz@redhat.com
685cfcc9e8 Setup the GMimeStream only when needed
I ran into this while looking at the vim plugin.  Vim's system() call
redirects output to a file and it was missing many of the part{ lines.

If stream_stdout is setup too early, it will overwrite the part start
when notmuch is redirected to a file.

Reviewed-by Carl Worth <cworth@cworth.org>: GMime is calling fseek
before every write to reset the FILE* to the position it believes is
correct based on the writes it has seen. Our code was getting
incorrect results because our GMime writes were interleaved with
non-GMime writes via printf.

The bug appears when writing to a file because it's seekable, but not
when writing to a pipe which is not.
2010-04-01 14:27:01 -07:00
Michal Sojka
b884ab2ef1 Makefile: Create include directory when installing headers
When I wanted to create a debian package from the current master, make
install failed because of non-existent include directory. This patch
fixes this minor issue.
2010-04-01 05:13:21 -07:00
Carl Worth
c0961e6a82 lib: Switch to a 3-part version number for the library interface.
With a carefully documented description of how to increment the
various version components.
2010-04-01 00:41:25 -07:00
Carl Worth
c20be126e5 Makefiles: Align the columns of output.
Much better.
2010-04-01 00:07:08 -07:00
Carl Worth
33d5cc415e Makefiles: Make the install rules quiet like the compilation rules.
The output from make is looking better all the time, (though the
columns still aren't lined up).
2010-03-31 23:54:21 -07:00
Carl Worth
e7131a5983 Makefile: Fix to print CFLAGS with "make V=0"
The default "make" would be quite quiet, but still conveniently print
the CFLAGS. The explicit "make V=0" was intended to be identical, (only
not printing the message about V=1 but was broken in that it left the
CFLAGS off). Fix this.
2010-03-31 23:32:35 -07:00
Carl Worth
8c671a17c0 Makefiles: Eliminate shell for loops in rule definitions.
These just made the output look so ugly, and weren't actually making
the rule definitions any simpler. Good riddance.
2010-03-31 22:59:30 -07:00
Carl Worth
7b52b2c318 Move installation of library from top-level to lib/Makefile.local
We had a fairly ugly violation of modularity with the top-level
Makefile.local isntalling everything, (even when the build commands
for the library were down in lib/Makefile.local).
2010-03-31 22:54:15 -07:00
Carl Worth
649b1609a1 Makefile.config: Avoid pre-expanding the ${prefix} variable.
One of the supproted mechanisms we offer for configuration is
manually editing the Makefile.config file after it is generated
by the configure script. In this case it would be nice to be able
to change prefix only once, so allow that.
2010-03-31 22:54:15 -07:00
Carl Worth
ab95219a2f Move some variable assignments from Makefile.local to Makefile.config
There's not any special configure logic for determining these variable
values, but if we did add some in the future, then these will now be
in the right place for that.

Additionally, this now makes Makefile.local the single place for the
user to look for manually tweaking a variable assignment, (say, for a
compiler that can't accept a particular warning argument).

With this change, there should rarely be any need for a user to poke
into any Makefile.local file.
2010-03-31 22:54:08 -07:00
Carl Worth
784e55d0f9 Move bulk of rules from Makefile to Makefile.local.
Before it was impossible to know whether any particular setting or
rule definition was in Makefile or Makefile.local. So we strip the
Makefile down to little more than the list of sub-directories and
the logic to include all of the sub-directories' Makefile.local
fragments.

Then, all of the real work can happen inside of Makefile.local.
2010-03-31 22:12:01 -07:00
Carl Worth
bf159bd829 configure: Fix installation of library to work with alternate --prefix
If an explicit --libdir is passed, then that is used directly. Otherwise
libdir is chosen as the value of $PREFIX/lib, (whether or not prefix was
passed explicitly or set by default).
2010-03-31 18:17:51 -07:00
Carl Worth
2057688645 configure: Fix typo in help message.
Documentation is installed to PREFIX/man not PREFIX/share.
2010-03-31 18:17:29 -07:00
Ingmar Vanhassel
acaff279e2 Add a --libdir option to ./configure
This allows packagers to specify to which directory libraries should be
installed.

Signed-off-by: Ingmar Vanhassel <ingmar@exherbo.org>
2010-03-31 18:07:58 -07:00
Saleem Abdulrasool
07378d0d14 Fix target dependencies for multiple jobs
Signed-off-by: Ingmar Vanhassel <ingmar@exherbo.org>
2010-03-31 17:41:28 -07:00
Ben Gamari
266ab595a2 Build and link against notmuch shared library, install notmuch.h
Signed-off-by: Ingmar Vanhassel <ingmar@exherbo.org>
2010-03-31 17:38:27 -07:00
Carl Worth
b957a1b029 emacs: Fix the notmuch-search-authors-width variable.
This variable existed previously, but wasn't actually used for anything.
2010-03-31 13:32:00 -07:00
Carl Worth
e002fe8a7a Clarify documentation of notmuch_database_add_message.
For the case of adding a file that already exist, (with the same
filename). In this case, nothing will happen to the database, but
that wasn't clear before.
2010-03-31 13:31:10 -07:00
Carl Worth
357b48d34b TODO: Note that '=' should sometimes count from the end of the buffer.
When trying to restore the current position, if the "current" thread
no longer appears in the buffer, then '=' moves to the current line
instead. When near the end of the buffer, the "current" line should
be counted as the number of lines from the end.
2010-03-31 13:31:10 -07:00
Carl Worth
4ec5e2a612 TODO: Add a todo item for adding a message as a blob, rather than a filename.
This was suggested by Srinivasa and is intended to make it easier to
integrate notmuch into an mbox-loving mail client.
2010-03-31 13:31:10 -07:00
Carl Worth
9ff063ded7 TODO: Add some new items about improving the test suite.
I just tried (and failed) to write a test for the recent magic
inference of phrase searches. That's a feature that makes me *really*
uncomfortable to not have an automated test. But I believe the
proposed modularization of the test suite should reduce some quoting
nightmares, so will hopefully make this easier.
2010-03-31 13:31:10 -07:00
Carl Worth
bf09c7d11e test: Fix phrase-search tests.
With some extra qutotation marks, we are now doing actual phrase
searches so these tests pass.
2010-03-31 13:31:09 -07:00
Carl Worth
70b7e659f6 test: Add some negative results for the phrase searches.
These results have all the same terms as the target phrase, but
not in the expected order. They are designed to ensure that we
actually test phrase searches.

And as it turns out, we're not currently quoting the search terms
properly, so the phrase-search tests now fail with this commit.
2010-03-31 13:31:09 -07:00
Sebastian Spaeth
d30049d2b9 notmuch-show: add tags to json output
The previous json patches forgot to add the notmuch tags to the json
output. This is inconsistent to the text output so here they are. We
just output a 'tags' field that sends notmuch tags as a json array.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2010-03-11 04:30:46 -08:00
Carl Worth
bb61755afe emacs: Fix search refresh when on the last line of a search buffer.
We currently allow the cursor to be positioned on the "End of search
results" line after the last thread in a search buffer. When
refreshing on this line, there's no thread ID to be used as the
target.

Previously, a refresh from this case would result in a nil thread
target, but we were also using nil to indicate that the target thread
had been found. This caused the position to be lost during refresh,
(the cursor would move from the last line in the buffer to the first).

We fix this by using a magic string of "found" rather than nil to
clearly indicate whether the target thread has actually been found.
2010-03-10 11:07:58 -08:00
Carl Worth
70ef8de798 emacs: Adjust search refresh to use a target line not a target position.
It doesn't make sense to move the cursor to some random point in the
middle of a line. We always want the refresh to leave the cursor at
the beginning of some line instead.
2010-03-10 11:07:51 -08:00
Carl Worth
86232e62ab Makefile: Fix Makefiles to depend on all child Makefile fragments.
We were previously maintaining two lists of the child Makefile
fragments---one for the includes and another for the dependencies. So,
of course, they drifted and the dependency list wasn't up to date.

We fix this by adding a single subdirs variable, and then using GNU
Makefile substitution to generate both the include and the dependency
lists.

Some side effect of this change caused the '=' assignment of the dir
variable to not work anymore. I'm not sure why that is, but using ':='
makes sense here and fixes the problem.
2010-03-10 10:59:57 -08:00
Carl Worth
f47bec55bd Makefile: Use 'emacs --quick' for a less noisy build of "make install-emacs".
I don't really notice if it goes any quicker, but it's sure nice to have
less spew now.
2010-03-10 10:58:46 -08:00