Subject: 24.5; flyspell only works with mouse

From: [email-masked] (N. Jackson)
Date: Thu, 23 Jul 2015 22:11:13 -0300

I have just tried flyspell for the first time, and I find that it can
only be operated using a mouse (and a mouse with middle button at that),
and IIUC it cannot by used with a keyboard alone.

Please consider making it usable from the keyboard.

Details:

In Section 16.4, "Checking and Correcting Spelling", of the manual (info
"(emacs) Spelling"), it says:

    When Flyspell mode highlights a word as misspelled, you can click on
    it with ‘Mouse-2’ to display a menu of possible corrections and
    actions.

If there is a command to do this from the keyboard it is not documented
here.

I can't execute Mouse-2 from the trackpad on my laptop, but plugging in
a physical mouse [and after a bit of fiddling to get a clean click and
not a scroll on the scroll wheel], I find that:

    <down-mouse-2> at that spot runs the command flyspell-correct-word,
    which is an interactive compiled Lisp function in `flyspell.el'.

    It is bound to <down-mouse-2>.

    (flyspell-correct-word EVENT)

    Pop up a menu of possible corrections for a misspelled word.
    The word checked is the word at the mouse position.

So I tried positioning the cursor on the word and running `M-x
flyspell-correct-word', but (obviously in retrospect, since it takes an
EVENT argument), and I get the message

    command-execute: flyspell-correct-word must be bound to an event with
    parameters

Please consider making flyspell usable from the keyboard. (Or, if it
already is and I'm simply missing something, please document it.)

Thanks you.

In GNU Emacs 24.5.1 (x86_64-redhat-linux-gnu, GTK+ Version 3.14.12)
 of 2015-05-07 on buildvm-08.phx2.fedoraproject.org
Windowing system distributor `Fedora Project', version 11.0.11603000
System Description:	Fedora release 21 (Twenty One)

Configured using:
 `configure --build=x86_64-redhat-linux-gnu
 --host=x86_64-redhat-linux-gnu --program-prefix=
 --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr
 --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc
 --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64
 --libexecdir=/usr/libexec --localstatedir=/var
 --sharedstatedir=/var/lib --mandir=/usr/share/man
 --infodir=/usr/share/info --with-dbus --with-gif --with-jpeg --with-png
 --with-rsvg --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3
 --with-gpm=no build_alias=x86_64-redhat-linux-gnu
 host_alias=x86_64-redhat-linux-gnu 'CFLAGS=-DMAIL_USE_LOCKF -O2 -g
 -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4
 -grecord-gcc-switches -m64 -mtune=generic' 'LDFLAGS=-Wl,-z,relro ''

Important settings:
  value of $LC_MONETARY: en_DK.utf8
  value of $LC_NUMERIC: en_DK.utf8
  value of $LC_TIME: en_DK.utf8
  value of $LANG: en_CA.utf8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Text

Minor modes in effect:
  flyspell-mode: t
  TeX-PDF-mode: t
  recentf-mode: t
  delete-selection-mode: t
  show-paren-mode: t
  savehist-mode: t
  electric-pair-mode: t
  display-time-mode: t
  display-battery-mode: t
  desktop-save-mode: t
  cua-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Recent messages:
Type C-x 1 to delete the help window.
command-execute: flyspell-correct-word must be bound to an event with parameters
Mark set
command-execute: flyspell-correct-word must be bound to an event with parameters
Mark set
Quit [2 times]
Updating buffer list...
Formats have changed, recompiling...done
Updating buffer list...done
Commands: m, u, t, RET, g, k, S, D, Q; q to quit; h for help
byte-code: Beginning of buffer

Load-path shadows:
/usr/share/emacs/site-lisp/site-start.d/maxima-modes hides /usr/share/emacs/site-lisp/maxima/site_start.d/maxima-modes
/home/nlj/.emacs.d/elpa/org-20150622/ob-ref hides /usr/share/emacs/24.5/lisp/org/ob-ref
/home/nlj/.emacs.d/elpa/org-20150622/ob-dot hides /usr/share/emacs/24.5/lisp/org/ob-dot
/home/nlj/.emacs.d/elpa/org-20150622/ob-octave hides /usr/share/emacs/24.5/lisp/org/ob-octave
/home/nlj/.emacs.d/elpa/org-20150622/ob-maxima hides /usr/share/emacs/24.5/lisp/org/ob-maxima
/home/nlj/.emacs.d/elpa/org-20150622/ob-scala hides /usr/share/emacs/24.5/lisp/org/ob-scala
/home/nlj/.emacs.d/elpa/org-20150622/org-plot hides /usr/share/emacs/24.5/lisp/org/org-plot
/home/nlj/.emacs.d/elpa/org-20150622/ob-org hides /usr/share/emacs/24.5/lisp/org/ob-org
/home/nlj/.emacs.d/elpa/org-20150622/ob-haskell hides /usr/share/emacs/24.5/lisp/org/ob-haskell
/home/nlj/.emacs.d/elpa/org-20150622/org-indent hides /usr/share/emacs/24.5/lisp/org/org-indent
/home/nlj/.emacs.d/elpa/org-20150622/org-habit hides /usr/share/emacs/24.5/lisp/org/org-habit
/home/nlj/.emacs.d/elpa/org-20150622/org-datetree hides /usr/share/emacs/24.5/lisp/org/org-datetree
/home/nlj/.emacs.d/elpa/org-20150622/ob-lob hides /usr/share/emacs/24.5/lisp/org/ob-lob
/home/nlj/.emacs.d/elpa/org-20150622/org-list hides /usr/share/emacs/24.5/lisp/org/org-list
/home/nlj/.emacs.d/elpa/org-20150622/ob-ruby hides /usr/share/emacs/24.5/lisp/org/ob-ruby
/home/nlj/.emacs.d/elpa/org-20150622/ob-R hides /usr/share/emacs/24.5/lisp/org/ob-R
/home/nlj/.emacs.d/elpa/org-20150622/ob-awk hides /usr/share/emacs/24.5/lisp/org/ob-awk
/home/nlj/.emacs.d/elpa/org-20150622/ob-sqlite hides /usr/share/emacs/24.5/lisp/org/ob-sqlite
/home/nlj/.emacs.d/elpa/org-20150622/ob-makefile hides /usr/share/emacs/24.5/lisp/org/ob-makefile
/home/nlj/.emacs.d/elpa/org-20150622/org-capture hides /usr/share/emacs/24.5/lisp/org/org-capture
/home/nlj/.emacs.d/elpa/org-20150622/org-archive hides /usr/share/emacs/24.5/lisp/org/org-archive
/home/nlj/.emacs.d/elpa/org-20150622/ob-python hides /usr/share/emacs/24.5/lisp/org/ob-python
/home/nlj/.emacs.d/elpa/org-20150622/ob-js hides /usr/share/emacs/24.5/lisp/org/ob-js
/home/nlj/.emacs.d/elpa/org-20150622/ox-md hides /usr/share/emacs/24.5/lisp/org/ox-md
/home/nlj/.emacs.d/elpa/org-20150622/org-table hides /usr/share/emacs/24.5/lisp/org/org-table
/home/nlj/.emacs.d/elpa/org-20150622/org-install hides /usr/share/emacs/24.5/lisp/org/org-install
/home/nlj/.emacs.d/elpa/org-20150622/ox-latex hides /usr/share/emacs/24.5/lisp/org/ox-latex
/home/nlj/.emacs.d/elpa/org-20150622/org-docview hides /usr/share/emacs/24.5/lisp/org/org-docview
/home/nlj/.emacs.d/elpa/org-20150622/ox-ascii hides /usr/share/emacs/24.5/lisp/org/ox-ascii
/home/nlj/.emacs.d/elpa/org-20150622/org-mhe hides /usr/share/emacs/24.5/lisp/org/org-mhe
/home/nlj/.emacs.d/elpa/org-20150622/org-crypt hides /usr/share/emacs/24.5/lisp/org/org-crypt
/home/nlj/.emacs.d/elpa/org-20150622/org-macro hides /usr/share/emacs/24.5/lisp/org/org-macro
/home/nlj/.emacs.d/elpa/org-20150622/ox-odt hides /usr/share/emacs/24.5/lisp/org/ox-odt
/home/nlj/.emacs.d/elpa/org-20150622/org-eshell hides /usr/share/emacs/24.5/lisp/org/org-eshell
/home/nlj/.emacs.d/elpa/org-20150622/ob-fortran hides /usr/share/emacs/24.5/lisp/org/ob-fortran
/home/nlj/.emacs.d/elpa/org-20150622/org-entities hides /usr/share/emacs/24.5/lisp/org/org-entities
/home/nlj/.emacs.d/elpa/org-20150622/ob-picolisp hides /usr/share/emacs/24.5/lisp/org/ob-picolisp
/home/nlj/.emacs.d/elpa/org-20150622/org-feed hides /usr/share/emacs/24.5/lisp/org/org-feed
/home/nlj/.emacs.d/elpa/org-20150622/ox hides /usr/share/emacs/24.5/lisp/org/ox
/home/nlj/.emacs.d/elpa/org-20150622/org-id hides /usr/share/emacs/24.5/lisp/org/org-id
/home/nlj/.emacs.d/elpa/org-20150622/ob-clojure hides /usr/share/emacs/24.5/lisp/org/ob-clojure
/home/nlj/.emacs.d/elpa/org-20150622/org-macs hides /usr/share/emacs/24.5/lisp/org/org-macs
/home/nlj/.emacs.d/elpa/org-20150622/ob-table hides /usr/share/emacs/24.5/lisp/org/ob-table
/home/nlj/.emacs.d/elpa/org-20150622/org-pcomplete hides /usr/share/emacs/24.5/lisp/org/org-pcomplete
/home/nlj/.emacs.d/elpa/org-20150622/ox-publish hides /usr/share/emacs/24.5/lisp/org/ox-publish
/home/nlj/.emacs.d/elpa/org-20150622/ob-scheme hides /usr/share/emacs/24.5/lisp/org/ob-scheme
/home/nlj/.emacs.d/elpa/org-20150622/ob-keys hides /usr/share/emacs/24.5/lisp/org/ob-keys
/home/nlj/.emacs.d/elpa/org-20150622/ob-io hides /usr/share/emacs/24.5/lisp/org/ob-io
/home/nlj/.emacs.d/elpa/org-20150622/ox-texinfo hides /usr/share/emacs/24.5/lisp/org/ox-texinfo
/home/nlj/.emacs.d/elpa/org-20150622/org-bibtex hides /usr/share/emacs/24.5/lisp/org/org-bibtex
/home/nlj/.emacs.d/elpa/org-20150622/org-protocol hides /usr/share/emacs/24.5/lisp/org/org-protocol
/home/nlj/.emacs.d/elpa/org-20150622/ob-mscgen hides /usr/share/emacs/24.5/lisp/org/ob-mscgen
/home/nlj/.emacs.d/elpa/org-20150622/org-irc hides /usr/share/emacs/24.5/lisp/org/org-irc
/home/nlj/.emacs.d/elpa/org-20150622/org-faces hides /usr/share/emacs/24.5/lisp/org/org-faces
/home/nlj/.emacs.d/elpa/org-20150622/ob-lilypond hides /usr/share/emacs/24.5/lisp/org/ob-lilypond
/home/nlj/.emacs.d/elpa/org-20150622/org-w3m hides /usr/share/emacs/24.5/lisp/org/org-w3m
/home/nlj/.emacs.d/elpa/org-20150622/ob-ditaa hides /usr/share/emacs/24.5/lisp/org/ob-ditaa
/home/nlj/.emacs.d/elpa/org-20150622/ob-comint hides /usr/share/emacs/24.5/lisp/org/ob-comint
/home/nlj/.emacs.d/elpa/org-20150622/ob-css hides /usr/share/emacs/24.5/lisp/org/ob-css
/home/nlj/.emacs.d/elpa/org-20150622/org hides /usr/share/emacs/24.5/lisp/org/org
/home/nlj/.emacs.d/elpa/org-20150622/org-src hides /usr/share/emacs/24.5/lisp/org/org-src
/home/nlj/.emacs.d/elpa/org-20150622/ob-eval hides /usr/share/emacs/24.5/lisp/org/ob-eval
/home/nlj/.emacs.d/elpa/org-20150622/ob-gnuplot hides /usr/share/emacs/24.5/lisp/org/ob-gnuplot
/home/nlj/.emacs.d/elpa/org-20150622/ox-man hides /usr/share/emacs/24.5/lisp/org/ox-man
/home/nlj/.emacs.d/elpa/org-20150622/org-version hides /usr/share/emacs/24.5/lisp/org/org-version
/home/nlj/.emacs.d/elpa/org-20150622/org-mobile hides /usr/share/emacs/24.5/lisp/org/org-mobile
/home/nlj/.emacs.d/elpa/org-20150622/ob-emacs-lisp hides /usr/share/emacs/24.5/lisp/org/ob-emacs-lisp
/home/nlj/.emacs.d/elpa/org-20150622/ob-perl hides /usr/share/emacs/24.5/lisp/org/ob-perl
/home/nlj/.emacs.d/elpa/org-20150622/ob-exp hides /usr/share/emacs/24.5/lisp/org/ob-exp
/home/nlj/.emacs.d/elpa/org-20150622/org-info hides /usr/share/emacs/24.5/lisp/org/org-info
/home/nlj/.emacs.d/elpa/org-20150622/org-footnote hides /usr/share/emacs/24.5/lisp/org/org-footnote
/home/nlj/.emacs.d/elpa/org-20150622/ob-sh hides /usr/share/emacs/24.5/lisp/org/ob-sh
/home/nlj/.emacs.d/elpa/org-20150622/org-compat hides /usr/share/emacs/24.5/lisp/org/org-compat
/home/nlj/.emacs.d/elpa/org-20150622/org-agenda hides /usr/share/emacs/24.5/lisp/org/org-agenda
/home/nlj/.emacs.d/elpa/org-20150622/org-timer hides /usr/share/emacs/24.5/lisp/org/org-timer
/home/nlj/.emacs.d/elpa/org-20150622/ob-shen hides /usr/share/emacs/24.5/lisp/org/ob-shen
/home/nlj/.emacs.d/elpa/org-20150622/ob-tangle hides /usr/share/emacs/24.5/lisp/org/ob-tangle
/home/nlj/.emacs.d/elpa/org-20150622/ob-calc hides /usr/share/emacs/24.5/lisp/org/ob-calc
/home/nlj/.emacs.d/elpa/org-20150622/org-inlinetask hides /usr/share/emacs/24.5/lisp/org/org-inlinetask
/home/nlj/.emacs.d/elpa/org-20150622/ob-C hides /usr/share/emacs/24.5/lisp/org/ob-C
/home/nlj/.emacs.d/elpa/org-20150622/org-gnus hides /usr/share/emacs/24.5/lisp/org/org-gnus
/home/nlj/.emacs.d/elpa/org-20150622/org-clock hides /usr/share/emacs/24.5/lisp/org/org-clock
/home/nlj/.emacs.d/elpa/org-20150622/ox-icalendar hides /usr/share/emacs/24.5/lisp/org/ox-icalendar
/home/nlj/.emacs.d/elpa/org-20150622/ox-beamer hides /usr/share/emacs/24.5/lisp/org/ox-beamer
/home/nlj/.emacs.d/elpa/org-20150622/org-mouse hides /usr/share/emacs/24.5/lisp/org/org-mouse
/home/nlj/.emacs.d/elpa/org-20150622/ob-ocaml hides /usr/share/emacs/24.5/lisp/org/ob-ocaml
/home/nlj/.emacs.d/elpa/org-20150622/ob-plantuml hides /usr/share/emacs/24.5/lisp/org/ob-plantuml
/home/nlj/.emacs.d/elpa/org-20150622/ob-screen hides /usr/share/emacs/24.5/lisp/org/ob-screen
/home/nlj/.emacs.d/elpa/org-20150622/org-colview hides /usr/share/emacs/24.5/lisp/org/org-colview
/home/nlj/.emacs.d/elpa/org-20150622/ob-sass hides /usr/share/emacs/24.5/lisp/org/ob-sass
/home/nlj/.emacs.d/elpa/org-20150622/ox-html hides /usr/share/emacs/24.5/lisp/org/ox-html
/home/nlj/.emacs.d/elpa/org-20150622/org-bbdb hides /usr/share/emacs/24.5/lisp/org/org-bbdb
/home/nlj/.emacs.d/elpa/org-20150622/ob-lisp hides /usr/share/emacs/24.5/lisp/org/ob-lisp
/home/nlj/.emacs.d/elpa/org-20150622/ob-java hides /usr/share/emacs/24.5/lisp/org/ob-java
/home/nlj/.emacs.d/elpa/org-20150622/org-rmail hides /usr/share/emacs/24.5/lisp/org/org-rmail
/home/nlj/.emacs.d/elpa/org-20150622/ob-asymptote hides /usr/share/emacs/24.5/lisp/org/ob-asymptote
/home/nlj/.emacs.d/elpa/org-20150622/ob-matlab hides /usr/share/emacs/24.5/lisp/org/ob-matlab
/home/nlj/.emacs.d/elpa/org-20150622/ox-org hides /usr/share/emacs/24.5/lisp/org/ox-org
/home/nlj/.emacs.d/elpa/org-20150622/org-element hides /usr/share/emacs/24.5/lisp/org/org-element
/home/nlj/.emacs.d/elpa/org-20150622/org-attach hides /usr/share/emacs/24.5/lisp/org/org-attach
/home/nlj/.emacs.d/elpa/org-20150622/ob-ledger hides /usr/share/emacs/24.5/lisp/org/ob-ledger
/home/nlj/.emacs.d/elpa/org-20150622/ob-core hides /usr/share/emacs/24.5/lisp/org/ob-core
/home/nlj/.emacs.d/elpa/org-20150622/ob-sql hides /usr/share/emacs/24.5/lisp/org/ob-sql
/home/nlj/.emacs.d/elpa/org-20150622/ob-latex hides /usr/share/emacs/24.5/lisp/org/ob-latex
/home/nlj/.emacs.d/elpa/org-20150622/org-ctags hides /usr/share/emacs/24.5/lisp/org/org-ctags
/home/nlj/.emacs.d/elpa/org-20150622/org-loaddefs hides /usr/share/emacs/24.5/lisp/org/org-loaddefs
/home/nlj/.emacs.d/elpa/org-20150622/ob hides /usr/share/emacs/24.5/lisp/org/ob
~/.emacs.d/modules/emms/lisp/tq hides /usr/share/emacs/24.5/lisp/emacs-lisp/tq

Features:
(shadow emacsbug ibuf-ext ibuffer eieio-opt speedbar sb-image ezimage
dframe flyspell ispell gnus-html url-queue mailalias smtpmail
bbdb-message sendmail nnir solar cal-dst holidays hol-loaddefs mule-util
cal-move help-mode gnus-cite smiley shr-color color shr browse-url
gnus-bcklg qp utf-7 etags pp apropos cus-edit gnus-async gnus-kill
mail-extr gnus-ml disp-table nndraft nnmh mm-archive url-http url-gw
url-cache url-auth url-handlers nnrss mm-url nnimap utf7 gnutls nnfolder
parse-time bbdb-gnus bbdb-mua epa-file epa derived epg netrc
network-stream starttls tls gnus-agent gnus-srvr gnus-score score-mode
nnvirtual gnus-msg gnus-art mm-uu mml2015 epg-config mm-view mml-smime
smime dig nntp gnus-cache gnus-sum nnoo gnus-group gnus-undo nnmail
mail-source gnus-start gnus-spec gnus-int gnus-range message rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums gmm-utils mailheader gnus-win gnus gnus-ems nnheader
mail-utils vc-git tex-info sage-latex tex-buf tex dbus xml texinfo sage
sage-load rx emms-bookmarks emms-cue emms-mode-line-icon emms-browser
sort emms-playlist-sort emms-last-played emms-player-xine
emms-player-mpd tq emms-playing-time emms-lyrics emms-url url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util url-parse auth-source eieio byte-opt bytecomp byte-compile
cl-extra cconv eieio-core mm-util mail-prsvr password-cache url-vars
mailcap emms-streams emms-tag-editor emms-mark emms-mode-line emms-cache
emms-info-ogginfo emms-info-mp3info emms-info later-do
emms-playlist-mode emms-player-vlc emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat cl-macs org-element org-rmail org-mhe
org-irc org-info org-gnus gnus-util org-docview doc-view jka-compr
image-mode dired org-bibtex bibtex org-bbdb org-w3m org-agenda org
advice help-fns org-macro org-footnote org-pcomplete pcomplete org-list
org-faces org-entities noutline outline easy-mmode org-version
ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys
ob-comint comint ansi-color ring ob-core ob-eval org-compat org-macs
org-loaddefs format-spec find-func bbdb-anniv diary-lib diary-loaddefs
cal-menu calendar cal-loaddefs bbdb-com crm mailabbrev bbdb bbdb-site
timezone tex-site info package edmacro kmacro recentf tree-widget
saveplace wheatgrass-theme delsel paren savehist elec-pair time battery
desktop frameset cua-base cus-start cus-load color-theme easymenu
wid-edit cl gv cl-loaddefs cl-lib bbdb-loaddefs time-date tooltip
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 16 524384 43891)
 (symbols 48 58861 0)
 (miscs 40 6348 2226)
 (strings 32 126959 7116)
 (string-bytes 1 4187865)
 (vectors 16 40307)
 (vector-slots 8 787568 19408)
 (floats 8 888 1414)
 (intervals 56 28973 0)
 (buffers 960 83)
 (heap 1024 78614 18395))