unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* email snoozing in notmuch
@ 2014-12-10  1:03 Sebastian Fischmeister
  2014-12-10  8:14 ` Franz Fellner
  0 siblings, 1 reply; 5+ messages in thread
From: Sebastian Fischmeister @ 2014-12-10  1:03 UTC (permalink / raw)
  To: notmuch

Hi,

I'm thinking of how to realize the mail snoozing feature with notmuch,
so that certain emails won't become visible (in the search) until a
certain day/time (e.g., 10 days from now).

Using the tag as an absolute date when the mail should become visible
again, tags should be searchable and interpretable as dates. The search
would then be something like: notmuch search tag-as-date < now and
tag:inbox

Using the receive date as base and encoding the delay as relative time
from that, would still need the ability to interpret tag values as
numbers:

notmuch search date:01012011..15days and tag-as-number < 10 and tag:inbox

Any ideas how the snoozing feature can be implemented with what is
already present in notmuch?

Thanks,
  Sebastian

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: email snoozing in notmuch
  2014-12-10  1:03 email snoozing in notmuch Sebastian Fischmeister
@ 2014-12-10  8:14 ` Franz Fellner
  2014-12-10 17:00   ` Richard Lawrence
  0 siblings, 1 reply; 5+ messages in thread
From: Franz Fellner @ 2014-12-10  8:14 UTC (permalink / raw)
  To: Sebastian Fischmeister; +Cc: notmuch

Hi,

Sebastian Fischmeister wrote:
> Hi,
> 
> I'm thinking of how to realize the mail snoozing feature with notmuch,
> so that certain emails won't become visible (in the search) until a
> certain day/time (e.g., 10 days from now).
> 
> Using the tag as an absolute date when the mail should become visible
> again, tags should be searchable and interpretable as dates. The search
> would then be something like: notmuch search tag-as-date < now and
> tag:inbox

It is not neccessary to make notmuch interpret tags as date - just interpret them yourself ;)
You can easily run your own scripts and modify tags/mails. So a simple solution might be:
* Add "snoozed" to your notmuch exclude_tags (see config file)
* To snooze a mail run in your mail client "tag +snoozed +snoozeby-10-days"
  or "tag +snoozed +snoozeuntil-2015-01-09"
* Your script (e.g. run as cronjob or after notmuch new) now 
  - queries for "tag:snoozed"
  - looks for snoozeuntil-* tag and parses the tag into a date. If date < now remove snooze-tags.
  - looks for (relative) snoozeby tag and transform it into (absolute) snoozeuntil tag.
(should be not too hard using e.g. the python or ruby bindings)

Of course you can use an own email header to store the snoozeuntil value.
With such a header it should be possible to use afew [1] for automated snooze-tag-management
instead of a hand-crafted script.

Regards
Franz

[1] https://github.com/teythoon/afew

> 
> Using the receive date as base and encoding the delay as relative time
> from that, would still need the ability to interpret tag values as
> numbers:
> 
> notmuch search date:01012011..15days and tag-as-number < 10 and tag:inbox
> 
> Any ideas how the snoozing feature can be implemented with what is
> already present in notmuch?
> 
> Thanks,
>   Sebastian
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: email snoozing in notmuch
  2014-12-10  8:14 ` Franz Fellner
@ 2014-12-10 17:00   ` Richard Lawrence
  2014-12-21 15:54     ` Sebastian Fischmeister
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Lawrence @ 2014-12-10 17:00 UTC (permalink / raw)
  To: notmuch

Franz Fellner <alpine.art.de@gmail.com>
writes:

> Sebastian Fischmeister wrote:
 
>> I'm thinking of how to realize the mail snoozing feature with notmuch,
>> so that certain emails won't become visible (in the search) until a
>> certain day/time (e.g., 10 days from now).
>> 
>> Using the tag as an absolute date when the mail should become visible
>> again, tags should be searchable and interpretable as dates. The search
>> would then be something like: notmuch search tag-as-date < now and
>> tag:inbox
>
> It is not neccessary to make notmuch interpret tags as date - just interpret them yourself ;)
> You can easily run your own scripts and modify tags/mails. So a simple solution might be:
> * Add "snoozed" to your notmuch exclude_tags (see config file)
> * To snooze a mail run in your mail client "tag +snoozed +snoozeby-10-days"
>   or "tag +snoozed +snoozeuntil-2015-01-09"
> * Your script (e.g. run as cronjob or after notmuch new) now 
>   - queries for "tag:snoozed"
>   - looks for snoozeuntil-* tag and parses the tag into a date. If date < now remove snooze-tags.
>   - looks for (relative) snoozeby tag and transform it into (absolute) snoozeuntil tag.
> (should be not too hard using e.g. the python or ruby bindings)

I actually do something like this.  It's not everything Sebastian was
looking for, but it's very simple, and works great for me.

I use a combination of a "pending" tag and a "byYYYYMMDD" tag.

From cron, I run the following to refile pending mail back to the inbox
when it comes due:

#!/bin/bash
DATE_STR=$(date +'%Y%m%d')
notmuch tag +inbox -pending -by$DATE_STR -- tag:by$DATE_STR

