notmuch 0.6: notmuch new dies with std::terminate

2011-07-04 Thread Robin Green
Some time after upgrading to notmuch 0.6, notmuch new suddenly started
failing, with this backtrace: (this is on DragonFly BSD)

Program terminated with signal 6, Aborted.
#0  0x0008017bde18 in kill () from /usr/lib/libc.so.7
(gdb) bt
#0  0x0008017bde18 in kill () from /usr/lib/libc.so.7
#1  0x00080183779d in raise () from /usr/lib/libc.so.7
#2  0x000801837195 in abort () from /usr/lib/libc.so.7
#3  0x00080150c9c1 in __gnu_cxx::__verbose_terminate_handler() () from 
/usr/lib/gcc44/libstdc++.so.9
#4  0x000801511047 in __cxxabiv1::__terminate(void (*)()) () from 
/usr/lib/gcc44/libstdc++.so.9
#5  0x00080151107c in std::terminate() () from /usr/lib/gcc44/libstdc++.so.9
#6  0x000801510fe4 in __cxa_throw () from /usr/lib/gcc44/libstdc++.so.9
#7  0x000801adac99 in Xapian::Document::Internal::remove_term (this=value 
optimized out, tname=value optimized out)
at api/omdocument.cc:404
#8  0x00080086d020 in _notmuch_message_remove_term (message=0x8007719d0, 
prefix_name=0x800871cc9 tag, 
value=0x800871be0 draft) at lib/message.cc:915
#9  0x00080086d239 in notmuch_message_remove_tag (message=0x8007719d0, 
tag=0x800871be0 draft) at lib/message.cc:974
#10 0x00080086d421 in notmuch_message_maildir_flags_to_tags 
(message=0x8007719d0) at lib/message.cc:1030
#11 0x0040976d in add_files_recursive (notmuch=0x8007a02f0, 
path=0x8008003a8 /home/greenrd/Mail/sent/cur, 
state=0x7800) at notmuch-new.c:459
#12 0x00409236 in add_files_recursive (notmuch=0x8007a02f0, 
path=0x8007f0650 /home/greenrd/Mail/sent, 
state=0x7800) at notmuch-new.c:330
#13 0x00409236 in add_files_recursive (notmuch=0x8007a02f0, 
path=0x8007f0378 /home/greenrd/Mail, 
state=0x7800) at notmuch-new.c:330
#14 0x00409cb7 in add_files (notmuch=0x8007a02f0, path=0x8007f0378 
/home/greenrd/Mail, state=0x7800)
at notmuch-new.c:625
#15 0x0040a61c in notmuch_new_command (ctx=0x8006c02e8, argc=0, 
argv=0x7988) at notmuch-new.c:866
#16 0x00407038 in main (argc=2, argv=0x7978) at notmuch.c:632

I'm not a C++ programmer, but what I notice that's odd about this is
that the exception *should* be caught by a catch, but isn't being.

Because I couldn't figure out what is going wrong here, I switched back
to notmuch 0.5, which worked.

This may have to do with some errors I saw from notmuch search about a
temporary draft file created by emacs no longer existing. Or that may be
unrelated - I have no idea.
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH] Use POSIX sed invocation

2011-07-03 Thread Robin Green
Fixes broken build on DragonFly BSD

Signed-off-by: Robin Green 
---
 lib/Makefile.local |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/lib/Makefile.local b/lib/Makefile.local
index fe42920..88d8deb 100644
--- a/lib/Makefile.local
+++ b/lib/Makefile.local
@@ -76,7 +76,7 @@ $(dir)/$(LIBNAME): $(libnotmuch_modules) notmuch.sym

 notmuch.sym: lib/notmuch.h
