On Mon, 04 Jul 2011 23:36:35 +0200, Matthieu Lemerre <racin@free.fr> wrote: > I like to use the space (and sometimes the backspace key) to read > threads back and forth, but sometimes I might read stuff to quickly and > archive a thread without wanting it. It is then complex to find it back > (especially if the thread contained a single message and I hit space > before actually reading the message, so I can't find it again). > > As a workaround, I have changed the space key function > "notmuch-show-advance-and-archive" to not archive the thread if we are > at the end of the thread, but to just do nothing. Thus I have to > expicitely archive the thread when I have finished reading it, which I > find much safer. I completely agree with your discomfort with the current function bound to space. I don't like it at all, and I similarly rebound space to be a much more sensible function: (defun notmuch-show-advance () "Advance through messages in a thread." (interactive) (let ((end-of-this-message (notmuch-show-message-bottom))) (cond ;; Ideally we would test `end-of-this-message' against the result ;; of `window-end', but that doesn't account for the fact that ;; the end of the message might be hidden, so we have to actually ;; go to the end, walk back over invisible text and then see if ;; point is visible. ((save-excursion (goto-char (- end-of-this-message 1)) (notmuch-show-move-past-invisible-backward) (> (point) (window-end))) ;; The bottom of this message is not visible - scroll. (scroll-up nil)) ((not (= end-of-this-message (point-max))) ;; This is not the last message - move to the next visible one. (notmuch-show-next-open-message)) ))) Notice I also made it so that this does not exit the current thread view. jamie.