unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: emacs-devel@gnu.org
Subject: Re: poplife-mode
Date: Sun, 12 Nov 2017 13:06:56 -0500	[thread overview]
Message-ID: <jwv4lpzv0c5.fsf-monnier+gmane.emacs.devel@gnu.org> (raw)
In-Reply-To: jwvfu9jv49m.fsf-monnier+gmane.emacs.devel@gnu.org

> I think this should actually be provided in core: down-mouse-3 should be
> bound to a command implementing this, with some standardized way to find
> a contextual menu (looking at local char-properties, and if not
> found, buffer-local variable).

Maybe with something like the patch below.


        Stefan


diff --git a/lisp/mouse.el b/lisp/mouse.el
index 5eeee1ec52..90357806a1 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -50,10 +49,15 @@ mouse-drag-copy-region
 This affects `mouse-save-then-kill' (\\[mouse-save-then-kill]) in
 addition to mouse drags."
   :type 'boolean
-  :version "24.1"
-  :group 'mouse)
+  :version "24.1")
+
+(defcustom mouse-long-click-time 450
+  "Time after which a click is considered long.")
 
-(defcustom mouse-1-click-follows-link 450
+(defcustom mouse-1-click-follows-link
+  ;; FIXME: Maybe values 1 and -1 should be used to mean
+  ;; "use mouse-long-click-time".
+  mouse-long-click-time
   "Non-nil means that clicking Mouse-1 on a link follows the link.
 
 With the default setting, an ordinary Mouse-1 click on a link
@@ -2455,12 +2451,22 @@ function-key-map
 (if (not (eq system-type 'ms-dos))
     (global-set-key [S-down-mouse-1] 'mouse-appearance-menu))
 ;; C-down-mouse-2 is bound in facemenu.el.
-(global-set-key [C-down-mouse-3]
-  `(menu-item ,(purecopy "Menu Bar") ignore
-    :filter (lambda (_)
-              (if (zerop (or (frame-parameter nil 'menu-bar-lines) 0))
-                  (mouse-menu-bar-map)
-                (mouse-menu-major-mode-map)))))
+(let ((default-context-menu
+        `(menu-item ,(purecopy "Menu Bar") ignore
+          :filter (lambda (_)
+                    (if (zerop (or (frame-parameter nil 'menu-bar-lines) 0))
+                        (mouse-menu-bar-map)
+                      (mouse-menu-major-mode-map))))))
+  (global-set-key [C-down-mouse-3] default-context-menu)
+  (global-set-key [context-menu] default-context-menu))
+
+(global-set-key [down-mouse-3] #'mouse-maybe-context-menu)
+(defun mouse-maybe-context-menu (event)
+  "Bring up a context menu for a long click.
+See `mouse-long-click-time' and `mouse-context-menu-function'."
+  (interactive "@e")
+  (if (sit-for (/ mouse-long-click-time 1000.0))
+      (push (cons 'context-menu (cdr event)) unread-command-events)))
 
 ;; Binding mouse-1 to mouse-select-window when on mode-, header-, or
 ;; vertical-line prevents Emacs from signaling an error when the mouse




  parent reply	other threads:[~2017-11-12 18:06 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         ` Stefan Monnier [this message]
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
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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=jwv4lpzv0c5.fsf-monnier+gmane.emacs.devel@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=emacs-devel@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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).