printf "{\nglobal:\n" > notmuch.sym
-   sed  -n 's/^\s*\(notmuch_[a-z_]*\)\s*(.*/\t\1;/p' $< >> notmuch.sym
+   sed  -n 's/^[[:space:]]*\(notmuch_[a-z_]*\)[[:space:]]*(.*/'"`printf 
"\t"`"'\1;/p' $< >> notmuch.sym
printf "local: *;\n};\n" >> notmuch.sym

 $(dir)/$(SONAME): $(dir)/$(LIBNAME)
-- 
1.7.4.1



[PATCH] Use POSIX sed invocation

2011-07-03 Thread Robin Green
Fixes broken build on DragonFly BSD

Signed-off-by: Robin Green gree...@greenrd.org
---
 lib/Makefile.local |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/lib/Makefile.local b/lib/Makefile.local
index fe42920..88d8deb 100644
--- a/lib/Makefile.local
+++ b/lib/Makefile.local
@@ -76,7 +76,7 @@ $(dir)/$(LIBNAME): $(libnotmuch_modules) notmuch.sym
 
 notmuch.sym: lib/notmuch.h
printf {\nglobal:\n  notmuch.sym
-   sed  -n 's/^\s*\(notmuch_[a-z_]*\)\s*(.*/\t\1;/p' $  notmuch.sym
+   sed  -n 's/^[[:space:]]*\(notmuch_[a-z_]*\)[[:space:]]*(.*/'`printf 
\t`'\1;/p' $  notmuch.sym
printf local: *;\n};\n  notmuch.sym
 
 $(dir)/$(SONAME): $(dir)/$(LIBNAME)
-- 
1.7.4.1

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Preventing the user shooting themself in the foot

2011-06-29 Thread Robin Green
It's really dangerous to use the 'a' key in notmuch-mode in an inbox
thread which has multiple unread replies! Yes, the other unread replies
will still be tagged unread, but the user might not immediately be aware
of them. It would be really useful to have an optional warning ("More
unread messages in this thread, are you sure?") for this situation!


Preventing the user shooting themself in the foot

2011-06-29 Thread Robin Green
It's really dangerous to use the 'a' key in notmuch-mode in an inbox
thread which has multiple unread replies! Yes, the other unread replies
will still be tagged unread, but the user might not immediately be aware
of them. It would be really useful to have an optional warning (More
unread messages in this thread, are you sure?) for this situation!
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Drafts being tagged as inbox

2011-06-28 Thread Robin Green
On Tue, 28 Jun 2011 08:34:44 +0200, Pieter Praet  wrote:
> notmuch tag -inbox +draft -- folder:${where_your_drafts_reside}

My notmuch help does not mention "folder:", and indeed folder:drafts as a
search term is just treated as the words folder and drafts. Perhaps this
is implemented in git head. However, when I try to compile git head on
Dragonfly BSD, I get this error:

CXX -O2 notmuch-shared
notmuch-count.o: In function `notmuch_count_command':
notmuch-count.c:(.text+0x63): undefined reference to `notmuch_database_open'
notmuch-count.c:(.text+0x9d): undefined reference to `notmuch_query_create'
notmuch-count.c:(.text+0xb1): undefined reference to 
`notmuch_query_count_messages'
notmuch-count.c:(.text+0xc9): undefined reference to `notmuch_query_destroy'
notmuch-count.c:(.text+0xd1): undefined reference to `notmuch_database_close'
notmuch-dump.o: In function `notmuch_dump_command':
notmuch-dump.c:(.text+0x33): undefined reference to `notmuch_database_open'
notmuch-dump.c:(.text+0x4e): undefined reference to `notmuch_query_create'
notmuch-dump.c:(.text+0x67): undefined reference to `notmuch_query_set_sort'
notmuch-dump.c:(.text+0x81): undefined reference to 
`notmuch_query_search_messages'
notmuch-dump.c:(.text+0x8c): undefined reference to `notmuch_messages_valid'
notmuch-dump.c:(.text+0xa4): undefined reference to `notmuch_messages_get'
notmuch-dump.c:(.text+0xaf): undefined reference to 
`notmuch_message_get_message_id'
notmuch-dump.c:(.text+0xcb): undefined reference to `notmuch_message_get_tags'
notmuch-dump.c:(.text+0xe5): undefined reference to `notmuch_tags_get'
notmuch-dump.c:(.text+0xf9): undefined reference to `notmuch_tags_move_to_next'
notmuch-dump.c:(.text+0x10a): undefined reference to `notmuch_tags_valid'
notmuch-dump.c:(.text+0x14d): undefined reference to `notmuch_message_destroy'
notmuch-dump.c:(.text+0x155): undefined reference to 
`notmuch_messages_move_to_next'
notmuch-dump.c:(.text+0x15d): undefined reference to `notmuch_messages_valid'
notmuch-dump.c:(.text+0x17a): undefined reference to `notmuch_query_destroy'
notmuch-dump.c:(.text+0x182): undefined reference to `notmuch_database_close'
notmuch-new.o: In function `_remove_directory':
notmuch-new.c:(.text+0x585): undefined reference to 
`notmuch_database_get_directory'
notmuch-new.c:(.text+0x592): undefined reference to 
`notmuch_directory_get_child_files'
notmuch-new.c:(.text+0x5b8): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0x5c0): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0x5cc): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0x5f1): undefined reference to 
`notmuch_database_remove_message'
notmuch-new.c:(.text+0x609): undefined reference to 
`notmuch_directory_get_child_directories'
notmuch-new.c:(.text+0x616): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0x65c): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0x664): undefined reference to `notmuch_filenames_valid'
notmuch-new.o: In function `add_files_recursive':
notmuch-new.c:(.text+0x7d6): undefined reference to 
`notmuch_database_get_directory'
notmuch-new.c:(.text+0x7e3): undefined reference to 
`notmuch_directory_get_mtime'
notmuch-new.c:(.text+0xa24): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xa3f): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xa6b): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0xa73): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xa7f): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xb08): undefined reference to `notmuch_filenames_destroy'
notmuch-new.c:(.text+0xb16): undefined reference to `notmuch_filenames_destroy'
notmuch-new.c:(.text+0xb2c): undefined reference to `notmuch_directory_destroy'
notmuch-new.c:(.text+0xb64): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0xb6c): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xb7c): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xb97): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xbc9): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xbf5): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0xbfd): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xc14): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xc40): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0xc48): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xc69): undefined reference to 
`notmuch_directory_set_mtime'
notmuch-new.c:(.text+0xcf9): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xd05): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xdca): undefined reference to 

Re: Drafts being tagged as inbox

2011-06-28 Thread Robin Green
On Tue, 28 Jun 2011 08:34:44 +0200, Pieter Praet pie...@praet.org wrote:
 notmuch tag -inbox +draft -- folder:${where_your_drafts_reside}

My notmuch help does not mention folder:, and indeed folder:drafts as a
search term is just treated as the words folder and drafts. Perhaps this
is implemented in git head. However, when I try to compile git head on
Dragonfly BSD, I get this error:

CXX -O2 notmuch-shared
notmuch-count.o: In function `notmuch_count_command':
notmuch-count.c:(.text+0x63): undefined reference to `notmuch_database_open'
notmuch-count.c:(.text+0x9d): undefined reference to `notmuch_query_create'
notmuch-count.c:(.text+0xb1): undefined reference to 
`notmuch_query_count_messages'
notmuch-count.c:(.text+0xc9): undefined reference to `notmuch_query_destroy'
notmuch-count.c:(.text+0xd1): undefined reference to `notmuch_database_close'
notmuch-dump.o: In function `notmuch_dump_command':
notmuch-dump.c:(.text+0x33): undefined reference to `notmuch_database_open'
notmuch-dump.c:(.text+0x4e): undefined reference to `notmuch_query_create'
notmuch-dump.c:(.text+0x67): undefined reference to `notmuch_query_set_sort'
notmuch-dump.c:(.text+0x81): undefined reference to 
`notmuch_query_search_messages'
notmuch-dump.c:(.text+0x8c): undefined reference to `notmuch_messages_valid'
notmuch-dump.c:(.text+0xa4): undefined reference to `notmuch_messages_get'
notmuch-dump.c:(.text+0xaf): undefined reference to 
`notmuch_message_get_message_id'
notmuch-dump.c:(.text+0xcb): undefined reference to `notmuch_message_get_tags'
notmuch-dump.c:(.text+0xe5): undefined reference to `notmuch_tags_get'
notmuch-dump.c:(.text+0xf9): undefined reference to `notmuch_tags_move_to_next'
notmuch-dump.c:(.text+0x10a): undefined reference to `notmuch_tags_valid'
notmuch-dump.c:(.text+0x14d): undefined reference to `notmuch_message_destroy'
notmuch-dump.c:(.text+0x155): undefined reference to 
`notmuch_messages_move_to_next'
notmuch-dump.c:(.text+0x15d): undefined reference to `notmuch_messages_valid'
notmuch-dump.c:(.text+0x17a): undefined reference to `notmuch_query_destroy'
notmuch-dump.c:(.text+0x182): undefined reference to `notmuch_database_close'
notmuch-new.o: In function `_remove_directory':
notmuch-new.c:(.text+0x585): undefined reference to 
`notmuch_database_get_directory'
notmuch-new.c:(.text+0x592): undefined reference to 
`notmuch_directory_get_child_files'
notmuch-new.c:(.text+0x5b8): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0x5c0): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0x5cc): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0x5f1): undefined reference to 
`notmuch_database_remove_message'
notmuch-new.c:(.text+0x609): undefined reference to 
`notmuch_directory_get_child_directories'
notmuch-new.c:(.text+0x616): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0x65c): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0x664): undefined reference to `notmuch_filenames_valid'
notmuch-new.o: In function `add_files_recursive':
notmuch-new.c:(.text+0x7d6): undefined reference to 
`notmuch_database_get_directory'
notmuch-new.c:(.text+0x7e3): undefined reference to 
`notmuch_directory_get_mtime'
notmuch-new.c:(.text+0xa24): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xa3f): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xa6b): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0xa73): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xa7f): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xb08): undefined reference to `notmuch_filenames_destroy'
notmuch-new.c:(.text+0xb16): undefined reference to `notmuch_filenames_destroy'
notmuch-new.c:(.text+0xb2c): undefined reference to `notmuch_directory_destroy'
notmuch-new.c:(.text+0xb64): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0xb6c): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xb7c): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xb97): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xbc9): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xbf5): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0xbfd): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xc14): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xc40): undefined reference to 
`notmuch_filenames_move_to_next'
notmuch-new.c:(.text+0xc48): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xc69): undefined reference to 
`notmuch_directory_set_mtime'
notmuch-new.c:(.text+0xcf9): undefined reference to `notmuch_filenames_valid'
notmuch-new.c:(.text+0xd05): undefined reference to `notmuch_filenames_get'
notmuch-new.c:(.text+0xdca): undefined reference to 

