]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch.el
notmuch.el: Make 'n' and 'p' bring the current message to the top.
[notmuch] / notmuch.el
index 54f4a5812e997a2db270164af380f8127c5bc955..9c3c1e065c870bf9f9fe24c5139d08183c775861 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)
+  (recenter 0))
+
+(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))
+      (goto-char (point-min)))
+  (beginning-of-line)
+  (recenter 0))
+
 ;;;###autoload
 (defun notmuch-show-mode ()
   "Major mode for handling the output of \"notmuch show\""