notmuch.el: Redefine behavior of notmuch-show-previous-message
authorCarl Worth <cworth@cworth.org>
Wed, 4 Nov 2009 16:48:57 +0000 (08:48 -0800)
committerCarl Worth <cworth@cworth.org>
Wed, 4 Nov 2009 16:50:44 +0000 (08:50 -0800)
Now, if the user has manually moved point to somewhere within a
message, executing the previous-message command onece will rewind
point only to the beginning of the current message. Previously this
would go back to the previous message, (which the user can now do
easily and naturally by simply executing the command one more time).

notmuch.el

index 667fd6fd35c4193fa095f042c15c40405cac285a..5f394cdd39584b34474160fbf1e4e44a2f5ad570 100644 (file)
@@ -147,15 +147,19 @@ last message in the buffer."
 (defun notmuch-show-previous-message ()
   "Backup to the beginning of the previous message in the buffer.
 
-Moves to the beginning of the current message if already on the
-first message in the buffer."
+If within a message rather than at the beginning of it, then
+simply move to the beginning of the current message."
   (interactive)
-  (notmuch-show-move-to-current-message-summary-line)
-  ; Go backward twice to skip the current message's marker
-  (re-search-backward notmuch-show-message-begin-regexp nil t)
-  (re-search-backward notmuch-show-message-begin-regexp nil t)
-  (notmuch-show-move-to-current-message-summary-line)
-  (recenter 0))
+  (let ((start (point)))
+    (notmuch-show-move-to-current-message-summary-line)
+    (if (not (< (point) start))
+       ; Go backward twice to skip the current message's marker
+       (progn
+         (re-search-backward notmuch-show-message-begin-regexp nil t)
+         (re-search-backward notmuch-show-message-begin-regexp nil t)
+         (notmuch-show-move-to-current-message-summary-line)
+         ))
+    (recenter 0)))
 
 (defun notmuch-show-mark-read-then-next-message ()
   "Remove uread tag from current message, then advance to next message."