all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Eli Zaretskii <eliz@gnu.org>
Cc: charles@aurox.ch, johnw@gnu.org, emacs-devel@gnu.org,
	Tak Kunihiro <homeros.misasa@gmail.com>,
	agrambot@gmail.com, drew.adams@oracle.com
Subject: Re: Changing default mouse bindings
Date: Fri, 17 Nov 2017 10:28:52 -0500	[thread overview]
Message-ID: <jwvtvxtx7ht.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <838tf5id1e.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 17 Nov 2017 09:23:41 +0200")

>> (global-set-key [mouse-3] 'mouse-context-menu)
>> (defun mouse-context-menu (event)
>> (interactive "e")
>> (or (poplife-mouse-dir-menu event)       ; DIR menu
>> (poplife-mouse-url-menu event)       ; URL menu
>> (mouse3-region-menu event)           ; region menu
>> (mouse-context-menu-default event))) ; default menu <<<<<

> I don't think binding this to mouse-3 by default can fly, because it
> contradicts the usual GUI meaning of that button related to
> selections, something that is honored by all well-behaving GUI
> applications in the X world.  It would be unwise for Emacs not to
> comply.

Indeed, I think we should first focus on the command itself, and leave
the discussion about where to bind it to for later.

I don't think we want the command to hardcode things like dir-menu,
region-menu, ..., so we'll want to have a hook where we can add
a function that gives the region-part of the menu, and another for the
dir-part of a menu, ...

Maybe we could do something like the code below.  The intention is to
make it reasonably easy to add functions to the hook that add a few
elements to the menu, and to also make it possible to add functions that
completely override the default menu (e.g. for flyspell's context menu).

This sample solution doesn't provide any direct way to specify the
context-menu from text-properties, so maybe we'd want to add to the
default definition of mouse-context-menu-function some function which
looks up some `context-menu` text-property, tho maybe we don't need that
and we can let packages add their own function to lookup their own
text-properties instead.


        Stefan


(defvar mouse-context-menu-function #'mouse-default-context-menu
  "Function that builds the context-menu.
Takes one argument (the EVENT that requests the menu) and should return
a list of menu items.")

(defun mouse-context-menu (event)
  "Open up the context menu."
  (interactive "@e")
  (let* ((menu-items (funcall mouse-context-menu-function event))
         (keymap `(keymap ,(apply #'vector menu-items))))
    (popup-menu leymap event)))



  reply	other threads:[~2017-11-17 15:28 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-05  1:00 poplife-mode Tak Kunihiro
2017-11-05  5:52 ` poplife-mode Drew Adams
2017-11-11 12:47 ` poplife-mode Charles A. Roelli
2017-11-11 15:01   ` poplife-mode Stefan Monnier
2017-11-12 13:55     ` poplife-mode Charles A. Roelli
2017-11-12 16:46       ` poplife-mode Stefan Monnier
2017-11-12 16:54         ` poplife-mode Eli Zaretskii
2017-11-12 17:47           ` poplife-mode Stefan Monnier
2017-11-12 19:17             ` poplife-mode Yuri Khan
2017-11-12 20:32               ` poplife-mode Charles A. Roelli
2017-11-12 20:36               ` poplife-mode Stefan Monnier
2017-11-13  5:03                 ` poplife-mode Yuri Khan
2017-11-12 18:06         ` poplife-mode Stefan Monnier
2017-11-12 20:24           ` poplife-mode Charles A. Roelli
2017-11-13  8:11             ` poplife-mode Tak Kunihiro
2017-11-13 14:36               ` poplife-mode Drew Adams
2017-11-13 23:03                 ` poplife-mode Tak Kunihiro
2017-11-14  0:48                   ` poplife-mode Drew Adams
2017-11-14 23:26                     ` poplife-mode Tak Kunihiro
2017-11-14 23:40                       ` poplife-mode Drew Adams
2017-11-13  1:36         ` poplife-mode Drew Adams
2017-11-13  3:40         ` poplife-mode Drew Adams
2017-11-13  4:06           ` poplife-mode Stefan Monnier
2017-11-13 14:36             ` poplife-mode Drew Adams
2017-11-13 15:24               ` poplife-mode Stefan Monnier
2017-11-13 17:08                 ` poplife-mode Drew Adams
2017-11-13 20:20                   ` poplife-mode Stefan Monnier
2017-11-13 21:56                     ` poplife-mode Drew Adams
2017-11-13 23:13                       ` poplife-mode Stefan Monnier
2017-11-13 23:08                     ` Changing default mouse bindings (was: poplife-mode) Alex
2017-11-14  2:50                       ` Changing default mouse bindings Stefan Monnier
2017-11-14  7:07                         ` Yuri Khan
2017-11-14 16:34                           ` Stefan Monnier
2017-11-14 15:13                         ` Eli Zaretskii
2017-11-14 16:35                           ` Stefan Monnier
2017-11-14 16:38                             ` Eli Zaretskii
     [not found]                         ` <<838tf8lwqn.fsf@gnu.org>
2017-11-14 15:35                           ` Drew Adams
2017-11-14 16:58                             ` Eli Zaretskii
     [not found]                         ` <<<838tf8lwqn.fsf@gnu.org>
     [not found]                           ` <<69307385-5625-48dc-9611-ad7f0b6bd529@default>
     [not found]                             ` <<83r2t0kdaz.fsf@gnu.org>
2017-11-14 19:47                               ` Drew Adams
2017-11-14 20:26                       ` Changing default mouse bindings (was: poplife-mode) Charles A. Roelli
2017-11-14 23:11                         ` Changing default mouse bindings Tak Kunihiro
2017-11-15  3:16                           ` Stefan Monnier
2017-11-16 23:21                             ` Tak Kunihiro
2017-11-17  7:23                               ` Eli Zaretskii
2017-11-17 15:28                                 ` Stefan Monnier [this message]
2018-01-10  4:34                                   ` Tak Kunihiro
     [not found]                               ` <<838tf5id1e.fsf@gnu.org>
2017-11-17 15:31                                 ` Drew Adams
2017-11-17 16:25                       ` Sam Steingold
2017-11-13 23:16                 ` poplife-mode Tak Kunihiro
     [not found]   ` <<jwvy3ncx3kx.fsf-monnier+gmane.emacs.devel@gnu.org>
     [not found]     ` <<m2h8tzppod.fsf@aurox.ch>
2017-11-13  1:06       ` poplife-mode Drew Adams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwvtvxtx7ht.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=agrambot@gmail.com \
    --cc=charles@aurox.ch \
    --cc=drew.adams@oracle.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=homeros.misasa@gmail.com \
    --cc=johnw@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.