notmuch-show looks at the prefix argument directly (ie via current-prefix-arg) rather than using some form of the interactive command. Thus we need to unset current-prefix-arg before calling notmuch-show. --- I was just doing final tests for pick to mainline when I discovered the following bug. The show-out option was not working quite correctly (it was eliding the non-matching messages). I traced this to the following: notmuch-show looks at current-prefix-arg directly. The recent change to call notmuch-pick-show-message-out via a prefix arg rather than its own keybinding meant that this prefix arg is being passed on to the subsidary notmuch-show call. To avoid this we unset current-prefix-arg before calling notmuch-show. It seems neatest to do this in notmuch-pick-show-message. Sorry for not spotting this before. Best wishes Mark contrib/notmuch-pick/notmuch-pick.el | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff --git a/contrib/notmuch-pick/notmuch-pick.el b/contrib/notmuch-pick/notmuch-pick.el index 0aa651e..6b727b2 100644 --- a/contrib/notmuch-pick/notmuch-pick.el +++ b/contrib/notmuch-pick/notmuch-pick.el @@ -488,10 +488,13 @@ Does NOT change the database." Shows in split pane or whole window according to value of `notmuch-pick-show-out'. A prefix argument reverses the choice." (interactive "P") - (if (or (and notmuch-pick-show-out (not arg)) - (and (not notmuch-pick-show-out) arg)) - (notmuch-pick-show-message-out) - (notmuch-pick-show-message-in))) + ;; We have to unset current-prefix-arg as notmuch-show examines it + ;; directly. + (let ((current-prefix-arg nil)) + (if (or (and notmuch-pick-show-out (not arg)) + (and (not notmuch-pick-show-out) arg)) + (notmuch-pick-show-message-out) + (notmuch-pick-show-message-in)))) (defun notmuch-pick-scroll-message-window () "Scroll the message window (if it exists)" -- 1.7.9.1