[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: middle click to open url in new session



>>>>> In [emacs-w3m : No.09080] Leo wrote:

> Looking forward to it ;) And thanks for the help.

If I understood correctly how mouse.el works, it simply replaces
a mouse-1 event with that of mouse-2 when clicking mouse-1.  This
means that the command we can invoke by mouse-1 is always the
command that is bound to mouse-2.  Therefore, there is no well-
mannered way to bind different commands to mouse-1 and mouse-2.
However, I'm not necessarily a well-mannered person.  Although
it cannot be implemented in emacs-w3m, here is a workaround.
You can use the following snippet in your ~/.emacs-w3m.el file:

#v+
(define-key w3m-mode-map [mouse-2] 'w3m-mouse-view-this-url-new-session)

(defadvice mouse-drag-track (after replace-mouse-2-event activate)
  "Replace mounse-2 event with the key for `w3m-view-this-url' command.
This will be done only when mouse-1 is clicked in an emacs-w3m buffer
and `mouse-1-click-follows-link' is non-nil."
  (let ((keys (this-command-keys)))
    (if (and (vectorp keys)
	     (= (length keys) 2)
	     (eq (car (aref keys 0)) 'down-mouse-1)
	     (eq (car (aref keys 1)) 'mouse-2)
	     (with-current-buffer
		 (window-buffer
		  (posn-window (event-start (car unread-command-events))))
	       (eq major-mode 'w3m-mode)))
	(setcar unread-command-events
		(aref (car (where-is-internal 'w3m-view-this-url
					      w3m-mode-map))
		      0)))))
#v-

Regards,