unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* Patches in support of linking from org-mode
@ 2009-12-05  2:26 david
  2009-12-05  2:26 ` [PATCH 1/2] notmuch-search-process-filter: add text properties for authors and subject to each line david
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: david @ 2009-12-05  2:26 UTC (permalink / raw)
  To: notmuch


These two patches are pretty much independent. The first is needed by my 
work in progress patch for org-mode to provide links into notmuch 
(http://pivot.cs.unb.ca/git/?p=org-mode.git;a=shortlog;h=refs/heads/notmuch-link).

The second changes the interface of git-show to take the query-string
recently added explicitly as a parameter. This is more an aesthetic
thing, but it means that I don't have to call notmuch-show like
(let notmuch-query-search-string thread-id
     (notmuch-show thread-id))

Hope you like em. I also hope this whole git-send-email thing works out.

David

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

* [PATCH 1/2] notmuch-search-process-filter: add text properties for authors and subject to each line
  2009-12-05  2:26 Patches in support of linking from org-mode david
@ 2009-12-05  2:26 ` david
  2009-12-05  2:26   ` [PATCH 2/2] notmuch-show: add optional argument for query context instead of using global binding notmuch-search-query-string david
  2009-12-05 14:05 ` [PATCH] notmuch-show-get-header: new function; return alist of parsed header fields David Bremner
  2010-03-09 18:20 ` Patches in support of linking from org-mode Carl Worth
  2 siblings, 1 reply; 8+ messages in thread
From: david @ 2009-12-05  2:26 UTC (permalink / raw)
  To: notmuch; +Cc: David Bremner

From: David Bremner <bremner@unb.ca>

Add functions notmuch-search-find-authors and notmuch-find-subject to
match notmuch-find-thread-id.  These functions are just a wrapper
around get-text-property, but in principle that could change.
---
 notmuch.el |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index c504f46..5925907 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -1133,6 +1133,14 @@ Complete list of currently available key bindings:
   "Return the thread for the current thread"
   (get-text-property (point) 'notmuch-search-thread-id))
 
+(defun notmuch-search-find-authors ()
+  "Return the authors for the current thread"
+  (get-text-property (point) 'notmuch-search-authors))
+
+(defun notmuch-search-find-subject ()
+  "Return the subject for the current thread"
+  (get-text-property (point) 'notmuch-search-subject))
+
 (defun notmuch-search-show-thread ()
   "Display the currently selected thread."
   (interactive)
@@ -1257,7 +1265,9 @@ This function advances the next thread when finished."
 		      (goto-char (point-max))
 		      (let ((beg (point-marker)))
 			(insert (format "%s %-7s %-40s %s (%s)\n" date count authors subject tags))
-			(put-text-property beg (point-marker) 'notmuch-search-thread-id thread-id))
+			(put-text-property beg (point-marker) 'notmuch-search-thread-id thread-id)
+			(put-text-property beg (point-marker) 'notmuch-search-authors authors)
+			(put-text-property beg (point-marker) 'notmuch-search-subject subject))
 		      (set 'line (match-end 0)))
 		  (set 'more nil))))))
       (delete-process proc))))
-- 
1.6.5.3

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

* [PATCH 2/2] notmuch-show: add optional argument for query context instead of using global binding notmuch-search-query-string
  2009-12-05  2:26 ` [PATCH 1/2] notmuch-search-process-filter: add text properties for authors and subject to each line david
@ 2009-12-05  2:26   ` david
  2009-12-10 15:14     ` [PATCH] notmuch.el: patch notmuch-show to call notmuch show without query-context (i.e. without tag:inbox) if the first query returns nothing david
  0 siblings, 1 reply; 8+ messages in thread
From: david @ 2009-12-05  2:26 UTC (permalink / raw)
  To: notmuch; +Cc: David Bremner

From: David Bremner <bremner@unb.ca>