Drafts being tagged as inbox

2011-06-27 Thread Robin Green
My drafts (created using emacs message mode) are being tagged as
inbox. However, they are not tagged as drafts. This is because emacs
message mode does not store drafts in Maildir format, so there are no
Maildir flags (e.g. D for draft) to sync tags with.

Now, I could simply store drafts somewhere else, but then I wouldn't be
able to search them using notmuch. Is there another way to have drafts
correctly tagged?

Thanks,
Robin Green


Drafts being tagged as inbox

2011-06-27 Thread Robin Green
My drafts (created using emacs message mode) are being tagged as
inbox. However, they are not tagged as drafts. This is because emacs
message mode does not store drafts in Maildir format, so there are no
Maildir flags (e.g. D for draft) to sync tags with.

Now, I could simply store drafts somewhere else, but then I wouldn't be
able to search them using notmuch. Is there another way to have drafts
correctly tagged?

Thanks,
Robin Green
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Race condition for '*' command

2011-06-26 Thread Robin Green
On Sat, 25 Jun 2011 16:57:50 -0700, Jameson Graef Rollins  wrote:
> On Sat, 25 Jun 2011 23:18:52 +0100, Robin Green  
> wrote:
> > A race condition in the '*' command was noted when it was first
> > proposed. It looks to me like it still exists - has anything been done
> > about it?
> 
> Hi, Robin.  Can you explain what you mean by the "'*' command"?

