在 Emacs 中,我不希望 *Completions* 缓冲区弹出,即使我在 minibuffer 中按 Tab 键自动完成并且有多个结果。
这是令人分心和刺耳的。
我怎样才能做到这一点?
更好的是,我想要一种不会分散注意力或不和谐的替代方案——例如需要一个选项卡来自动完成(如果可用),但需要两个选项卡来打开完成缓冲区。这样,当我期待自动完成时,我不会得到 Completions 缓冲区。这就是 OS X 终端用来显示选项卡完成可能性的方式。
我认为原因是自动运行的 minibuffer-completion-help 命令,描述如下:https://www.gnu.org/software/emacs/manual/html_node/elisp/Completion-Commands.html
我使用 ido 和 smex,但问题也出现在 vanilla Emacs 中。
编辑:我找到了一个黑客来解决这个问题。使用 M-x find-function
,我找到并复制了minibuffer-completion-help
的函数定义进入我的 .emacs.d/init.el
文件。然后,我重命名了我复制的版本my-minibuffer-completion-help
并更改 (with-displayed-buffer-window *Completions*
至 '(with-displayed-buffer-window *Completions*
(在前面放一个引号,所以它只是被解释为一个字符串。最后,我通过放置覆盖了对 minibuffer-completion-help
的调用
(advice-add 'minibuffer-completion-help
:override #'my-minibuffer-completion-help)
后
my-minibuffer-completion-help
我的 .emacs.d/init.el
中的函数文件。一定会有更好的办法。编辑 2:引用
(message "Making completion list...")
在 my-minibuffer-completion-help
具有消除自动完成期间闪烁的额外好处,该闪烁是由在自动完成期间闪烁另一条消息引起的。有没有可能以另一种方式做到这一点?
最佳答案
相信你只是想设置completion-auto-help
为零:
(setq completion-auto-help nil)
关于Emacs - 抑制完成缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48876686/