emacs-devel
[Top][All Lists]
Advanced

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

Where the menu should be appeared when C-mouse-3 is triggered (Was: [pat


From: Masatake YAMATO
Subject: Where the menu should be appeared when C-mouse-3 is triggered (Was: [patch v3] showing menu bar temporarily when f10 is pressed)
Date: Thu, 19 Jul 2012 17:32:53 +0900 (JST)

Thank you for reviewing.
I'll revise my patch and submit it again.

>>>> Why do you need the menu-bar?  Why not pop up the menu usually bound to
>>>> C-mouse-3?
>>> To be honest, I didn't know that.
>>> I've just tried C-mouse-3; and found some advantages of C-mouse-3
>>> comparing with f10 for KEYBOARD USER.
> 
> While I agree we should also support the f10 behavior (so your current
> patch is acceptable), I think the problem you point out for the
> C-mouse-3 behavior could/should be fixed.
> 
>>> 1. With C-mouse-3, the menu is pop up where mouse pointer is.
> 
> That should be easy to fix so that the menu is popped up at point.
> 
>>> 2. With C-mouse-3, the contents of menu is chosen based
>>> on the window where the mouse pointer is.
> 
> Same here.

I don't this is easy to fix.

For KEYBOARD USER it is nice to popped up at point.
Howto, it is not nice for MOUSE USER.

Emacs has many useful commands(mouse oriented commands) which are
expected to be triggered from MOUSE. Some of them, including
C-mouse-3, are not suitable for keyboard operatoin.

I've been thinking about this gap between mouse operation and keyboard
operation in emacs. 

I'd like to introduce `bring-mouse-to-point' for fill the gap.  Its
behavior is too tricky, so I'd like to introduce is after f10 patch is
accepted. The behavior of f10 patch is a bit tricky.

`bring-mouse-to-point' is for for keyboard user, who don't want to 
use mouse but want to use mouse oriented commands from key board.

As the name shown, `bring-mouse-to-point' moves the mouse cursor to
the point.  So you can do what Stefan suggests with following 
key sequence:

    \C-. C-mouse-3

(Here I bind \C-. to `bring-mouse-to-point' privately. I know \C-. is
reserved to user customization.)

If you are using note-PC, this is enough useful because mouse-[123]
are near keyboard. 

After invoking \C-. C-mouse-3, you can type \C-. again. In that case
the mouse cursor moves somewhere far away from point; 
mouse-avoidance-banish is called. It means the behavior or \C-. is 
toggle.

How do you think `bring-mouse-to-point'?
I hope this is included to emacs officially.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Taken from avoid.el
;;
(require 'avoid)
(defun point-position ()
  (let ((edges (window-inside-edges))
        (x-y (posn-x-y (posn-at-point))))
    (cons (selected-frame)
          (cons (+ (car edges)
                   (/ (car x-y) (frame-char-width)))
                (+ (car (cdr edges))
                   (/ (cdr x-y) (frame-char-height)))))))

(defun bring-mouse-to-point (avoiding)
  (interactive "P")
  (let ((op (mouse-position))
        (np (point-position)))
    (if (or avoiding
            (equal op np))
        (mouse-avoidance-banish)
      (set-mouse-position (car np) (cadr np) (cddr np)))))
(define-key global-map [(control .)] 'bring-mouse-to-point)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Masatake YAMATO



reply via email to

[Prev in Thread] Current Thread [Next in Thread]