Sorry - forgot to say I'm talking about the notmuch emacs mode. In that
mode '*' applies tags to all messages matching the current search query,
which means that (here's the race condition) new results that have
appeared since the last refresh will also be tagged.

-- 
Robin


Race condition for '*' command

2011-06-26 Thread Robin Green
Hi,

A race condition in the '*' command was noted when it was first
proposed. It looks to me like it still exists - has anything been done
about it?

Right now what I am doing is killing fetchmail, then using the '*'
command, then starting fetchmail again in daemon mode, which is a little
inconvenient. You see, in my setup fetchmail calls procmail to deliver
mails, and procmail calls "notmuch new" after delivering every mail.

Thanks,
Robin Green


Re: Race condition for '*' command

2011-06-26 Thread Robin Green
On Sat, 25 Jun 2011 16:57:50 -0700, Jameson Graef Rollins 
jroll...@finestructure.net wrote:
 On Sat, 25 Jun 2011 23:18:52 +0100, Robin Green gree...@greenrd.org wrote:
  A race condition in the '*' command was noted when it was first
  proposed. It looks to me like it still exists - has anything been done
  about it?
 
 Hi, Robin.  Can you explain what you mean by the '*' command?

Sorry - forgot to say I'm talking about the notmuch emacs mode. In that
mode '*' applies tags to all messages matching the current search query,
which means that (here's the race condition) new results that have
appeared since the last refresh will also be tagged.

-- 
Robin
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Race condition for '*' command

2011-06-25 Thread Robin Green
Hi,

A race condition in the '*' command was noted when it was first
proposed. It looks to me like it still exists - has anything been done
about it?

Right now what I am doing is killing fetchmail, then using the '*'
command, then starting fetchmail again in daemon mode, which is a little
inconvenient. You see, in my setup fetchmail calls procmail to deliver
mails, and procmail calls notmuch new after delivering every mail.

Thanks,
Robin Green
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch