Emacs - 抑制完成缓冲区

时间:2018-02-20 01:38:03

标签: emacs terminal customization ido

在Emacs中,我不希望弹出* Completions *缓冲区,即使我按Tab键在迷你缓冲区中自动完成并且有多个结果。 这令人分心和震撼。

我该怎么做?

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

我认为原因是miniuffer-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并将(with-displayed-buffer-window *Completions*更改为'(with-displayed-buffer-window *Completions*的版本(将引号放在前面,因此它只是被解释为一个字符串。最后,我覆盖了对{{}的调用1}}通过添加

minibuffer-completion-help

在我的(advice-add 'minibuffer-completion-help :override #'my-minibuffer-completion-help) 文件中的my-minibuffer-completion-help函数之后。必须有更好的方法。

编辑2:在.emacs.d/init.el中引用(message "Making completion list...")还有一个额外的好处,即可以消除自动完成过程中闪烁其他消息所导致的自动完成中的闪烁。是否有可能以另一种方式做到这一点?

2 个答案:

答案 0 :(得分:1)

我相信您只想将completion-auto-help设置为nil:

(setq completion-auto-help nil)

答案 1 :(得分:0)

我相信您正在寻找的是暂时修改display-buffer-alist,可能会将其设置为使用display-buffer-no-window进行*完成*或M-x customize-group completion并设置Completion Show Helpnil