and in Emacs, I use the following key binding to snooze mail (or in the Mutt
terminology I borrowed, `postpone' it, hence the key):

(define-key notmuch-search-mode-map "P"
  (lambda ()
    "postpone message (remove inbox tag, add pending tag and refile date)"
    (interactive)
    (let* ((date-string (format-time-string "%Y%m%d" (org-read-date nil t)))
	   (date-tag (concat "+by" date-string)))
      (notmuch-search-tag `("-inbox" "+pending" ,date-tag)))))
      
(The `org-read-date' function gives me a nice easy way to pick a date
from a calendar.  I bind "P" to the same function in
notmuch-show-mode-map, too.)

Hope that helps!

Best,
Richard

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: email snoozing in notmuch
@ 2014-12-11 15:41 Trevor Jim
  0 siblings, 0 replies; 5+ messages in thread
From: Trevor Jim @ 2014-12-11 15:41 UTC (permalink / raw)
  To: sfischme; +Cc: notmuch

[-- Attachment #1: Type: text/plain, Size: 484 bytes --]

I've implemented this in elisp, here: https://github.com/tjim/nevermore/blob/master/nm.el#L745

Snooze has come up a repeatedly on this list. Maybe it would make sense to build it in to notmuch?

Of course, it can be built on top of notmuch so it's not necessary to bake it in. But there are other features in notmuch of which you could say the same, e.g., excluded tags.

The benefit of building it in would be a common interface/implementation that all UIs could use.



[-- Attachment #2.1: Type: text/html, Size: 619 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: email snoozing in notmuch
  2014-12-10 17:00   ` Richard Lawrence
@ 2014-12-21 15:54     ` Sebastian Fischmeister
  0 siblings, 0 replies; 5+ messages in thread
From: Sebastian Fischmeister @ 2014-12-21 15:54 UTC (permalink / raw)
  To: Richard Lawrence, notmuch

Hi Richard,

Thanks for the nice and simple solution. I prefer this one to a solution
like notmuch-snooze that stores the desnoozing in an external program
and thus complicates backups.

  Sebastian

Richard Lawrence <richard.lawrence@berkeley.edu> writes:

> Franz Fellner <alpine.art.de@gmail.com>
> writes:
>
>> Sebastian Fischmeister wrote:
>  
>>> I'm thinking of how to realize the mail snoozing feature with notmuch,
>>> so that certain emails won't become visible (in the search) until a
>>> certain day/time (e.g., 10 days from now).
>>> 
>>> Using the tag as an absolute date when the mail should become visible
>>> again, tags should be searchable and interpretable as dates. The search
>>> would then be something like: notmuch search tag-as-date < now and
>>> tag:inbox
>>
>> It is not neccessary to make notmuch interpret tags as date - just interpret them yourself ;)
>> You can easily run your own scripts and modify tags/mails. So a simple solution might be:
>> * Add "snoozed" to your notmuch exclude_tags (see config file)
>> * To snooze a mail run in your mail client "tag +snoozed +snoozeby-10-days"
>>   or "tag +snoozed +snoozeuntil-2015-01-09"
>> * Your script (e.g. run as cronjob or after notmuch new) now 
>>   - queries for "tag:snoozed"
>>   - looks for snoozeuntil-* tag and parses the tag into a date. If date < now remove snooze-tags.
>>   - looks for (relative) snoozeby tag and transform it into (absolute) snoozeuntil tag.
>> (should be not too hard using e.g. the python or ruby bindings)
>
> I actually do something like this.  It's not everything Sebastian was
> looking for, but it's very simple, and works great for me.
>
> I use a combination of a "pending" tag and a "byYYYYMMDD" tag.
>
> From cron, I run the following to refile pending mail back to the inbox
> when it comes due:
>
> #!/bin/bash
> DATE_STR=$(date +'%Y%m%d')
> notmuch tag +inbox -pending -by$DATE_STR -- tag:by$DATE_STR
>
> and in Emacs, I use the following key binding to snooze mail (or in the Mutt
> terminology I borrowed, `postpone' it, hence the key):
>
> (define-key notmuch-search-mode-map "P"
>   (lambda ()
>     "postpone message (remove inbox tag, add pending tag and refile date)"
>     (interactive)
>     (let* ((date-string (format-time-string "%Y%m%d" (org-read-date nil t)))
> 	   (date-tag (concat "+by" date-string)))
>       (notmuch-search-tag `("-inbox" "+pending" ,date-tag)))))
>       
> (The `org-read-date' function gives me a nice easy way to pick a date
> from a calendar.  I bind "P" to the same function in
> notmuch-show-mode-map, too.)
>
> Hope that helps!
>
> Best,
> Richard
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-12-21 15:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-10  1:03 email snoozing in notmuch Sebastian Fischmeister
2014-12-10  8:14 ` Franz Fellner
2014-12-10 17:00   ` Richard Lawrence
2014-12-21 15:54     ` Sebastian Fischmeister
  -- strict thread matches above, loose matches on Subject: below --
2014-12-11 15:41 Trevor Jim

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).