[notmuch] [PATCH] Name thread based on matching msgs instead of first msg.

2010-03-22 Thread Jesse Rosenthal

At the moment all threads are named based on the name of the first message
in the thread. However, this can cause problems if people either start
new threads by replying-all (as unfortunately, many out there do) or
change the subject of their mails to reflect a shift in a thread on a
list.

This patch names threads based on matches for the query, and the search
order. If the search order is oldest-first (as in the default inbox) it
chooses the oldest matching message as the subject. If the search order is
newest-first it chooses the newest one.

Reply prefixes ("Re: ", "Aw: ", "Sv: ", "Vs: ") are ignored
(case-insensitively) so a Re: won't change the subject.

Note that this adds a "sort" argument to _notmuch_thread_create and
_thread_add_matched_message, so that when constructing the thread we can
be aware of the sort order.
---
 lib/notmuch-private.h |3 ++-
 lib/query.cc  |3 ++-
 lib/thread.cc |   30 +++---
 3 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h
index d52d84d..94cce1b 100644
--- a/lib/notmuch-private.h
+++ b/lib/notmuch-private.h
@@ -205,7 +205,8 @@ notmuch_thread_t *
 _notmuch_thread_create (void *ctx,
notmuch_database_t *notmuch,
const char *thread_id,
-   const char *query_string);
+   const char *query_string,
+   notmuch_sort_t sort);

 /* message.cc */

diff --git a/lib/query.cc b/lib/query.cc
index 9266d35..946f367 100644
--- a/lib/query.cc
+++ b/lib/query.cc
@@ -297,7 +297,8 @@ notmuch_threads_get (notmuch_threads_t *threads)
 return _notmuch_thread_create (threads->query,
   threads->query->notmuch,
   threads->thread_id,
-  threads->query->query_string);
+  threads->query->query_string,
+  threads->query->sort);
 }

 void
