]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch.el
notmuch: Add search mode hook
[notmuch] / notmuch.el
index 296f5d663b8ee6b22fbb57cdd5da8ff18972c7be..1fc54c305f92935b5328f8b625cfcafb432bc68f 100644 (file)
@@ -249,18 +249,21 @@ buffer."
       (mm-display-parts (mm-dissect-buffer))
       (kill-this-buffer))))
 
+(defun notmuch-reply (query-string)
+  (switch-to-buffer (generate-new-buffer "notmuch-draft"))
+  (call-process "notmuch" nil t nil "reply" query-string)
+  (goto-char (point-min))
+  (if (re-search-forward "^$" nil t)
+      (progn
+       (insert "--text follows this line--")
+       (forward-line)))
+  (message-mode))
+
 (defun notmuch-show-reply ()
   "Begin composing a reply to the current message in a new buffer."
   (interactive)
   (let ((message-id (notmuch-show-get-message-id)))
-    (switch-to-buffer (generate-new-buffer "notmuch-draft"))
-    (call-process "notmuch" nil t nil "reply" message-id)
-    (goto-char (point-min))
-    (if (re-search-forward "^$" nil t)
-       (progn
-         (insert "--text follows this line--")
-         (forward-line)))
-    (message-mode)))
+    (notmuch-reply message-id)))
 
 (defun notmuch-show-pipe-message (command)
   "Pipe the contents of the current message to the given command.
@@ -651,6 +654,12 @@ view, (remove the \"inbox\" tag from each), with
   :options '(goto-address)
   :group 'notmuch)
 
+(defcustom notmuch-search-hook nil
+  "List of functions to call when notmuch displays the search results."
+  :type 'hook
+  :options '(hl-line-mode)
+  :group 'notmuch)
+
 ; Make show mode a bit prettier, highlighting URLs and using word wrap
 
 (defun notmuch-show-pretty-hook ()
@@ -658,6 +667,9 @@ view, (remove the \"inbox\" tag from each), with
   (visual-line-mode))
 
 (add-hook 'notmuch-show-hook 'notmuch-show-pretty-hook)
+(add-hook 'notmuch-search-hook
+         (lambda()
+           (hl-line-mode 1) ))
 
 (defun notmuch-show (thread-id &optional parent-buffer)
   "Run \"notmuch show\" with the given thread ID and display results.
@@ -708,6 +720,7 @@ thread from that buffer can be show when done with this one)."
     (define-key map "o" 'notmuch-search-toggle-order)
     (define-key map "p" 'previous-line)
     (define-key map "q" 'kill-this-buffer)
+    (define-key map "r" 'notmuch-search-reply-to-thread)
     (define-key map "s" 'notmuch-search)
     (define-key map "t" 'notmuch-search-filter-by-tag)
     (define-key map "x" 'kill-this-buffer)
@@ -824,6 +837,12 @@ global search.
        (notmuch-show thread-id (current-buffer))
       (error "End of search results"))))
 
+(defun notmuch-search-reply-to-thread ()
+  "Begin composing a reply to the entire current thread in a new buffer."
+  (interactive)
+  (let ((message-id (notmuch-search-find-thread-id)))
+    (notmuch-reply message-id)))
+
 (defun notmuch-call-notmuch-process (&rest args)
   "Synchronously invoke \"notmuch\" with the given list of arguments.
 
@@ -901,7 +920,8 @@ This function advances point to the next line when finished."
            (call-process "notmuch" nil t nil "search" "--sort=oldest-first" query)
          (call-process "notmuch" nil t nil "search" "--sort=newest-first" query))
        (notmuch-search-markup-thread-ids)
-       ))))
+       ))
+    (run-hooks 'notmuch-search-hook)))
 
 (defun notmuch-search-refresh-view ()
   "Refresh the current view.