emacsemacs-prelude

How and where to change mouse button behaviour in a special mode


In Markdown mode with flyspell enabled, mouse-2 bound to mouse-yank-primary is also bound to flyspell-correct-word, the flyspell function that displays in a menu correction propositions. If the buffer is empty, the menu is displayed, if not, its content is yanked. Grrr.

I spent some time trying to find where to change this second binding but as I'm not an emacs guru, I just got lost. I tried (global-set-key "S-mouse-2" #'flyspell-correct-word) in ~/.emacs.d/init.el but I didn't manage to get anything working properly.

So the question is how and where to bind say S-mouse-2 to that function. A better solution would be to keep both bindings but to prioritize the menu over yanking when the mouse is over a word that needs correction.


Solution

  • On my GNU Emacs 25.2.2 the command (executed from the *scratch* buffer)

    (global-set-key "S-mouse-2" #'flyspell-correct-word)
    

    pops up the debugger. However,

    (global-set-key [S-mouse-2] #'flyspell-correct-word)
    

    works, as also

    (global-set-key [S-mouse-2] 'flyspell-correct-word)
    

    You can check the effect with:

    (global-key-binding [S-mouse-2])