[notmuch] [PATCH] Support for deletion (patch included)

2010-03-01 Thread Michal Sojka
On Thu, 25 Feb 2010 01:00:04 +0100 (CET), racin at free.fr wrote:
> Hi Carl,
> 
> > Could you also write a commit message describing what the patch does?
> > The easiest way for me to apply that would be if you would create a git
> > commit, then run "git format-patch origin/master" and mail the resulting
> > files, (the "git send-email" command can be used here, or you can insert
> > the files into a mail-composition buffer and modify them as needed).
> > 
> 
> OK, here it is (comments below). I had trouble splitting the patches into a 
> patch series; I
> found git add -p, but isn't there a better interface for selecting
> patches?

What about "git gui"?

Michal


Re: [notmuch] [PATCH] Support for deletion (patch included)

2010-03-01 Thread Michal Sojka
On Thu, 25 Feb 2010 01:00:04 +0100 (CET), ra...@free.fr wrote:
 Hi Carl,
 
  Could you also write a commit message describing what the patch does?
  The easiest way for me to apply that would be if you would create a git
  commit, then run git format-patch origin/master and mail the resulting
  files, (the git send-email command can be used here, or you can insert
  the files into a mail-composition buffer and modify them as needed).
  
 
 OK, here it is (comments below). I had trouble splitting the patches into a 
 patch series; I
 found git add -p, but isn't there a better interface for selecting
 patches?

What about git gui?

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


[notmuch] [PATCH] Support for deletion (patch included)

2010-02-27 Thread ra...@free.fr
Here they are; as I don't know how to include them in the body, I put the 
patches as attachments. I hope this 
will be convienient enough for you.


Matthieu

- racin at free.fr a ?crit :

> Carl: The patch in the mail has problems; apparently I have to
> manually add scissorlines to the mail for it
> to be processed by git-am. I thought this was automatically added. (I
> hate the git UI -- nothing is consistent,
> concepts have different names, the definition of scissor lines is as
> precise as "A line that mainly consists of scissors (either ">8" or
> "8<") and perforation (dash "-") --, but I guess we can get used to it
> after a while...)
> 
> I'll send you a proper patch as soon as I can. Meanwhile, I'm sure you
> have comments on this updated patch!
> 
> Matthieu
>
-- next part --
A non-text attachment was scrubbed...
Name: 0002-Add-support-for-deletion-in-the-emacs-interface.patch
Type: text/x-diff
Size: 5934 bytes
Desc: not available
URL: 

-- next part --
A non-text attachment was scrubbed...
Name: 0001-Add-and-use-notmuch-show-forall-in-thread-macro.patch
Type: text/x-diff
Size: 1581 bytes
Desc: not available
URL: 



Re: [notmuch] [PATCH] Support for deletion (patch included)

2010-02-27 Thread racin
Here they are; as I don't know how to include them in the body, I put the 
patches as attachments. I hope this 
will be convienient enough for you.


Matthieu

- ra...@free.fr a écrit :

 Carl: The patch in the mail has problems; apparently I have to
 manually add scissorlines to the mail for it
 to be processed by git-am. I thought this was automatically added. (I
 hate the git UI -- nothing is consistent,
 concepts have different names, the definition of scissor lines is as
 precise as A line that mainly consists of scissors (either 8 or
 8) and perforation (dash -) --, but I guess we can get used to it
 after a while...)
 
 I'll send you a proper patch as soon as I can. Meanwhile, I'm sure you
 have comments on this updated patch!
 
 Matthieu
From 0073152e3fa7dd11d88de28e87eec7762cdbbbeb Mon Sep 17 00:00:00 2001
From: Matthieu Lemerre ra...@free.fr
Date: Thu, 25 Feb 2010 00:25:51 +0100
Subject: [PATCH 2/2] Add support for deletion in the emacs interface

Add d keybinding in notmuch-show and notmuch-summary to delete the current
thread. Adds D keybinding to delete the current message in notmuch-show.
Adds a deleted folder. Omit deleted items from searchs if no prefix arg.
Adds history management to make searching deleted items more convenient.

