In Emacs, I don't want the *Completions* buffer to pop up, even when I press tab to autocomplete in the minibuffer and there are multiple results. It's distracting and jarring.
How can I do this?
Even better, I would like an alternative that isn't distracting or jarring -- such as requiring one tab for autocomplete if available, but requiring two tabs to open a Completions buffer. This way, I don't get the Completions buffer when I'm expecting an autocomplete. This is what the OS X terminal does to show tab completion possibilities.
I think the cause is the minibuffer-completion-help command, which is run automatically, described here: https://www.gnu.org/software/emacs/manual/html_node/elisp/Completion-Commands.html
I use ido and smex, but the problem occurs in a vanilla Emacs too.
EDIT: I found a hack to fix this. Using M-x find-function
, I found and copied the function definition of minibuffer-completion-help
into my .emacs.d/init.el
file. Then, I renamed the version I copied my-minibuffer-completion-help
and changed (with-displayed-buffer-window *Completions*
to '(with-displayed-buffer-window *Completions*
(putting a quote in front so it is just interpreted as a string. Finally, I overrode the call to minibuffer-completion-help
by putting
(advice-add 'minibuffer-completion-help
:override #'my-minibuffer-completion-help)
after the my-minibuffer-completion-help
function in my .emacs.d/init.el
file. There must be a better way.
EDIT 2: quoting out (message "Making completion list...")
in my-minibuffer-completion-help
has the added benefit of getting rid of the flicker in autocomplete that is caused by flashing another message during autocomplete. Is it possible to do this another way?