Emacs – 抑制完成缓冲区

在Emacs中,我不希望弹出* Completions *缓冲区,即使我按Tab键在迷你缓冲区中自动完成并且有多个结果.

这令人分心,不安.

我怎样才能做到这一点?

更好的是,我想要一种不会分散注意力或刺激性的替代方案 – 例如,如果可用,则需要一个选项卡进行自动完成,但需要两个选项卡来打开Completions缓冲区.这样,当我期待自动完成时,我没有得到Completions缓冲区.这就是OS X终端用于显示标签完成可能性的功能.

我认为原因是minibuffer-completion-help命令,它自动运行,如下所述:https://www.gnu.org/software/emacs/manual/html_node/elisp/Completion-Commands.html

我使用ido和smex,但问题也发生在香草Emacs中.

编辑:我发现了一个黑客来解决这个问题.使用M-x find-function,我发现并将minibuffer-completion-help的函数定义复制到我的.emacs.d / init.el文件中.然后,我重命名了我复制my-minibuffer-completion-help的版本并更改了(带有显示的缓冲区窗口* Completions * to'(带有显示的缓冲区窗口*完成*)(在前面放一个引号,所以它是只是被解释为一个字符串.最后,我通过put来覆盖对minibuffer-completion-help的调用

(advice-add 'minibuffer-completion-help
        :override #'my-minibuffer-completion-help)

在我的.emacs.d / init.el文件中的my-minibuffer-completion-help函数之后.肯定有更好的办法.

编辑2:在my-minibuffer-completion-help中引用(消息“制作完成列表…”)还有一个额外的好处,就是在自动完成期间消除由于闪烁另一条消息而导致的自动完成中的闪烁.是否有可能以另一种方式做到这一点?

最佳答案 我相信你只想将完成 – 自动帮助设置为nil:

(setq completion-auto-help nil)
点赞