Also modify the one call to notmuch-show in notmuch.el.  This makes
the call (notmuch-show thread-id) will work when there is no binding
for notmuch-search-query-string; e.g. when called from user code
outside notmuch.
---
 notmuch.el |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 5925907..f7048d5 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -949,15 +949,17 @@ All currently available key bindings:
 	  (lambda()
 	    (hl-line-mode 1) ))
 
-(defun notmuch-show (thread-id &optional parent-buffer)
+(defun notmuch-show (thread-id &optional parent-buffer query-context)
   "Run \"notmuch show\" with the given thread ID and display results.
 
 The optional PARENT-BUFFER is the notmuch-search buffer from
 which this notmuch-show command was executed, (so that the next
-thread from that buffer can be show when done with this one)."
+thread from that buffer can be show when done with this one).
+
+The optional QUERY-CONTEXT is a notmuch search term. Only messages from the thread 
+matching this search term are shown if non-nil. "
   (interactive "sNotmuch show: ")
-  (let ((query notmuch-search-query-string)
-	(buffer (get-buffer-create (concat "*notmuch-show-" thread-id "*"))))
+  (let ((buffer (get-buffer-create (concat "*notmuch-show-" thread-id "*"))))
     (switch-to-buffer buffer)
     (notmuch-show-mode)
     (set (make-local-variable 'notmuch-show-parent-buffer) parent-buffer)
@@ -969,7 +971,9 @@ thread from that buffer can be show when done with this one)."
       (erase-buffer)
       (goto-char (point-min))
       (save-excursion
-	(call-process notmuch-command nil t nil "show" "--entire-thread" thread-id "and (" query ")")
+	(let* ((basic-args (list notmuch-command nil t nil "show" "--entire-thread" thread-id))
+		(args (if query-context (append basic-args (list "and (" query-context ")")) basic-args)))
+	  (apply 'call-process args))
 	(notmuch-show-markup-messages)
 	)
       (run-hooks 'notmuch-show-hook)
@@ -1146,7 +1150,7 @@ Complete list of currently available key bindings:
   (interactive)
   (let ((thread-id (notmuch-search-find-thread-id)))
     (if (> (length thread-id) 0)
-	(notmuch-show thread-id (current-buffer))
+	(notmuch-show thread-id (current-buffer) notmuch-search-query-string)
       (error "End of search results"))))
 
 (defun notmuch-search-reply-to-thread ()
-- 
1.6.5.3

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

* [PATCH] notmuch-show-get-header: new function; return alist of parsed header fields.
  2009-12-05  2:26 Patches in support of linking from org-mode david
  2009-12-05  2:26 ` [PATCH 1/2] notmuch-search-process-filter: add text properties for authors and subject to each line david
@ 2009-12-05 14:05 ` David Bremner
  2010-03-09 18:20 ` Patches in support of linking from org-mode Carl Worth
  2 siblings, 0 replies; 8+ messages in thread
From: David Bremner @ 2009-12-05 14:05 UTC (permalink / raw)
  To: notmuch

This function parses the displayed message to recover header
fields. It uses mailheader.el to do the actual header parsing, after
preprocessing to remove indentation.  It relies on the variables
notmuch-show-message-begin-regexp, notmuch-show-header-begin-regexp,
and notmuch-show-message-end-regexp.
---

This is another patch needed for org-mode links. Really I just need
some way to get the author and subject of the current message in
notmuch-show-mode.  It seems like a generally useful function,
although of course it would be more efficient to cache these headers
somewhere if the function is being invoked many times.

 notmuch.el |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index f7048d5..cf472f7 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -203,6 +203,30 @@ Unlike builtin `previous-line' this version accepts no arguments."
     (re-search-forward notmuch-show-tags-regexp)
     (split-string (buffer-substring (match-beginning 1) (match-end 1)))))
 
+(defun notmuch-show-get-header ()
+  "Retrieve and parse the header from the current message. Returns an alist with of (header . value) 
+where header is a symbol and value is a string.  The summary from notmuch-show is returned as the 
+pseudoheader summary"
+  (require 'mailheader)
+  (save-excursion
+    (beginning-of-line)
+    (if (not (looking-at notmuch-show-message-begin-regexp))
+	(re-search-backward notmuch-show-message-begin-regexp))
+    (re-search-forward (concat notmuch-show-header-begin-regexp "\n[[:space:]]*\\(.*\\)\n"))
+    (let* ((summary (buffer-substring-no-properties (match-beginning 1) (match-end 1)))
+	  (beg (point)))
+      (re-search-forward notmuch-show-header-end-regexp)
+      (let ((text (buffer-substring beg (match-beginning 0))))
+	(with-temp-buffer
+	  (insert text)
+	  (goto-char (point-min))
+	  (while (looking-at "\\([[:space:]]*\\)[A-Za-z][-A-Za-z0-9]*:")
+	    (delete-region (match-beginning 1) (match-end 1))
+	    (forward-line)
+	    )
+	  (goto-char (point-min))
+	  (cons (cons 'summary summary) (mail-header-extract-no-properties)))))))
+  
 (defun notmuch-show-add-tag (&rest toadd)
   "Add a tag to the current message."
   (interactive
-- 
1.6.5.3

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

* [PATCH] notmuch.el: patch notmuch-show to call notmuch show without query-context (i.e. without tag:inbox) if the first query returns nothing.
  2009-12-05  2:26   ` [PATCH 2/2] notmuch-show: add optional argument for query context instead of using global binding notmuch-search-query-string david
@ 2009-12-10 15:14     ` david
  2009-12-10 18:43       ` Fix viewing of thread after accidentally archiving Carl Worth
  0 siblings, 1 reply; 8+ messages in thread
From: david @ 2009-12-10 15:14 UTC (permalink / raw)
  To: notmuch; +Cc: David Bremner

From: David Bremner <bremner@unb.ca>

This fixes the annoying bug of archiving a thread, and then going back
to open it and getting an error.  It needs the notmuch-show API
changing patch of 1259979997-31544-3-git-send-email-david@tethera.net.
---

I'm not really expecting Carl to push this patch, because I think he
has a better solution in mind, but in the mean time maybe someone
finds it useful. It is saving my sanity already, since in wanderlust
 'a' = reply :).

 notmuch.el |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index cf472f7..0cd4386 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -997,7 +997,9 @@ matching this search term are shown if non-nil. "
       (save-excursion
 	(let* ((basic-args (list notmuch-command nil t nil "show" "--entire-thread" thread-id))
 		(args (if query-context (append basic-args (list "and (" query-context ")")) basic-args)))
-	  (apply 'call-process args))
+	  (apply 'call-process args)
+	  (when (and (eq (buffer-size) 0) query-context)
+	    (apply 'call-process basic-args)))
 	(notmuch-show-markup-messages)
 	)
       (run-hooks 'notmuch-show-hook)
-- 
1.6.5.3

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

* Fix viewing of thread after accidentally archiving.
  2009-12-10 15:14     ` [PATCH] notmuch.el: patch notmuch-show to call notmuch show without query-context (i.e. without tag:inbox) if the first query returns nothing david
@ 2009-12-10 18:43       ` Carl Worth
  0 siblings, 0 replies; 8+ messages in thread
From: Carl Worth @ 2009-12-10 18:43 UTC (permalink / raw)
  To: david, notmuch; +Cc: David Bremner

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

On Thu, 10 Dec 2009 11:14:35 -0400, david@tethera.net wrote:
> From: David Bremner <bremner@unb.ca>
> 
> This fixes the annoying bug of archiving a thread, and then going back
> to open it and getting an error.  It needs the notmuch-show API
> changing patch of 1259979997-31544-3-git-send-email-david@tethera.net.
> ---
> 
> I'm not really expecting Carl to push this patch, because I think he
> has a better solution in mind, but in the mean time maybe someone
> finds it useful. It is saving my sanity already, since in wanderlust
>  'a' = reply :).

On the contrary, David. I pushed this immediately, so thanks!

I'll still do the other solution, (other interfaces will want it), but
in the meantime, it's *really* nice to have this bug fixed.

I also fixed '+' and '-' to work in this same situation, (so you can
actually put an inbox tag *back* if you accidentally remove it). I
haven't yet fixed '*' for this case, so an accidental '* -inbox' won't
be recoverable with '* +inbox' if the current search is tag:inbox.

I've added a TODO item to fix this, (and the proposed fix there will
incidentally fix '*' to actually provide feedback on the added/removed
tags too, which will also help).

-Carl

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: Patches in support of linking from org-mode
  2009-12-05  2:26 Patches in support of linking from org-mode david
  2009-12-05  2:26 ` [PATCH 1/2] notmuch-search-process-filter: add text properties for authors and subject to each line david
  2009-12-05 14:05 ` [PATCH] notmuch-show-get-header: new function; return alist of parsed header fields David Bremner
@ 2010-03-09 18:20 ` Carl Worth
  2010-03-09 20:08   ` David Bremner
  2 siblings, 1 reply; 8+ messages in thread
From: Carl Worth @ 2010-03-09 18:20 UTC (permalink / raw)
  To: david, notmuch

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

On Fri,  4 Dec 2009 22:26:35 -0400, david@tethera.net wrote:
> These two patches are pretty much independent. The first is needed by my 
> work in progress patch for org-mode to provide links into notmuch 
> (http://pivot.cs.unb.ca/git/?p=org-mode.git;a=shortlog;h=refs/heads/notmuch-link).
> 
> The second changes the interface of git-show to take the query-string
> recently added explicitly as a parameter.

Hi David,

Somehow I had this mail from you on my backlog of patches to review, but
it looks like everything here has already been applied. So thanks!

And please let me know if you need any further changes to notmuch to
make it work better with org-mode. (A recent message on this list does
make me very interested to try out org-mode and to make sure it
integrates well with notmuch.)

-Carl

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: Patches in support of linking from org-mode
  2010-03-09 18:20 ` Patches in support of linking from org-mode Carl Worth
@ 2010-03-09 20:08   ` David Bremner
  0 siblings, 0 replies; 8+ messages in thread
From: David Bremner @ 2010-03-09 20:08 UTC (permalink / raw)
  To: Carl Worth, notmuch

On Tue, 09 Mar 2010 10:20:39 -0800, Carl Worth <cworth@cworth.org> wrote:

> And please let me know if you need any further changes to notmuch to
> make it work better with org-mode. (A recent message on this list does
> make me very interested to try out org-mode and to make sure it
> integrates well with notmuch.)

The last patches needed for initial org-mode support are 
    id:1267015920-8999-1-git-send-email-david@tethera.net
    (notmuch-query.el)

    and

    1265773528-30794-1-git-send-email-david@tethera.net 
    (emacs subdirectory)

The first is needed by the code which creates links to notmuch
threads. Since threads are mutable, what it does turn a thread-id into a
list of message-ids.  

All the best,

David

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

end of thread, other threads:[~2010-03-09 20:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-12-05  2:26 Patches in support of linking from org-mode david
2009-12-05  2:26 ` [PATCH 1/2] notmuch-search-process-filter: add text properties for authors and subject to each line david
2009-12-05  2:26   ` [PATCH 2/2] notmuch-show: add optional argument for query context instead of using global binding notmuch-search-query-string david
2009-12-10 15:14     ` [PATCH] notmuch.el: patch notmuch-show to call notmuch show without query-context (i.e. without tag:inbox) if the first query returns nothing david
2009-12-10 18:43       ` Fix viewing of thread after accidentally archiving Carl Worth
2009-12-05 14:05 ` [PATCH] notmuch-show-get-header: new function; return alist of parsed header fields David Bremner
2010-03-09 18:20 ` Patches in support of linking from org-mode Carl Worth
2010-03-09 20:08   ` David Bremner

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).