---
 notmuch.el |   56 +---
 1 files changed, 49 insertions(+), 7 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 5d7342a..0285573 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -92,6 +92,8 @@
 (define-key map x 'notmuch-show-archive-thread-then-exit)
 (define-key map A 'notmuch-show-mark-read-then-archive-thread)
 (define-key map a 'notmuch-show-archive-thread)
+(define-key map d 'notmuch-show-delete-thread)
+(define-key map D 'notmuch-show-delete-message)
 (define-key map p 'notmuch-show-previous-message)
 (define-key map N 'notmuch-show-mark-read-then-next-open-message)
 (define-key map n 'notmuch-show-next-message)
@@ -380,6 +382,23 @@ buffer.
   (notmuch-show-archive-thread)
   (kill-this-buffer))
 
+(defun notmuch-show-delete-message ()
+  Delete current message (sets its deleted tag).
+  (interactive)
+  (notmuch-show-add-tag deleted))
+
+(defun notmuch-show-delete-thread()
+  Delete each message in thread.
+  (interactive)
+  (notmuch-show-forall-in-thread
+   (notmuch-show-delete-message)))
+
+(defun notmuch-show-delete-thread-and-exit()
+  Delete each message in thread, then exit back to search results.
+  (interactive)
+  (notmuch-show-delete-thread)
+  (kill-this-buffer))
+
 (defun notmuch-show-mark-read-then-archive-then-exit ()
   Remove unread tags from thread, then archive and exit to search results.
   (interactive)
@@ -1227,6 +1246,7 @@ matching this search term are shown if non-nil. 
 (define-key map [mouse-1] 'notmuch-search-show-thread)
 (define-key map * 'notmuch-search-operate-all)
 (define-key map a 'notmuch-search-archive-thread)
+(define-key map d 'notmuch-search-delete-thread)
 (define-key map - 'notmuch-search-remove-tag)
 (define-key map + 'notmuch-search-add-tag)
 (define-key map (kbd RET) 'notmuch-search-show-thread)
@@ -1235,6 +1255,7 @@ matching this search term are shown if non-nil. 
 (fset 'notmuch-search-mode-map notmuch-search-mode-map)
 
 (defvar notmuch-search-query-string)
+(defvar notmuch-search-history nil)
 (defvar notmuch-search-oldest-first t
   Show the oldest mail first in the search-mode)
 
@@ -1446,6 +1467,13 @@ This function advances the next thread when finished.
   (notmuch-search-remove-tag inbox)
   (forward-line))
 
+(defun notmuch-search-delete-thread ()
+  Mark the currently selected thread as deleted (set its \deleted\ tag).
+This function advances the next thread when finished.
+  (interactive)
+  (notmuch-search-add-tag deleted)
+  (forward-line))
+
 (defun notmuch-search-process-sentinel (proc msg)
   Add a message to let user know when \notmuch search\ exits
   (let ((buffer (process-buffer proc))
@@ -1520,10 +1548,22 @@ characters as well as `_.+-'.
 	   (append action-split (list notmuch-search-query-string) nil
 
 ;;;###autoload
-(defun notmuch-search (query optional oldest-first)
-  Run \notmuch search\ with the given query string and display results.
-  (interactive sNotmuch search: )
-  (let ((buffer (get-buffer-create (concat *notmuch-search- query *
+(defun notmuch-search (query optional oldest-first include-deleted)
+  Run \notmuch search\ with the given query string and display results.
+
+With prefix argument, include deleted items.
+
+  (interactive (let* ((prefix current-prefix-arg)
+		  (query (if prefix
+ (read-string Notmuch search (including deleted): 
+	  notmuch-search-query-string
+	  'notmuch-search-history)
+			   (read-string Notmuch search:  nil
+	'notmuch-search-history
+		 (list query nil prefix)))
+  (let ((real-query (if include-deleted query 
+		  (concat not tag:deleted and ( query 
+	(buffer 

[notmuch] [PATCH] Support for deletion (patch included)

2010-02-25 Thread ra...@free.fr
Carl: The patch in the mail has problems; apparently I have to manually add 
scissorlines to the mail for it
to be processed by git-am. I thought this was automatically added. (I hate the 
git UI -- nothing is consistent,
concepts have different names, the definition of scissor lines is as precise as 
"A line that mainly consists of scissors (either ">8" or "8<") and perforation 
(dash "-") --, but I guess we can get used to it after a while...)

I'll send you a proper patch as soon as I can. Meanwhile, I'm sure you have 
comments on this updated patch!

Matthieu

?: "Carl Worth" 
Cc: notmuch at notmuchmail.org
Envoy?: Jeudi 25 F?vrier 2010 00h00:04 GMT +00:00 GMT - Grande-Bretagne, 
Irlande, Portugal
Objet: Re: [notmuch] [PATCH] Support for deletion (patch included)

Hi Carl,

> Could you also write a commit message describing what the patch does?
> The easiest way for me to apply that would be if you would create a git
> commit, then run "git format-patch origin/master" and mail the resulting
> files, (the "git send-email" command can be used here, or you can insert
> the files into a mail-composition buffer and modify them as needed).
> 

OK, here it is (comments below). I had trouble splitting the patches into a 
patch series; I
found git add -p, but isn't there a better interface for selecting patches?

>From bdee9558d93bffb97c80632f522288e059deb7c2 Mon Sep 17 00:00:00 2001
From: Matthieu Lemerre <ra...@racin.rez-gif.supelec.fr>
Date: Thu, 25 Feb 2010 00:24:24 +0100
Subject: [PATCH 1/2] Add and use notmuch-show-forall-in-thread macro

---
 notmuch.el |   17 +++--
 1 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 6482170..5d7342a 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -321,17 +321,22 @@ pseudoheader summary"
 (cons (notmuch-show-get-message-id) nil)))
  (notmuch-show-set-tags (sort (set-difference tags toremove :test 
'string=) 'string<))

-(defun notmuch-show-archive-thread-maybe-mark-read (markread)
-  (save-excursion
+(defmacro notmuch-show-forall-in-thread ( body)
+  "Executes BODY with point in all messages of the current thread."
+  `(save-excursion
 (goto-char (point-min))
 (while (not (eobp))
-  (if markread
- (notmuch-show-remove-tag "unread" "inbox")
-   (notmuch-show-remove-tag "inbox"))
+  , at body
   (if (not (eobp))
  (forward-char))
   (if (not (re-search-forward notmuch-show-message-begin-regexp nil t))
- (goto-char (point-max)
+ (goto-char (point-max))
+
+(defun notmuch-show-archive-thread-maybe-mark-read (markread)
+  (notmuch-show-forall-in-thread
+  (if markread
+ (notmuch-show-remove-tag "unread" "inbox")
+   (notmuch-show-remove-tag "inbox")))
   (let ((parent-buffer notmuch-show-parent-buffer))
 (kill-this-buffer)
 (if parent-buffer
-- 
1.6.5


This first patch is helpful for factorizing out code. Basically, it allows to
apply a "message-only" command to all the thread.

>From 0073152e3fa7dd11d88de28e87eec7762cdbbbeb Mon Sep 17 00:00:00 2001
From: Matthieu Lemerre <ra...@racin.rez-gif.supelec.fr>
Date: Thu, 25 Feb 2010 00:25:51 +0100
Subject: [PATCH 2/2] Add support for deletion in the emacs interface

---
 notmuch.el |   56 +---
 1 files changed, 49 insertions(+), 7 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 5d7342a..0285573 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -92,6 +92,8 @@
 (define-key map "x" 'notmuch-show-archive-thread-then-exit)
 (define-key map "A" 'notmuch-show-mark-read-then-archive-thread)
 (define-key map "a" 'notmuch-show-archive-thread)
+(define-key map "d" 'notmuch-show-delete-thread)
+(define-key map "D" 'notmuch-show-delete-message)
 (define-key map "p" 'notmuch-show-previous-message)
 (define-key map "N" 'notmuch-show-mark-read-then-next-open-message)
 (define-key map "n" 'notmuch-show-next-message)
@@ -380,6 +382,23 @@ buffer."
   (notmuch-show-archive-thread)
   (kill-this-buffer))

+(defun notmuch-show-delete-message ()
+  "Delete current message (sets its deleted tag)."
+  (interactive)
+  (notmuch-show-add-tag "deleted"))
+
+(defun notmuch-show-delete-thread()
+  "Delete each message in thread."
+  (interactive)
+  (notmuch-show-forall-in-thread
+   (notmuch-show-delete-message)))
+
+(defun notmuch-show-delete-thread-and-exit()
+  "Delete each message in thread, then exit back to search results."
+  (interactive)
+  (notmuch-show-delete-thread)
+  (kill-this-buffer))
+
 (defun notmuch-show-mark-read-then-archive-then-exit ()
   "Remove 

[notmuch] [PATCH] Support for deletion (patch included)

2010-02-25 Thread Sebastian Spaeth
I cannot comment on this patch, I just want to state that this
functionality can also be achieved with (id:87sk90ragj.fsf at jhu.edu)
"add functionality in notmuch search mode to add or remove tags by region"
and (id:1266408746-28549-1-git-send-email-Sebastian at SSpaeth.de)
"bind 'd' to new function notmuch-search-delete-thread-or-region"

I think that "add functionality in notmuch search mode to add or remove
tags by region" might be wanted functionality anyway.

Sebastian


[notmuch] [PATCH] Support for deletion (patch included)

2010-02-25 Thread ra...@free.fr
Hi Carl,

> Could you also write a commit message describing what the patch does?
> The easiest way for me to apply that would be if you would create a git
> commit, then run "git format-patch origin/master" and mail the resulting
> files, (the "git send-email" command can be used here, or you can insert
> the files into a mail-composition buffer and modify them as needed).
> 

OK, here it is (comments below). I had trouble splitting the patches into a 
patch series; I
found git add -p, but isn't there a better interface for selecting patches?

>From bdee9558d93bffb97c80632f522288e059deb7c2 Mon Sep 17 00:00:00 2001
From: Matthieu Lemerre 
Date: Thu, 25 Feb 2010 00:24:24 +0100
Subject: [PATCH 1/2] Add and use notmuch-show-forall-in-thread macro

---
 notmuch.el |   17 +++--
 1 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 6482170..5d7342a 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -321,17 +321,22 @@ pseudoheader summary"
 (cons (notmuch-show-get-message-id) nil)))
  (notmuch-show-set-tags (sort (set-difference tags toremove :test 
'string=) 'string<))

-(defun notmuch-show-archive-thread-maybe-mark-read (markread)
-  (save-excursion
+(defmacro notmuch-show-forall-in-thread ( body)
+  "Executes BODY with point in all messages of the current thread."
+  `(save-excursion
 (goto-char (point-min))
 (while (not (eobp))
-  (if markread
- (notmuch-show-remove-tag "unread" "inbox")
-   (notmuch-show-remove-tag "inbox"))
+  , at body
   (if (not (eobp))
  (forward-char))
   (if (not (re-search-forward notmuch-show-message-begin-regexp nil t))
- (goto-char (point-max)
+ (goto-char (point-max))
+
+(defun notmuch-show-archive-thread-maybe-mark-read (markread)
+  (notmuch-show-forall-in-thread
+  (if markread
+ (notmuch-show-remove-tag "unread" "inbox")
+   (notmuch-show-remove-tag "inbox")))
   (let ((parent-buffer notmuch-show-parent-buffer))
 (kill-this-buffer)
 (if parent-buffer
-- 
1.6.5


This first patch is helpful for factorizing out code. Basically, it allows to
apply a "message-only" command to all the thread.

>From 0073152e3fa7dd11d88de28e87eec7762cdbbbeb Mon Sep 17 00:00:00 2001
From: Matthieu Lemerre 
Date: Thu, 25 Feb 2010 00:25:51 +0100
Subject: [PATCH 2/2] Add support for deletion in the emacs interface

---
 notmuch.el |   56 +---
 1 files changed, 49 insertions(+), 7 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 5d7342a..0285573 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -92,6 +92,8 @@
 (define-key map "x" 'notmuch-show-archive-thread-then-exit)
 (define-key map "A" 'notmuch-show-mark-read-then-archive-thread)
 (define-key map "a" 'notmuch-show-archive-thread)
+(define-key map "d" 'notmuch-show-delete-thread)
+(define-key map "D" 'notmuch-show-delete-message)
 (define-key map "p" 'notmuch-show-previous-message)
 (define-key map "N" 'notmuch-show-mark-read-then-next-open-message)
 (define-key map "n" 'notmuch-show-next-message)
@@ -380,6 +382,23 @@ buffer."
   (notmuch-show-archive-thread)
   (kill-this-buffer))

+(defun notmuch-show-delete-message ()
+  "Delete current message (sets its deleted tag)."
+  (interactive)
+  (notmuch-show-add-tag "deleted"))
+
+(defun notmuch-show-delete-thread()
+  "Delete each message in thread."
+  (interactive)
+  (notmuch-show-forall-in-thread
+   (notmuch-show-delete-message)))
+
+(defun notmuch-show-delete-thread-and-exit()
+  "Delete each message in thread, then exit back to search results."
+  (interactive)
+  (notmuch-show-delete-thread)
+  (kill-this-buffer))
+
 (defun notmuch-show-mark-read-then-archive-then-exit ()
   "Remove unread tags from thread, then archive and exit to search results."
   (interactive)
@@ -1227,6 +1246,7 @@ matching this search term are shown if non-nil. "
 (define-key map [mouse-1] 'notmuch-search-show-thread)
 (define-key map "*" 'notmuch-search-operate-all)
 (define-key map "a" 'notmuch-search-archive-thread)
+(define-key map "d" 'notmuch-search-delete-thread)
 (define-key map "-" 'notmuch-search-remove-tag)
 (define-key map "+" 'notmuch-search-add-tag)
 (define-key map (kbd "RET") 'notmuch-search-show-thread)
@@ -1235,6 +1255,7 @@ matching this search term are shown if non-nil. "
 (fset 'notmuch-search-mode-map notmuch-search-mode-map)

 (defvar notmuch-search-query-string)
+(defvar notmuch-search-history nil)
 (defvar notmuch-search-oldest-first t
   "Show the oldest mail first in the search-mode")

@@ -1446,6 +1467,13 @@ This function advances the next thread when finished."
   (notmuch-search-remove-tag "inbox")
   (forward-line))

+(defun notmuch-search-delete-thread ()
+  "Mark the currently selected thread as deleted (set its \"deleted\" tag).
+This function 

Re: [notmuch] [PATCH] Support for deletion (patch included)

2010-02-25 Thread racin
Carl: The patch in the mail has problems; apparently I have to manually add 
scissorlines to the mail for it
to be processed by git-am. I thought this was automatically added. (I hate the 
git UI -- nothing is consistent,
concepts have different names, the definition of scissor lines is as precise as 
A line that mainly consists of scissors (either 8 or 8) and perforation 
(dash -) --, but I guess we can get used to it after a while...)

I'll send you a proper patch as soon as I can. Meanwhile, I'm sure you have 
comments on this updated patch!

Matthieu

À: Carl Worth cwo...@cworth.org
Cc: notmuch@notmuchmail.org
Envoyé: Jeudi 25 Février 2010 00h00:04 GMT +00:00 GMT - Grande-Bretagne, 
Irlande, Portugal
Objet: Re: [notmuch] [PATCH] Support for deletion (patch included)

Hi Carl,

 Could you also write a commit message describing what the patch does?
 The easiest way for me to apply that would be if you would create a git
 commit, then run git format-patch origin/master and mail the resulting
 files, (the git send-email command can be used here, or you can insert
 the files into a mail-composition buffer and modify them as needed).
 

OK, here it is (comments below). I had trouble splitting the patches into a 
patch series; I
found git add -p, but isn't there a better interface for selecting patches?

From bdee9558d93bffb97c80632f522288e059deb7c2 Mon Sep 17 00:00:00 2001
From: Matthieu Lemerre ra...@racin.rez-gif.supelec.fr
Date: Thu, 25 Feb 2010 00:24:24 +0100
Subject: [PATCH 1/2] Add and use notmuch-show-forall-in-thread macro

---
 notmuch.el |   17 +++--
 1 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 6482170..5d7342a 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -321,17 +321,22 @@ pseudoheader summary
 (cons (notmuch-show-get-message-id) nil)))
  (notmuch-show-set-tags (sort (set-difference tags toremove :test 
'string=) 'string))
 
-(defun notmuch-show-archive-thread-maybe-mark-read (markread)
-  (save-excursion
+(defmacro notmuch-show-forall-in-thread (rest body)
+  Executes BODY with point in all messages of the current thread.
+  `(save-excursion
 (goto-char (point-min))
 (while (not (eobp))
-  (if markread
- (notmuch-show-remove-tag unread inbox)
-   (notmuch-show-remove-tag inbox))
+  ,@body
   (if (not (eobp))
  (forward-char))
   (if (not (re-search-forward notmuch-show-message-begin-regexp nil t))
- (goto-char (point-max)
+ (goto-char (point-max))
+
+(defun notmuch-show-archive-thread-maybe-mark-read (markread)
+  (notmuch-show-forall-in-thread
+  (if markread
+ (notmuch-show-remove-tag unread inbox)
+   (notmuch-show-remove-tag inbox)))
   (let ((parent-buffer notmuch-show-parent-buffer))
 (kill-this-buffer)
 (if parent-buffer
-- 
1.6.5


This first patch is helpful for factorizing out code. Basically, it allows to
apply a message-only command to all the thread.

From 0073152e3fa7dd11d88de28e87eec7762cdbbbeb Mon Sep 17 00:00:00 2001
From: Matthieu Lemerre ra...@racin.rez-gif.supelec.fr
Date: Thu, 25 Feb 2010 00:25:51 +0100
Subject: [PATCH 2/2] Add support for deletion in the emacs interface

---
 notmuch.el |   56 +---
 1 files changed, 49 insertions(+), 7 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 5d7342a..0285573 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -92,6 +92,8 @@
 (define-key map x 'notmuch-show-archive-thread-then-exit)
 (define-key map A 'notmuch-show-mark-read-then-archive-thread)
 (define-key map a 'notmuch-show-archive-thread)
+(define-key map d 'notmuch-show-delete-thread)
+(define-key map D 'notmuch-show-delete-message)
 (define-key map p 'notmuch-show-previous-message)
 (define-key map N 'notmuch-show-mark-read-then-next-open-message)
 (define-key map n 'notmuch-show-next-message)
@@ -380,6 +382,23 @@ buffer.
   (notmuch-show-archive-thread)
   (kill-this-buffer))
 
+(defun notmuch-show-delete-message ()
+  Delete current message (sets its deleted tag).
+  (interactive)
+  (notmuch-show-add-tag deleted))
+
+(defun notmuch-show-delete-thread()
+  Delete each message in thread.
+  (interactive)
+  (notmuch-show-forall-in-thread
+   (notmuch-show-delete-message)))
+
+(defun notmuch-show-delete-thread-and-exit()
+  Delete each message in thread, then exit back to search results.
+  (interactive)
+  (notmuch-show-delete-thread)
+  (kill-this-buffer))
+
 (defun notmuch-show-mark-read-then-archive-then-exit ()
   Remove unread tags from thread, then archive and exit to search results.
   (interactive)
@@ -1227,6 +1246,7 @@ matching this search term are shown if non-nil. 
 (define-key map [mouse-1] 'notmuch-search-show-thread)
 (define-key map * 'notmuch-search-operate-all)
 (define-key map a 'notmuch-search-archive-thread)
+(define-key map d 'notmuch-search-delete-thread)
 (define

[notmuch] [PATCH] Support for deletion (patch included)

2010-02-24 Thread Carl Worth
On Sun, 13 Dec 2009 12:54:09 +0100, Matthieu Lemerre  wrote:
> I forgot the attachment..

Hi Matthieu,

This is a very interesting patch. Thanks for contributing it.

Could you also write a commit message describing what the patch does?
The easiest way for me to apply that would be if you would create a git
commit, then run "git format-patch origin/master" and mail the resulting
files, (the "git send-email" command can be used here, or you can insert
the files into a mail-composition buffer and modify them as needed).

A couple of minor comments on the patch:

>  (define-key map "a" 'notmuch-search-archive-thread)
> +(define-key map "d" 'notmuch-search-mark-as-deleted)

For consistency, let's name this notmuch-search-delete-thread.

And we'll probably want a notmuch-show-delete-message function as well,
no?

> +(defvar notmuch-search-history nil)

Excellent! I've wanted custom search history for a while, and just
didn't know how to do it with (interactive "s"). It looks easy enough
with read-string as you're doing here. But this is independent
functionality, so would be preferred as an independent patch/commit.

>(forward-line))
>  
> +
> +(defun notmuch-search-mark-as-deleted ()
> +  "Mark the currently selected thread as deleted (set its \"deleted\" tag).
> +This function advances the next thread when finished."
> +  (interactive)
> +  (notmuch-search-add-tag "deleted")
> +  (forward-line))
> +
> +
>  (defun notmuch-search-process-sentinel (proc msg)

Watch that extra whitespace. The convention is a single line of
whitespace between each function.

And should we also archive the thread before removing the deleted tag?

> +With prefix argument, include deleted items.

That's a pretty good interface I think.

Another approach would be to do something like what sup does---that
would be to scan the search terms and if it contains "tag:deleted" and
all then don't prepend the "not tag:deleted and" to the search
string. The assumption there is that if the user is explicitly
mentioning the deleted tag, then we should just rely on the user to
explicitly describe how the tag should be treated.

That's perhaps not an unreasonable heuristic, and might be done even in
addition to the prefix-argument approach. But that could be an
additional commit, and I won't require it.

> +  (interactive (let* ((prefix current-prefix-arg)
> +   (query (if prefix
> +  (read-string "Notmuch search (including 
> deleted): "
> +   notmuch-search-query-string
> +   'notmuch-search-history)
> +(read-string "Notmuch search: " nil
> + 'notmuch-search-history

Why is the second (initial-input) argument non-nil in one case, but nil
in the other? The documentation for `read-string' says the argument is
deprecated and should be nil in all new code.

> +  (list query nil prefix)))
> +  (let ((real-query (if include-deleted query 
> +   (concat "not tag:deleted and (" query ")")))
> + (buffer (get-buffer-create (concat "*notmuch-search-" query
> "*"

Does the include-deleted case actually work? I don't see anything in the
code that sets this variable. (I'm just reviewing here--I haven't tested
it manually).

> @@ -1351,7 +1374,6 @@ search."
>  
>  Runs a new search matching only messages that match both the
>  current search results AND the additional query string provided."
> -  (interactive "sFilter search: ")
>(let ((grouped-query (if (string-match-p notmuch-search-disjunctive-regexp 
> query) (concat "( " query " )") query)))
>  (notmuch-search (concat notmuch-search-query-string " and " 
> grouped-query) notmuch-search-oldest-first)))

Is this just an accidental chunk in the patch? I don't see why this
function should become non-interactive now.

Thanks again,

-Carl
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 



Re: [notmuch] [PATCH] Support for deletion (patch included)

2010-02-24 Thread Carl Worth
On Sun, 13 Dec 2009 12:54:09 +0100, Matthieu Lemerre ra...@free.fr wrote:
 I forgot the attachment..

Hi Matthieu,

This is a very interesting patch. Thanks for contributing it.

Could you also write a commit message describing what the patch does?
The easiest way for me to apply that would be if you would create a git
commit, then run git format-patch origin/master and mail the resulting
files, (the git send-email command can be used here, or you can insert
the files into a mail-composition buffer and modify them as needed).

A couple of minor comments on the patch:

  (define-key map a 'notmuch-search-archive-thread)
 +(define-key map d 'notmuch-search-mark-as-deleted)

For consistency, let's name this notmuch-search-delete-thread.

And we'll probably want a notmuch-show-delete-message function as well,
no?

 +(defvar notmuch-search-history nil)

Excellent! I've wanted custom search history for a while, and just
didn't know how to do it with (interactive s). It looks easy enough
with read-string as you're doing here. But this is independent
functionality, so would be preferred as an independent patch/commit.

(forward-line))
  
 +
 +(defun notmuch-search-mark-as-deleted ()
 +  Mark the currently selected thread as deleted (set its \deleted\ tag).
 +This function advances the next thread when finished.
 +  (interactive)
 +  (notmuch-search-add-tag deleted)
 +  (forward-line))
 +
 +
  (defun notmuch-search-process-sentinel (proc msg)

Watch that extra whitespace. The convention is a single line of
whitespace between each function.

And should we also archive the thread before removing the deleted tag?

 +With prefix argument, include deleted items.

That's a pretty good interface I think.

Another approach would be to do something like what sup does---that
would be to scan the search terms and if it contains tag:deleted and
all then don't prepend the not tag:deleted and to the search
string. The assumption there is that if the user is explicitly
mentioning the deleted tag, then we should just rely on the user to
explicitly describe how the tag should be treated.

That's perhaps not an unreasonable heuristic, and might be done even in
addition to the prefix-argument approach. But that could be an
additional commit, and I won't require it.

 +  (interactive (let* ((prefix current-prefix-arg)
 +   (query (if prefix
 +  (read-string Notmuch search (including 
 deleted): 
 +   notmuch-search-query-string
 +   'notmuch-search-history)
 +(read-string Notmuch search:  nil
 + 'notmuch-search-history

Why is the second (initial-input) argument non-nil in one case, but nil
in the other? The documentation for `read-string' says the argument is
deprecated and should be nil in all new code.

 +  (list query nil prefix)))
 +  (let ((real-query (if include-deleted query 
 +   (concat not tag:deleted and ( query 
 + (buffer (get-buffer-create (concat *notmuch-search- query
 *

Does the include-deleted case actually work? I don't see anything in the
code that sets this variable. (I'm just reviewing here--I haven't tested
it manually).

 @@ -1351,7 +1374,6 @@ search.
  
  Runs a new search matching only messages that match both the
  current search results AND the additional query string provided.
 -  (interactive sFilter search: )
(let ((grouped-query (if (string-match-p notmuch-search-disjunctive-regexp 
 query) (concat (  query  )) query)))
  (notmuch-search (concat notmuch-search-query-string  and  
 grouped-query) notmuch-search-oldest-first)))

Is this just an accidental chunk in the patch? I don't see why this
function should become non-interactive now.

Thanks again,

-Carl


pgphsuPVZUSQJ.pgp
Description: PGP signature
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [notmuch] [PATCH] Support for deletion (patch included)

2010-02-24 Thread racin
Hi Carl,

 Could you also write a commit message describing what the patch does?
 The easiest way for me to apply that would be if you would create a git
 commit, then run git format-patch origin/master and mail the resulting
 files, (the git send-email command can be used here, or you can insert
 the files into a mail-composition buffer and modify them as needed).
 

OK, here it is (comments below). I had trouble splitting the patches into a 
patch series; I
found git add -p, but isn't there a better interface for selecting patches?

From bdee9558d93bffb97c80632f522288e059deb7c2 Mon Sep 17 00:00:00 2001
From: Matthieu Lemerre ra...@racin.rez-gif.supelec.fr
Date: Thu, 25 Feb 2010 00:24:24 +0100
Subject: [PATCH 1/2] Add and use notmuch-show-forall-in-thread macro

---
 notmuch.el |   17 +++--
 1 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 6482170..5d7342a 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -321,17 +321,22 @@ pseudoheader summary
 (cons (notmuch-show-get-message-id) nil)))
  (notmuch-show-set-tags (sort (set-difference tags toremove :test 
'string=) 'string))
 
-(defun notmuch-show-archive-thread-maybe-mark-read (markread)
-  (save-excursion
+(defmacro notmuch-show-forall-in-thread (rest body)
+  Executes BODY with point in all messages of the current thread.
+  `(save-excursion
 (goto-char (point-min))
 (while (not (eobp))
-  (if markread
- (notmuch-show-remove-tag unread inbox)
-   (notmuch-show-remove-tag inbox))
+  ,@body
   (if (not (eobp))
  (forward-char))
   (if (not (re-search-forward notmuch-show-message-begin-regexp nil t))
- (goto-char (point-max)
+ (goto-char (point-max))
+
+(defun notmuch-show-archive-thread-maybe-mark-read (markread)
+  (notmuch-show-forall-in-thread
+  (if markread
+ (notmuch-show-remove-tag unread inbox)
+   (notmuch-show-remove-tag inbox)))
   (let ((parent-buffer notmuch-show-parent-buffer))
 (kill-this-buffer)
 (if parent-buffer
-- 
1.6.5


This first patch is helpful for factorizing out code. Basically, it allows to
apply a message-only command to all the thread.

From 0073152e3fa7dd11d88de28e87eec7762cdbbbeb Mon Sep 17 00:00:00 2001
From: Matthieu Lemerre ra...@racin.rez-gif.supelec.fr
Date: Thu, 25 Feb 2010 00:25:51 +0100
Subject: [PATCH 2/2] Add support for deletion in the emacs interface

---
 notmuch.el |   56 +---
 1 files changed, 49 insertions(+), 7 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 5d7342a..0285573 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -92,6 +92,8 @@
 (define-key map x 'notmuch-show-archive-thread-then-exit)
 (define-key map A 'notmuch-show-mark-read-then-archive-thread)
 (define-key map a 'notmuch-show-archive-thread)
+(define-key map d 'notmuch-show-delete-thread)
+(define-key map D 'notmuch-show-delete-message)
 (define-key map p 'notmuch-show-previous-message)
 (define-key map N 'notmuch-show-mark-read-then-next-open-message)
 (define-key map n 'notmuch-show-next-message)
@@ -380,6 +382,23 @@ buffer.
   (notmuch-show-archive-thread)
   (kill-this-buffer))
 
+(defun notmuch-show-delete-message ()
+  Delete current message (sets its deleted tag).
+  (interactive)
+  (notmuch-show-add-tag deleted))
+
+(defun notmuch-show-delete-thread()
+  Delete each message in thread.
+  (interactive)
+  (notmuch-show-forall-in-thread
+   (notmuch-show-delete-message)))
+
+(defun notmuch-show-delete-thread-and-exit()
+  Delete each message in thread, then exit back to search results.
+  (interactive)
+  (notmuch-show-delete-thread)
+  (kill-this-buffer))
+
 (defun notmuch-show-mark-read-then-archive-then-exit ()
   Remove unread tags from thread, then archive and exit to search results.
   (interactive)
@@ -1227,6 +1246,7 @@ matching this search term are shown if non-nil. 
 (define-key map [mouse-1] 'notmuch-search-show-thread)
 (define-key map * 'notmuch-search-operate-all)
 (define-key map a 'notmuch-search-archive-thread)
+(define-key map d 'notmuch-search-delete-thread)
 (define-key map - 'notmuch-search-remove-tag)
 (define-key map + 'notmuch-search-add-tag)
 (define-key map (kbd RET) 'notmuch-search-show-thread)
@@ -1235,6 +1255,7 @@ matching this search term are shown if non-nil. 
 (fset 'notmuch-search-mode-map notmuch-search-mode-map)
 
 (defvar notmuch-search-query-string)
+(defvar notmuch-search-history nil)
 (defvar notmuch-search-oldest-first t
   Show the oldest mail first in the search-mode)
 
@@ -1446,6 +1467,13 @@ This function advances the next thread when finished.
   (notmuch-search-remove-tag inbox)
   (forward-line))
 
+(defun notmuch-search-delete-thread ()
+  Mark the currently selected thread as deleted (set its \deleted\ tag).
+This function advances the next thread when finished.
+  (interactive)
+  

[notmuch] [PATCH] Support for deletion (patch included)

2009-12-13 Thread Matthieu Lemerre

I forgot the attachment..

-- next part --
A non-text attachment was scrubbed...
Name: notmuch-deletion.patch
Type: text/x-diff
Size: 4002 bytes
Desc: not available
URL: 



[notmuch] [PATCH] Support for deletion (patch included)

2009-12-13 Thread Matthieu Lemerre

I forgot the attachment..

diff --git a/notmuch.el b/notmuch.el
index 97914f2..f770dd0 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -991,6 +991,7 @@ matching this search term are shown if non-nil. 
 (define-key map [mouse-1] 'notmuch-search-show-thread)
 (define-key map * 'notmuch-search-operate-all)
 (define-key map a 'notmuch-search-archive-thread)
+(define-key map d 'notmuch-search-mark-as-deleted)
 (define-key map - 'notmuch-search-remove-tag)
 (define-key map + 'notmuch-search-add-tag)
 (define-key map (kbd RET) 'notmuch-search-show-thread)
@@ -999,6 +1000,7 @@ matching this search term are shown if non-nil. 
 (fset 'notmuch-search-mode-map notmuch-search-mode-map)
 
 (defvar notmuch-search-query-string)
+(defvar notmuch-search-history nil)
 (defvar notmuch-search-oldest-first t
   Show the oldest mail first in the search-mode)
 
@@ -1210,6 +1212,15 @@ This function advances the next thread when finished.
   (notmuch-search-remove-tag inbox)
   (forward-line))
 
+
+(defun notmuch-search-mark-as-deleted ()
+  Mark the currently selected thread as deleted (set its \deleted\ tag).
+This function advances the next thread when finished.
+  (interactive)
+  (notmuch-search-add-tag deleted)
+  (forward-line))
+
+
 (defun notmuch-search-process-sentinel (proc msg)
   Add a message to let user know when \notmuch search\ exits
   (let ((buffer (process-buffer proc))
@@ -1284,10 +1295,22 @@ characters as well as `_.+-'.
 	   (append action-split (list notmuch-search-query-string) nil
 
 ;;;###autoload
-(defun notmuch-search (query optional oldest-first)
-  Run \notmuch search\ with the given query string and display results.
-  (interactive sNotmuch search: )
-  (let ((buffer (get-buffer-create (concat *notmuch-search- query *
+(defun notmuch-search (query optional oldest-first include-deleted)
+  Run \notmuch search\ with the given query string and display results.
+
+With prefix argument, include deleted items.
+
+  (interactive (let* ((prefix current-prefix-arg)
+		  (query (if prefix
+ (read-string Notmuch search (including deleted): 
+	  notmuch-search-query-string
+	  'notmuch-search-history)
+			   (read-string Notmuch search:  nil
+	'notmuch-search-history
+		 (list query nil prefix)))
+  (let ((real-query (if include-deleted query 
+		  (concat not tag:deleted and ( query 
+	(buffer (get-buffer-create (concat *notmuch-search- query *
 (switch-to-buffer buffer)
 (notmuch-search-mode)
 (set 'notmuch-search-query-string query)
@@ -1303,7 +1326,7 @@ characters as well as `_.+-'.
 	(let ((proc (start-process-shell-command
 		 notmuch-search buffer notmuch-command search
 		 (if oldest-first --sort=oldest-first --sort=newest-first)
-		 (shell-quote-argument query
+		 (shell-quote-argument real-query
 	  (set-process-sentinel proc 'notmuch-search-process-sentinel)
 	  (set-process-filter proc 'notmuch-search-process-filter
 (run-hooks 'notmuch-search-hook)))
@@ -1351,7 +1374,6 @@ search.
 
 Runs a new search matching only messages that match both the
 current search results AND the additional query string provided.
-  (interactive sFilter search: )
   (let ((grouped-query (if (string-match-p notmuch-search-disjunctive-regexp query) (concat (  query  )) query)))
 (notmuch-search (concat notmuch-search-query-string  and  grouped-query) notmuch-search-oldest-first)))
 
@@ -1391,7 +1413,9 @@ current search results AND that are tagged with the given tag.
 
 (fset 'notmuch-folder-mode-map notmuch-folder-mode-map)
 
-(defcustom notmuch-folders (quote ((inbox . tag:inbox) (unread . tag:unread)))
+(defcustom notmuch-folders (quote ((inbox . tag:inbox) 
+   (unread . tag:unread)
+   (deleted . tag:deleted)))
   List of searches for the notmuch folder view
   :type '(alist :key-type (string) :value-type (string))
   :group 'notmuch)
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch