This is about GNU Emacs 29.1 (build 8, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0):

The keybinding C-M-i, equivalent to <escape><tab> or to M-Tab (the latter often intercepted by OSs) is bound to complete-symbol in the global map, and very useful especially in org-mode.

This seems to be a built-in behaviour, because I'm not touching that keybinding in my init file, and the behaviour also appears starting Emacs with the -q option.

It turns out that Flyspell rebinds this to flyspell-auto-correct-word, which is also bound to C-.. This is very inconvenient, also because flyspell is called by many major modes in my configuration: I would have to redefine that keybinding in all of them.

How can I avoid this key rebinding by Flyspell? I checked some questions such as this, this, this, but they don't address this specific issue.

  • 1
    Doesflyspell do that if you start emacs with emacs -q? It does not in my case, so you are probably rebinding it in your init file(s).
    – NickD
    Jan 2 at 16:11
  • Thanks for the suggestion, @NickD . I confirm that flyspell does that even starting emacs with emacs -q (then opening an org file and activating flyspell with M-x flyspell-mode). Indeed I'm not touching that keybinding anywhere in my init file. Edit: My Emacs is 29.1 (added this to the OP).
    – pglpm
    Jan 2 at 18:14
  • 1
    Try also with emacs -Q: it may be that your distro is doing it in its site-init file.
    – NickD
    Jan 2 at 18:23
  • @NickD Problem remains with -Q – but your answer solved it :)
    – pglpm
    Jan 2 at 19:42

2 Answers 2


Customize the variable flyspell-use-meta-tab to nil. C-h v flyspell-use-meta-tab says:

flyspell-use-meta-tab is a variable defined in ‘flyspell.el’.

Its value is nil
Original value was t

Non-nil means that flyspell uses M-TAB to correct word.

  You can customize this variable.
  • Thank you! Would never have thought such a custom variable existed.
    – pglpm
    Jan 2 at 19:41
  • 1
    I must have customized it at some point, but I didn't know (or at least didn't remember) of its existence either: I looked at the flyspell code and found it.
    – NickD
    Jan 2 at 19:50

All you have to do is add a line to your init file that binds the key to whatever function you prefer.

  • This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post. - From Review
    – Drew
    Jan 2 at 19:44
  • Of course it answers the question. Directly setting the key binding that the user wants is the quickest and easiest way for them to get the key binding that they prefer. No research is needed, not even reading the documentation, the manual, the customization buffer, or the source code.
    – db48x
    Jan 3 at 2:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.