diff --git a/lib/thread.cc b/lib/thread.cc
index ec80f85..9ba7b70 100644
--- a/lib/thread.cc
+++ b/lib/thread.cc
@@ -129,7 +129,8 @@ _thread_add_message (notmuch_thread_t *thread,

 static void
 _thread_add_matched_message (notmuch_thread_t *thread,
-notmuch_message_t *message)
+notmuch_message_t *message,
+notmuch_sort_t sort)
 {
 time_t date;
 notmuch_message_t *hashed_message;
@@ -142,6 +143,28 @@ _thread_add_matched_message (notmuch_thread_t *thread,
 if (date > thread->newest || ! thread->matched_messages)
thread->newest = date;

+const char *subject;
+const char *cleaned_subject;
+
+subject = notmuch_message_get_header (message, "subject");
+
+if ((strncasecmp (subject, "Re: ", 4) == 0) ||
+   (strncasecmp (subject, "Aw: ", 4) == 0) ||
+   (strncasecmp (subject, "Vs: ", 4) == 0) ||
+   (strncasecmp (subject, "Sv: ", 4) == 0)) {
+
+   cleaned_subject = talloc_strndup (thread,
+ subject + 4,
+ strlen(subject) - 4);
+} else {
+   cleaned_subject = talloc_strdup (thread, subject);
+}
+
+if ((sort == NOTMUCH_SORT_OLDEST_FIRST && date <= thread->newest) ||
+   (sort != NOTMUCH_SORT_OLDEST_FIRST && date == thread->newest)) {
+   thread->subject = talloc_strdup (thread, cleaned_subject);
+}
+
 thread->matched_messages++;

 if (g_hash_table_lookup_extended (thread->message_hash,
@@ -209,7 +232,8 @@ notmuch_thread_t *
 _notmuch_thread_create (void *ctx,
notmuch_database_t *notmuch,
const char *thread_id,
-   const char *query_string)
+   const char *query_string,
+   notmuch_sort_t sort)
 {
 notmuch_thread_t *thread;
 const char *thread_id_query_string, *matched_query_string;
@@ -284,7 +308,7 @@ _notmuch_thread_create (void *ctx,
 notmuch_messages_move_to_next (messages))
 {
message = notmuch_messages_get (messages);
-   _thread_add_matched_message (thread, message);
+   _thread_add_matched_message (thread, message, sort);
_notmuch_message_close (message);
 }

-- 
1.6.3.3



[notmuch] [PATCH] notmuch-new: Parse some maildir flags for labels

2010-03-22 Thread Michal Sojka
On Thu, 18 Mar 2010, Emil Sit wrote:
> Instead of blanket applying tag:inbox and tag:unread to
> all messages, when parsing a Maildir file, attempt to
> parse the flags encoded in the filename to determine whether
> to mark something as unread (and inbox).  Also, parse user
> flagged messages and trash messages.
> 
> Signed-off-by: Emil Sit 
> ---
> I confess that I'm not actively following the mailing list or actively using
> notmuch to read mail (the vim client seems not to work well for me on Ubuntu
> Hardy and not a huge emacs fan and don't have emacs23; still using 
> mutt/mairix)
> so I apologize if something like this has been discussed/rejected before.  
> I've
> been playing with this patch locally and it definitely helped with the initial
> import.  It's a nice complement to notmuchsync.

Hi,

if I remember, there has been at least three different patches for this,
so you are the fourth :-) You're right that it helps a lot with initial
import. To promote my work a little bit, I use bidirectional
synchronization between maildir flags and notmuch tags, which I sent in
id:1268926780-20045-4-git-send-email-sojkam1 at fel.cvut.cz. I use IMAP
clients from time to time and this helps me a lot because the IMAP
server has almost never outdated status.

Bye
Michal


[notmuch] [PATCH] Name thread based on matching msgs instead of first msg.

2010-03-22 Thread Jesse Rosenthal

At the moment all threads are named based on the name of the first message
in the thread. However, this can cause problems if people either start
new threads by replying-all (as unfortunately, many out there do) or
change the subject of their mails to reflect a shift in a thread on a
list.

This patch names threads based on matches for the query, and the search
order. If the search order is oldest-first (as in the default inbox) it
chooses the oldest matching message as the subject. If the search order is
newest-first it chooses the newest one.

Reply prefixes ("Re: ", "Aw: ", "Sv: ", "Vs: ") are ignored
(case-insensitively) so a Re: won't change the subject.

Note that this adds a "sort" argument to _notmuch_thread_create and
_thread_add_matched_message, so that when constructing the thread we can
be aware of the sort order.
---
 lib/notmuch-private.h |3 ++-
 lib/query.cc  |3 ++-
 lib/thread.cc |   30 +++---
 3 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h
index d52d84d..94cce1b 100644
--- a/lib/notmuch-private.h
+++ b/lib/notmuch-private.h
@@ -205,7 +205,8 @@ notmuch_thread_t *
 _notmuch_thread_create (void *ctx,
notmuch_database_t *notmuch,
const char *thread_id,
-   const char *query_string);
+   const char *query_string,
+   notmuch_sort_t sort);
 
 /* message.cc */
 
diff --git a/lib/query.cc b/lib/query.cc
index 9266d35..946f367 100644
--- a/lib/query.cc
+++ b/lib/query.cc
@@ -297,7 +297,8 @@ notmuch_threads_get (notmuch_threads_t *threads)
 return _notmuch_thread_create (threads->query,
   threads->query->notmuch,
   threads->thread_id,
-  threads->query->query_string);
+  threads->query->query_string,
+  threads->query->sort);
 }
 
 void
