notmuch.el: Add (n)ext and (p)revious bindings to notmuch-show mode.
authorCarl Worth <cworth@cworth.org>
Tue, 3 Nov 2009 02:45:17 +0000 (18:45 -0800)
committerCarl Worth <cworth@cworth.org>
Tue, 3 Nov 2009 02:45:17 +0000 (18:45 -0800)
Almost starting to get usable now. Still need to make it mark messages
as they are read, (by removing the unread tag), and selectively hiding
the full header.

notmuch.el

index 54f4a5812e997a2db270164af380f8127c5bc955..7fe5e9783cc0fdab735c6ea5f102a5b1068961e3 100644 (file)
 
 (defvar notmuch-show-mode-map
   (let ((map (make-sparse-keymap)))
+    (define-key map "n" 'notmuch-show-next-message)
+    (define-key map "p" 'notmuch-show-previous-message)
     (define-key map "q" 'kill-this-buffer)
     (define-key map "x" 'kill-this-buffer)
     map)
   "Keymap for \"notmuch show\" buffers.")
 (fset 'notmuch-show-mode-map notmuch-show-mode-map)
 
+(defvar notmuch-show-message-begin-regexp "%message{")
+
+(defun notmuch-show-next-message ()
+  "Advance point to the beginning of the next message in the buffer."
+  (interactive)
+  ; First, ensure we get off the current message marker
+  (if (not (eobp))
+      (forward-char))
+  (if (not (re-search-forward notmuch-show-message-begin-regexp nil t))
+      (goto-char (point-max)))
+  (beginning-of-line))
+
+(defun notmuch-show-previous-message ()
+  "Advance point to the beginning of the previous message in the buffer."
+  (interactive)
+  ; First, ensure we get off the current message marker
+  (if (not (eobp))
+      (forward-char))
+  (if (not (re-search-backward notmuch-show-message-begin-regexp nil t))
+      (progn
+       (goto-char (point-min))
+       (beginning-of-line))))
+
 ;;;###autoload
 (defun notmuch-show-mode ()
   "Major mode for handling the output of \"notmuch show\""