* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
[not found] ` <20170718103952.4E6F720E35@vcs0.savannah.gnu.org>
@ 2017-07-18 13:41 ` Stefan Monnier
2017-07-18 16:23 ` Noam Postavsky
0 siblings, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2017-07-18 13:41 UTC (permalink / raw)
To: emacs-devel; +Cc: Noam Postavsky
> + ;; Update `this-command' and run `pre-command-hook' so that
> + ;; things like `delete-selection-pre-hook' will work correctly.
> + (setq this-command cmd)
> + (run-hooks 'pre-command-hook)
> ;; mouse-major-mode-menu was using `command-execute' instead.
> (call-interactively cmd))))
Hmm... shouldn't it then also run post-command-hook, and set
last-command (and probably a few more of the things done in the usual
command loop, such as handling undo-boundaries)?
IOW, we should move the C code which runs the commands from the command
loop and make it available to Elisp.
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-18 13:41 ` [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569) Stefan Monnier
@ 2017-07-18 16:23 ` Noam Postavsky
2017-07-18 17:28 ` Stefan Monnier
0 siblings, 1 reply; 13+ messages in thread
From: Noam Postavsky @ 2017-07-18 16:23 UTC (permalink / raw)
To: Stefan Monnier; +Cc: Emacs developers
On Tue, Jul 18, 2017 at 9:41 AM, Stefan Monnier
<monnier@iro.umontreal.ca> wrote:
>> + ;; Update `this-command' and run `pre-command-hook' so that
>> + ;; things like `delete-selection-pre-hook' will work correctly.
>> + (setq this-command cmd)
>> + (run-hooks 'pre-command-hook)
>> ;; mouse-major-mode-menu was using `command-execute' instead.
>> (call-interactively cmd))))
>
> Hmm... shouldn't it then also run post-command-hook, and set
> last-command (and probably a few more of the things done in the usual
> command loop, such as handling undo-boundaries)?
I'm not sure, won't we end up with 1 1/2 of the command stuff done in
that case? (the half being the popup-menu we began executing to get
here).
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-18 16:23 ` Noam Postavsky
@ 2017-07-18 17:28 ` Stefan Monnier
2017-07-18 17:50 ` Noam Postavsky
0 siblings, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2017-07-18 17:28 UTC (permalink / raw)
To: emacs-devel
>>> + ;; Update `this-command' and run `pre-command-hook' so that
>>> + ;; things like `delete-selection-pre-hook' will work correctly.
>>> + (setq this-command cmd)
>>> + (run-hooks 'pre-command-hook)
>>> ;; mouse-major-mode-menu was using `command-execute' instead.
>>> (call-interactively cmd))))
>>
>> Hmm... shouldn't it then also run post-command-hook, and set
>> last-command (and probably a few more of the things done in the usual
>> command loop, such as handling undo-boundaries)?
> I'm not sure, won't we end up with 1 1/2 of the command stuff done in
> that case? (the half being the popup-menu we began executing to get
> here).
AFAICT the current case is the one that ends up with 1½ done.
What I suggest is to bring it back to a whole number (i.e. 2).
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-18 17:28 ` Stefan Monnier
@ 2017-07-18 17:50 ` Noam Postavsky
2017-07-18 18:14 ` Stefan Monnier
0 siblings, 1 reply; 13+ messages in thread
From: Noam Postavsky @ 2017-07-18 17:50 UTC (permalink / raw)
To: Stefan Monnier; +Cc: Emacs developers
On Tue, Jul 18, 2017 at 1:28 PM, Stefan Monnier
<monnier@iro.umontreal.ca> wrote:
>>>> + ;; Update `this-command' and run `pre-command-hook' so that
>>>> + ;; things like `delete-selection-pre-hook' will work correctly.
>>>> + (setq this-command cmd)
>>>> + (run-hooks 'pre-command-hook)
>>>> ;; mouse-major-mode-menu was using `command-execute' instead.
>>>> (call-interactively cmd))))
>>>
>>> Hmm... shouldn't it then also run post-command-hook, and set
>>> last-command (and probably a few more of the things done in the usual
>>> command loop, such as handling undo-boundaries)?
>
>> I'm not sure, won't we end up with 1 1/2 of the command stuff done in
>> that case? (the half being the popup-menu we began executing to get
>> here).
>
> AFAICT the current case is the one that ends up with 1½ done.
> What I suggest is to bring it back to a whole number (i.e. 2).
Right, I got mixed up.
Actually, now that I think more on this, could `popup-menu' behave
more like `universal-argument' (apart from actually setting any prefix
arg)? It feels kind of prefixy.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-18 17:50 ` Noam Postavsky
@ 2017-07-18 18:14 ` Stefan Monnier
2017-07-18 22:45 ` Noam Postavsky
0 siblings, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2017-07-18 18:14 UTC (permalink / raw)
To: emacs-devel
> Actually, now that I think more on this, could `popup-menu' behave
> more like `universal-argument' (apart from actually setting any prefix
> arg)? It feels kind of prefixy.
Not sure exactly what you have in mind, but it seems difficult to do
something along these lines while preserving compatibility for existing
callers of popup-menu.
But maybe we could have a new function which ends up doing something
like push onto unread-command-events a special event which popups the
specified menu [ maybe using some other mechanism than
unread-command-events ].
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-18 18:14 ` Stefan Monnier
@ 2017-07-18 22:45 ` Noam Postavsky
2017-07-19 3:05 ` Stefan Monnier
2017-07-19 3:18 ` Tak Kunihiro
0 siblings, 2 replies; 13+ messages in thread
From: Noam Postavsky @ 2017-07-18 22:45 UTC (permalink / raw)
To: Stefan Monnier, Tak Kunihiro; +Cc: Emacs developers
On Tue, Jul 18, 2017 at 2:14 PM, Stefan Monnier
<monnier@iro.umontreal.ca> wrote:
>> Actually, now that I think more on this, could `popup-menu' behave
>> more like `universal-argument' (apart from actually setting any prefix
>> arg)? It feels kind of prefixy.
>
> Not sure exactly what you have in mind,
Yes, that idea was rather vague and half-baked. While looking at other
mouse menus, I found this alternate solution to Bug#27569 (following
the technique used for C-down-mouse-3):
(define-key global-map [mouse-3]
`(menu-item "Edit menu" menu-bar-edit-menu
:filter ,(lambda (_) menu-bar-edit-menu)))
;; delete-selection now works correctly with yank invoked via the mouse-3 menu
(delete-selection-mode +1)
So perhaps my change to popup-menu isn't really needed...
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-18 22:45 ` Noam Postavsky
@ 2017-07-19 3:05 ` Stefan Monnier
2017-07-19 3:18 ` Tak Kunihiro
1 sibling, 0 replies; 13+ messages in thread
From: Stefan Monnier @ 2017-07-19 3:05 UTC (permalink / raw)
To: emacs-devel
> (define-key global-map [mouse-3]
> `(menu-item "Edit menu" menu-bar-edit-menu
> :filter ,(lambda (_) menu-bar-edit-menu)))
Why not just
(define-key global-map [mouse-3] menu-bar-edit-menu)
or
(define-key global-map [down-mouse-3] menu-bar-edit-menu)
(define-key global-map [mouse-3] nil)
-- Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-18 22:45 ` Noam Postavsky
2017-07-19 3:05 ` Stefan Monnier
@ 2017-07-19 3:18 ` Tak Kunihiro
2017-07-19 11:26 ` Noam Postavsky
1 sibling, 1 reply; 13+ messages in thread
From: Tak Kunihiro @ 2017-07-19 3:18 UTC (permalink / raw)
To: npostavs; +Cc: tkk, monnier, emacs-devel
> menu-bar-edit-menu
> :filter ,(lambda (_) menu-bar-edit-menu)))
> ;; delete-selection now works correctly with yank invoked via the mouse-3 menu
> (delete-selection-mode +1)
>
> So perhaps my change to popup-menu isn't really needed...
I want to construct edit-menu dynamically depending on event.
Using the technique, code will look:
(define-key global-map [mouse-3]
(lambda (event)
(interactive "e")
(let ((my-edit-map (my-edit-map event)))
`(menu-item "Edit menu" my-edit-map
:filter ,(lambda (_) my-edit-map)))))
;; delete-selection now works correctly with yank invoked via the mouse-3 menu
(delete-selection-mode +1)
(defun my-edit-map (start-event)
; ...
menu-bar-edit-menu)
CONCLUSION:
I appreciate your change and I think it is needed.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-19 3:18 ` Tak Kunihiro
@ 2017-07-19 11:26 ` Noam Postavsky
2017-07-20 0:14 ` Tak Kunihiro
0 siblings, 1 reply; 13+ messages in thread
From: Noam Postavsky @ 2017-07-19 11:26 UTC (permalink / raw)
To: Tak Kunihiro; +Cc: Stefan Monnier, Emacs developers
On Tue, Jul 18, 2017 at 11:18 PM, Tak Kunihiro
<tkk@misasa.okayama-u.ac.jp> wrote:
>
> I want to construct edit-menu dynamically depending on event.
> Using the technique, code will look:
I think that should be
> (defun my-edit-map (start-event)
> ; ...
> menu-bar-edit-menu)
(define-key global-map [mouse-3]
`(menu-item "Edit menu" my-edit-map
:filter ,(lambda (_) (my-edit-map (aref (this-command-keys) 0)))))
;; delete-selection now works correctly with yank invoked via the mouse-3 menu
(delete-selection-mode +1)
>
> CONCLUSION:
> [...] your change [...] is needed.
Still?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-19 11:26 ` Noam Postavsky
@ 2017-07-20 0:14 ` Tak Kunihiro
2017-07-20 0:28 ` Noam Postavsky
2017-07-20 1:15 ` Stefan Monnier
0 siblings, 2 replies; 13+ messages in thread
From: Tak Kunihiro @ 2017-07-20 0:14 UTC (permalink / raw)
To: npostavs; +Cc: tkk, monnier, emacs-devel
>> I want to construct edit-menu dynamically depending on event.
>> Using the technique, code will look:
>
> I think that should be
>
>> (defun my-edit-map (start-event)
>> ; ...
>> menu-bar-edit-menu)
>
> (define-key global-map [mouse-3]
> `(menu-item "Edit menu" my-edit-map
> :filter ,(lambda (_) (my-edit-map (aref (this-command-keys) 0)))))
> ;; delete-selection now works correctly with yank invoked via the mouse-3 menu
> (delete-selection-mode +1)
That works. Thank you for the revision.
I want to call flyspell-correct-word when word under event is
flyspell-incorrect (mouse-2 is too hard to access). When not, then
the dynamic edit menu.
This technique binds a keymap. I cannot find a way to call
flyspell-correct-word.
CONCLUSION:
Still your change is needed.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-20 0:14 ` Tak Kunihiro
@ 2017-07-20 0:28 ` Noam Postavsky
2017-07-21 4:11 ` Tak Kunihiro
2017-07-20 1:15 ` Stefan Monnier
1 sibling, 1 reply; 13+ messages in thread
From: Noam Postavsky @ 2017-07-20 0:28 UTC (permalink / raw)
To: Tak Kunihiro; +Cc: Stefan Monnier, Emacs developers
On Wed, Jul 19, 2017 at 8:14 PM, Tak Kunihiro
<tkk@misasa.okayama-u.ac.jp> wrote:
>>
>> (define-key global-map [mouse-3]
>> `(menu-item "Edit menu" my-edit-map
>> :filter ,(lambda (_) (my-edit-map (aref (this-command-keys) 0)))))
>> ;; delete-selection now works correctly with yank invoked via the mouse-3 menu
>> (delete-selection-mode +1)
>
> I want to call flyspell-correct-word when word under event is
> flyspell-incorrect (mouse-2 is too hard to access). When not, then
> the dynamic edit menu.
I don't have flyspell working here to test this properly, but
shouldn't something like this work:
(defun my-edit-map (event)
(if (get-text-property (posn-point (event-start event))
'flyspell-incorrect)
#'flyspell-correct-word
menu-bar-edit-menu))
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-20 0:14 ` Tak Kunihiro
2017-07-20 0:28 ` Noam Postavsky
@ 2017-07-20 1:15 ` Stefan Monnier
1 sibling, 0 replies; 13+ messages in thread
From: Stefan Monnier @ 2017-07-20 1:15 UTC (permalink / raw)
To: Tak Kunihiro; +Cc: emacs-devel, npostavs
> This technique binds a keymap. I cannot find a way to call
> flyspell-correct-word.
Just return the `flyspell-correct-word' symbol.
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569)
2017-07-20 0:28 ` Noam Postavsky
@ 2017-07-21 4:11 ` Tak Kunihiro
0 siblings, 0 replies; 13+ messages in thread
From: Tak Kunihiro @ 2017-07-21 4:11 UTC (permalink / raw)
To: npostavs; +Cc: tkk, monnier, emacs-devel
>>> (define-key global-map [mouse-3]
>>> `(menu-item "Edit menu" my-edit-map
>>> :filter ,(lambda (_) (my-edit-map (aref (this-command-keys) 0)))))
>>> ;; delete-selection now works correctly with yank invoked via the mouse-3 menu
>>> (delete-selection-mode +1)
>>
>> I want to call flyspell-correct-word when word under event is
>> flyspell-incorrect (mouse-2 is too hard to access). When not, then
>> the dynamic edit menu.
>
> (defun my-edit-map (event)
> (if (get-text-property (posn-point (event-start event))
> 'flyspell-incorrect)
> #'flyspell-correct-word
> menu-bar-edit-menu))
>
> Just return the `flyspell-correct-word' symbol.
Now I got rid of usage of popup-menu in the code.
(defun my-edit-map (event)
(let ((faces-at-point (mapcar (lambda (xxx) (overlay-get xxx 'face))
(overlays-at (posn-point (event-start event))))))
(cond
((member 'flyspell-incorrect faces-at-point)
#'flyspell-correct-word)
(t
menu-bar-edit-menu))))
I confirmed that without the patch of menu-bar, yank via edit-menu
deletes region. Thank you for instructions.
CONCLUSION:
Your change is not needed.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2017-07-21 4:11 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20170718103950.22436.83344@vcs0.savannah.gnu.org>
[not found] ` <20170718103952.4E6F720E35@vcs0.savannah.gnu.org>
2017-07-18 13:41 ` [Emacs-diffs] master a2ee819: Let delete-selection-mode work with popup-menu commands (Bug#27569) Stefan Monnier
2017-07-18 16:23 ` Noam Postavsky
2017-07-18 17:28 ` Stefan Monnier
2017-07-18 17:50 ` Noam Postavsky
2017-07-18 18:14 ` Stefan Monnier
2017-07-18 22:45 ` Noam Postavsky
2017-07-19 3:05 ` Stefan Monnier
2017-07-19 3:18 ` Tak Kunihiro
2017-07-19 11:26 ` Noam Postavsky
2017-07-20 0:14 ` Tak Kunihiro
2017-07-20 0:28 ` Noam Postavsky
2017-07-21 4:11 ` Tak Kunihiro
2017-07-20 1:15 ` Stefan Monnier
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).