4

在 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,但问题也出现在香草 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...")inmy-minibuffer-completion-help具有消除自动完成中闪烁的额外好处,这是由在自动完成期间闪烁另一条消息引起的。是否有可能以另一种方式做到这一点?

4

2 回答 2

1

我相信你只想设置completion-auto-help为零:

(setq completion-auto-help nil)
于 2018-03-09T05:33:06.300 回答
0

我相信您正在寻找的是临时修改display-buffer-alist,可能将其设置为display-buffer-no-window用于 *Completions* 或M-x customize-group completion设置Completion Show Helpnil

于 2018-02-21T14:01:46.127 回答