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
next prev 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).