[PATCH] emacs: show: make id links respect window

Mark Walters markwalters1009 at gmail.com
Sun Jan 6 07:43:35 PST 2013


On Sat, 05 Jan 2013, Tomi Ollila <tomi.ollila at iki.fi> wrote:
> On Wed, Dec 26 2012, David Bremner <david at tethera.net> wrote:
>
>> Mark Walters <markwalters1009 at gmail.com> writes:
>>
>>>> I can imagine that people would want/like the "open in other window" 
>>>> effect of the current code, even if the reason is a bug.
>>>
>>> That's definitely possible. I generally expect a mouse click to select
>>> the window I click and this feels counter intuitive. I think that some
>>> people might like an option "open this link in a new window" but I would
>>> guess that would like that whether they clicked or pressed RET on the
>>> button.
>>
>> I don't care much either way myself, but before we change notmuch-show
>> behaviour (effectively) to accomodate notmuch-pick, I'd like a bit more
>> feedback from other people.
>
> I tested the old behaviour -- split frame to 2 windows, one containing
> *scratch* and one *notmuch-hello*. Then I searched for 'obsoletes',
> chose last message (id:1356936162-2589-1-git-send-email-amdragon at mit.edu)
> moved point to *scratch* buffer and clicked the id: link -- and indeed,
> the *scratch* window was replaced.
>
> I didn't look or test Mark's patch as he stated:
> "The lisp is not pretty but seems to work." ;)
> ... well, not entirely because of that but I trust it opens the message
> in window where the clicked link were and keeps point where it used to
> be before clicking (in case point was in different window).

It doesn't quite do this: point moves to the window that was clicked. It
is just as easy to do as Tomi says (patch below but I should resend if
people like it so the commit message gets picked up).

Incidentally, I would be interested to know what people expect the
following to do: go to notmuch hello and then search. Now display the
results in two windows simultaneously (either split the frame into two
windows (c-x 2) or use 2 frames (C-x 5 2)) and then press q.

What actually happens is that q runs kill buffer so it disappears in
both windows: one of which will fall back to notmuch-hello and one of
which will fall back to some other window (eg scratch)

Best wishes

Mark

 emacs/notmuch-show.el |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 5751d98..00b9b56 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -1077,6 +1077,11 @@ buttons for a corresponding notmuch search."
 	(make-text-button (first link) (second link)
 			  'action `(lambda (arg)
 				     (notmuch-show ,(third link)))
+			  'mouse-action `(lambda (arg)
+					   (let* ((event last-input-event)
+						  (window (car (cadr event))))
+					     (with-selected-window window
+					       (notmuch-show ,(third link)))))
 			  'follow-link t
 			  'help-echo "Mouse-1, RET: search for this message"
 			  'face goto-address-mail-face)))))
-- 
1.7.9.1



More information about the notmuch mailing list