diff --git a/lib/thread.cc b/lib/thread.cc
index ec80f85..9ba7b70 100644
--- a/lib/thread.cc
+++ b/lib/thread.cc
@@ -129,7 +129,8 @@ _thread_add_message (notmuch_thread_t *thread,
 
 static void
 _thread_add_matched_message (notmuch_thread_t *thread,
-notmuch_message_t *message)
+notmuch_message_t *message,
+notmuch_sort_t sort)
 {
 time_t date;
 notmuch_message_t *hashed_message;
@@ -142,6 +143,28 @@ _thread_add_matched_message (notmuch_thread_t *thread,
 if (date > thread->newest || ! thread->matched_messages)
thread->newest = date;
 
+const char *subject;
+const char *cleaned_subject;
+
+subject = notmuch_message_get_header (message, "subject");
+
+if ((strncasecmp (subject, "Re: ", 4) == 0) ||
+   (strncasecmp (subject, "Aw: ", 4) == 0) ||
+   (strncasecmp (subject, "Vs: ", 4) == 0) ||
+   (strncasecmp (subject, "Sv: ", 4) == 0)) {
+
+   cleaned_subject = talloc_strndup (thread,
+ subject + 4,
+ strlen(subject) - 4);
+} else {
+   cleaned_subject = talloc_strdup (thread, subject);
+}
+
+if ((sort == NOTMUCH_SORT_OLDEST_FIRST && date <= thread->newest) ||
+   (sort != NOTMUCH_SORT_OLDEST_FIRST && date == thread->newest)) {
+   thread->subject = talloc_strdup (thread, cleaned_subject);
+}
+
 thread->matched_messages++;
 
 if (g_hash_table_lookup_extended (thread->message_hash,
@@ -209,7 +232,8 @@ notmuch_thread_t *
 _notmuch_thread_create (void *ctx,
notmuch_database_t *notmuch,
const char *thread_id,
-   const char *query_string)
+   const char *query_string,
+   notmuch_sort_t sort)
 {
 notmuch_thread_t *thread;
 const char *thread_id_query_string, *matched_query_string;
@@ -284,7 +308,7 @@ _notmuch_thread_create (void *ctx,
 notmuch_messages_move_to_next (messages))
 {
message = notmuch_messages_get (messages);
-   _thread_add_matched_message (thread, message);
+   _thread_add_matched_message (thread, message, sort);
_notmuch_message_close (message);
 }
 
-- 
1.6.3.3

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


[notmuch] JSON based emacs UI

2010-03-22 Thread David Edmondson
On Mon, 22 Mar 2010 14:47:39 +, David Edmondson  wrote:
> This is lightly tested, but if anyone else wants to give it a try I
> would be interested in feedback. There were a couple of places in the
> current code where I wasn't completely sure of the intention, so I may
> have inadvertently diverged (notmuch-show-rewind is a good example).

Oops, it doesn't remove the "unread" tag.

dme.
-- 
David Edmondson, http://dme.org


Re: [notmuch] [PATCH] notmuch-new: Parse some maildir flags for labels

2010-03-22 Thread Michal Sojka
On Thu, 18 Mar 2010, Emil Sit wrote:
> Instead of blanket applying tag:inbox and tag:unread to
> all messages, when parsing a Maildir file, attempt to
> parse the flags encoded in the filename to determine whether
> to mark something as unread (and inbox).  Also, parse user
> flagged messages and trash messages.
> 
> Signed-off-by: Emil Sit 
> ---
> I confess that I'm not actively following the mailing list or actively using
> notmuch to read mail (the vim client seems not to work well for me on Ubuntu
> Hardy and not a huge emacs fan and don't have emacs23; still using 
> mutt/mairix)
> so I apologize if something like this has been discussed/rejected before.  
> I've
> been playing with this patch locally and it definitely helped with the initial
> import.  It's a nice complement to notmuchsync.

Hi,

if I remember, there has been at least three different patches for this,
so you are the fourth :-) You're right that it helps a lot with initial
import. To promote my work a little bit, I use bidirectional
synchronization between maildir flags and notmuch tags, which I sent in
id:1268926780-20045-4-git-send-email-sojk...@fel.cvut.cz. I use IMAP
clients from time to time and this helps me a lot because the IMAP
server has almost never outdated status.

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


[notmuch] JSON based emacs UI

2010-03-22 Thread David Edmondson
I'm pushed the first stage of a JSON based emacs UI to the repository at
http://github.com/dme/notmuch (it's in the "master" branch).

This is intended to be functionally equivalent to the current UI, though
HTML display is not present (see below).

This is lightly tested, but if anyone else wants to give it a try I
would be interested in feedback. There were a couple of places in the
current code where I wasn't completely sure of the intention, so I may
have inadvertently diverged (notmuch-show-rewind is a good example).

For HTML display and other improved MIME support my intention is to
enhance notmuch to allow single parts to be output (something like:
"notmuch show --part=2 id:k74hf87df.fsf at fish.org") and use that from the
UI code. No idea when I'll get to it, though.

Carl - the main changeset is large, but I couldn't see a sensible way to
break it up into smaller pieces. I'm open to suggestions.

Finally, if anyone else is working on something like this, please let me
know - I'd be interested in collaborating.

ps. Thanks to aep in #notmuch for encouraging me to just get on with it.

dme.
-- 
David Edmondson, http://dme.org


[notmuch] Using notmuch as an address book for tab-completion

2010-03-22 Thread Sebastian Spaeth
On Mon, 22 Mar 2010 11:14:22 +0100, Ruben Pollan  
wrote:
> Nice feature. I think it should be implemented in the library. There is 
> already
> a function notmuch_database_get_all_tags, will be nice to have a function
> notmuch_database_get_all_addresses.

Actually, i don't think it's necessary to extend the library to get all
addresses, it is really trivial to get them, using the current API. As
to whether to extend the notmuch binary as to output all addresses, I
think this will be taken care of the output filtering once
implemented. e.g. get all addresses with:

notmuch show --format=json --output:to,cc,bcc ''

Sebastian


[notmuch] cnotmuch 0.1.1 release

2010-03-22 Thread Sebastian Spaeth
Hey all, given that there is at least one user of cnotmuch out there
now, I just put it up on the python package repository:
 http://pypi.python.org/pypi/cnotmuch

This means you can do "easy_install cnotmuch" on your linux box and it
will get installed into:

/usr/local/lib/python2.x/dist-packages/

For uninstalling, you'll need to remove the "cnotmuch-0.1-py2.x.egg"
directory and delete one entry in the "easy-install.pth" file in that
directory.

It needs to have a libnotmuch.so or libnotmuch.so.1 available in some
library folder or will raise an exception when loading.
"OSError: libnotmuch.so.1: cannot open shared object file: No such file or 
directory"

Have fun, and file issues at the issue tracker at
http://bitbucket.org/spaetz/cnotmuch/issues/

Sebastian


[notmuch] [PATCH] notmuch-new: Parse some maildir flags for labels

2010-03-22 Thread Emil Sit
Instead of blanket applying tag:inbox and tag:unread to
all messages, when parsing a Maildir file, attempt to
parse the flags encoded in the filename to determine whether
to mark something as unread (and inbox).  Also, parse user
flagged messages and trash messages.

Signed-off-by: Emil Sit 
---
I confess that I'm not actively following the mailing list or actively using
notmuch to read mail (the vim client seems not to work well for me on Ubuntu
Hardy and not a huge emacs fan and don't have emacs23; still using mutt/mairix)
so I apologize if something like this has been discussed/rejected before.  I've
been playing with this patch locally and it definitely helped with the initial
import.  It's a nice complement to notmuchsync.

Hope someone finds it useful.

 notmuch-new.c |   32 
 1 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/notmuch-new.c b/notmuch-new.c
index 44b50aa..f937e85 100644
--- a/notmuch-new.c
+++ b/notmuch-new.c
@@ -94,10 +94,34 @@ _filename_list_add (_filename_list_t *list,
 }
 
 static void
-tag_inbox_and_unread (notmuch_message_t *message)
+tag_maildir_message (const char *filename, notmuch_message_t *message)
 {
-notmuch_message_add_tag (message, "inbox");
-notmuch_message_add_tag (message, "unread");
+notmuch_bool_t is_read = FALSE;
+
+const char *p = strrchr (filename, ':');
+if (p != NULL && strncmp(p + 1, "2,", 2) == 0) {
+/* This appears to be a valid Maildir filename.
+ * Interpret some basic semantics */
+while (*p) {
+switch (*p) {
+case 'S': /* seen */
+is_read = TRUE;
+break;
+case 'T': /* trashed */
+notmuch_message_add_tag (message, "trash");
+break;
+case 'F': /* flagged */
+notmuch_message_add_tag (message, "flagged");
+break;
+}
+p++;
+}
+}
+
+if (!is_read) {
+notmuch_message_add_tag (message, "inbox");
+notmuch_message_add_tag (message, "unread");
+}
 }
 
 static void
@@ -412,7 +436,7 @@ add_files_recursive (notmuch_database_t *notmuch,
/* success */
case NOTMUCH_STATUS_SUCCESS:
state->added_messages++;
-   tag_inbox_and_unread (message);
+   tag_maildir_message (next, message);
break;
/* Non-fatal issues (go on to next file) */
case NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID:
-- 
1.6.3.3

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


[notmuch] reverse iterators

2010-03-22 Thread Ruben Pollan
On 21:07, Sun 21 Mar 10, Sebastian Spaeth wrote:
> On Sat, 20 Mar 2010 11:23:20 +0100, Ruben Pollan  
> wrote:
> > 
> > Adds support to reverse iteration on messages, threads and tags. To revew 
> > and
> > think if makes sense to include them on notmuch or wait until they have a 
> > real
> > use.
> 
> /me raises arm. Real use case here! Personally, I don't need the
> backwards operator (and I don't see the case where I would need to go
> back very often).

For me is pretty useful because I use the iterator as a cursor on an ncurses
notmuch interface. So the selected thread is where the iterator is and the user
can to go forward or backwards.

> But a _move_to_first() for threads, messages (and
> probably tags), would be really useful to me now:

:) Happy to see there is someone else needing it.


-- 
Rub?n Poll?n  | jabber:meskio at jabber.org
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Lo hago para no volverme loco cuando noto
que solo me queda un demonio en un hombro
por que se ha cortado las venas
el ?ngel que hab?a en el otro.
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: 
<http://notmuchmail.org/pipermail/notmuch/attachments/20100322/71079a1a/attachment.pgp>


[notmuch] Using notmuch as an address book for tab-completion

2010-03-22 Thread Ruben Pollan
On 22:35, Sat 20 Mar 10, Jesse Rosenthal wrote:
> There was some talk on IRC ages ago about using notmuch as an
> address-book for tab-completion in emacs message mode. Thanks to some
> great recent work (Ingmar Vanhassel's shared lib and Sebastians's
> cnotmuch python lib) I have been able to take a first step in that
> direction. I've written a python script (with some help and suggestions
> from spaetz) which can perform the address-book functionality, and a
> backend for emacs's EUDC address-lookup functionality to access the
> script.

Nice feature. I think it should be implemented in the library. There is already
a function notmuch_database_get_all_tags, will be nice to have a function
notmuch_database_get_all_addresses. And make it somehow accessible from the
notmuch cli.

-- 
Rub?n Poll?n  | jabber:meskio at jabber.org
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Sed realistas, exigid lo imposible.
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: 
<http://notmuchmail.org/pipermail/notmuch/attachments/20100322/2e64ff55/attachment.pgp>


[notmuch] Using notmuch as an address book for tab-completion

2010-03-22 Thread Sebastian Spaeth
On Mon, 22 Mar 2010 00:13:57 +0100, Michal Sojka  wrote:
> On Sun, 21 Mar 2010, Sebastian Spaeth wrote:
> > That reminds me that there is still no installation tool for cnotmuch at
> > all. I'll have to have a look into that.
> 
> Hi, I have also a silly question :) Why did you call it cnotmuch? I'd
> expect such a thing to be called pynotmuch or similar. When I saw
> cnotmuch here I had to search other emails to find what it really is.
> Fortunately, with notmuch, I found it very quickly :-D.

Hi Michal,

no silly question at all ;). I found pynotmuch a bit predictive and
boring, and as this is the notmuch bindings to the C-library notmuch, I
just called it 'cnotmuch'. A "pynotmuch" would be a pure python
re-implementation in my mindset...

Just like the c-version of the StringIO module is called cStringIO. etc,
so I am not completely off the track here.

Having that said, I am not particularly attached to that name and can
easily change it. I am in the process of uploading it to pypi.python.org
though, so it will soon be available for a simple local install with
"easy_install cnotmuch".

Next to finding it, the only reference a user will usually only need is
"from cnotmuch import notmuch", the rest is just "notmuch" stuff.

Sebastian


Re: [notmuch] JSON based emacs UI

2010-03-22 Thread David Edmondson
On Mon, 22 Mar 2010 14:47:39 +, David Edmondson  wrote:
> This is lightly tested, but if anyone else wants to give it a try I
> would be interested in feedback. There were a couple of places in the
> current code where I wasn't completely sure of the intention, so I may
> have inadvertently diverged (notmuch-show-rewind is a good example).

Oops, it doesn't remove the "unread" tag.

dme.
-- 
David Edmondson, http://dme.org
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[notmuch] JSON based emacs UI

2010-03-22 Thread David Edmondson
I'm pushed the first stage of a JSON based emacs UI to the repository at
http://github.com/dme/notmuch (it's in the "master" branch).

This is intended to be functionally equivalent to the current UI, though
HTML display is not present (see below).

This is lightly tested, but if anyone else wants to give it a try I
would be interested in feedback. There were a couple of places in the
current code where I wasn't completely sure of the intention, so I may
have inadvertently diverged (notmuch-show-rewind is a good example).

For HTML display and other improved MIME support my intention is to
enhance notmuch to allow single parts to be output (something like:
"notmuch show --part=2 id:k74hf87df@fish.org") and use that from the
UI code. No idea when I'll get to it, though.

Carl - the main changeset is large, but I couldn't see a sensible way to
break it up into smaller pieces. I'm open to suggestions.

Finally, if anyone else is working on something like this, please let me
know - I'd be interested in collaborating.

ps. Thanks to aep in #notmuch for encouraging me to just get on with it.

dme.
-- 
David Edmondson, http://dme.org
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [notmuch] Using notmuch as an address book for tab-completion

2010-03-22 Thread Sebastian Spaeth
On Mon, 22 Mar 2010 11:14:22 +0100, Ruben Pollan  wrote:
> Nice feature. I think it should be implemented in the library. There is 
> already
> a function notmuch_database_get_all_tags, will be nice to have a function
> notmuch_database_get_all_addresses.

Actually, i don't think it's necessary to extend the library to get all
addresses, it is really trivial to get them, using the current API. As
to whether to extend the notmuch binary as to output all addresses, I
think this will be taken care of the output filtering once
implemented. e.g. get all addresses with:

notmuch show --format=json --output:to,cc,bcc ''

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


[notmuch] cnotmuch 0.1.1 release

2010-03-22 Thread Sebastian Spaeth
Hey all, given that there is at least one user of cnotmuch out there
now, I just put it up on the python package repository:
 http://pypi.python.org/pypi/cnotmuch

This means you can do "easy_install cnotmuch" on your linux box and it
will get installed into:

/usr/local/lib/python2.x/dist-packages/

For uninstalling, you'll need to remove the "cnotmuch-0.1-py2.x.egg"
directory and delete one entry in the "easy-install.pth" file in that
directory.

It needs to have a libnotmuch.so or libnotmuch.so.1 available in some
library folder or will raise an exception when loading.
"OSError: libnotmuch.so.1: cannot open shared object file: No such file or 
directory"

Have fun, and file issues at the issue tracker at
http://bitbucket.org/spaetz/cnotmuch/issues/

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


Re: [notmuch] reverse iterators

2010-03-22 Thread Ruben Pollan
On 21:07, Sun 21 Mar 10, Sebastian Spaeth wrote:
> On Sat, 20 Mar 2010 11:23:20 +0100, Ruben Pollan  
> wrote:
> > 
> > Adds support to reverse iteration on messages, threads and tags. To revew 
> > and
> > think if makes sense to include them on notmuch or wait until they have a 
> > real
> > use.
> 
> /me raises arm. Real use case here! Personally, I don't need the
> backwards operator (and I don't see the case where I would need to go
> back very often).

For me is pretty useful because I use the iterator as a cursor on an ncurses
notmuch interface. So the selected thread is where the iterator is and the user
can to go forward or backwards.

> But a _move_to_first() for threads, messages (and
> probably tags), would be really useful to me now:

:) Happy to see there is someone else needing it.


