Emacs - 抑制完成缓冲区

标签 emacs terminal customization ido

在 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/

相关文章:

python - 无法在 os x terminal.app 的 python 中解码 utf-8 字符串

android - 如何自定义微调器?

emacs - emacs中的触摸板水平滚动

emacs - 如何杀死矩形,但就像 Emacs 中的普通杀死一样?

Emacs 23 和 Emacs 24 之间的 Emacs 键绑定(bind)更改

r - 使用 Emacs/ESS 用 R 构建统计分析

iphone - 如何使用终端将 .p12 文件转换为 .pem 文件?

bash - 通过终端 Mac 允许来自 Safari 中 Apple 事件的 JavaScript

java - 空类中带有引用结果的自定义 Ant 类型

c# - 如何将项目模板中的文件夹重命名为项目名称? (visual studio模板定制)