-- 
Rubén Pollán  | jabber:mes...@jabber.org
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Lo hago para no volverme loco cuando noto
que solo me queda un demonio en un hombro
por que se ha cortado las venas
el ángel que había en el otro.


signature.asc
Description: Digital signature
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [notmuch] Using notmuch as an address book for tab-completion

2010-03-22 Thread Ruben Pollan
On 22:35, Sat 20 Mar 10, Jesse Rosenthal wrote:
> There was some talk on IRC ages ago about using notmuch as an
> address-book for tab-completion in emacs message mode. Thanks to some
> great recent work (Ingmar Vanhassel's shared lib and Sebastians's
> cnotmuch python lib) I have been able to take a first step in that
> direction. I've written a python script (with some help and suggestions
> from spaetz) which can perform the address-book functionality, and a
> backend for emacs's EUDC address-lookup functionality to access the
> script.

Nice feature. I think it should be implemented in the library. There is already
a function notmuch_database_get_all_tags, will be nice to have a function
notmuch_database_get_all_addresses. And make it somehow accessible from the
notmuch cli.

-- 
Rubén Pollán  | jabber:mes...@jabber.org
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Sed realistas, exigid lo imposible.


signature.asc
Description: Digital signature
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [notmuch] Using notmuch as an address book for tab-completion

2010-03-22 Thread Sebastian Spaeth
On Mon, 22 Mar 2010 00:13:57 +0100, Michal Sojka  wrote:
> On Sun, 21 Mar 2010, Sebastian Spaeth wrote:
> > That reminds me that there is still no installation tool for cnotmuch at
> > all. I'll have to have a look into that.
> 
> Hi, I have also a silly question :) Why did you call it cnotmuch? I'd
> expect such a thing to be called pynotmuch or similar. When I saw
> cnotmuch here I had to search other emails to find what it really is.
> Fortunately, with notmuch, I found it very quickly :-D.

Hi Michal,

no silly question at all ;). I found pynotmuch a bit predictive and
boring, and as this is the notmuch bindings to the C-library notmuch, I
just called it 'cnotmuch'. A "pynotmuch" would be a pure python
re-implementation in my mindset...

Just like the c-version of the StringIO module is called cStringIO. etc,
so I am not completely off the track here.

Having that said, I am not particularly attached to that name and can
easily change it. I am in the process of uploading it to pypi.python.org
though, so it will soon be available for a simple local install with
"easy_install cnotmuch".

Next to finding it, the only reference a user will usually only need is
"from cnotmuch import notmuch", the rest is just "notmuch" stuff.

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


[notmuch] Using notmuch as an address book for tab-completion

2010-03-22 Thread Michal Sojka
On Sun, 21 Mar 2010, Sebastian Spaeth wrote:
> That reminds me that there is still no installation tool for cnotmuch at
> all. I'll have to have a look into that.

Hi, I have also a silly question :) Why did you call it cnotmuch? I'd
expect such a thing to be called pynotmuch or similar. When I saw
cnotmuch here I had to search other emails to find what it really is.
Fortunately, with notmuch, I found it very quickly :-D.

M.