有没有办法在Emacs中自动关闭文件名补全缓冲区?

15
例如,当您通过C-x-C-f打开文件时,您可以使用TAB键自动完成文件名,如果有多个可能的自动完成选项,则会弹出一个包含可能的选项列表的完成缓冲区。问题是,在打开文件后,缓冲区所在的窗口会切换回正常模式,但它不会关闭。是否有任何方法可以使这些缓冲区在文件被打开后自动关闭?

2
你的意思是完全“杀掉” * Completions * 缓冲区,而不是默认行为只是“隐藏”它吗? - luapyad
窗口配置在尝试补全之前会切换回纯emacs (emacs -q) 的状态。你能提供更多细节吗?<kbd>C-x C-f</kbd>可能没有绑定到find-file吗? - Trey Jackson
2个回答

14

非常抱歉回复晚了,但这是我的做法:

;; Remove completion buffer when done
(add-hook 'minibuffer-exit-hook 
      '(lambda ()
         (let ((buffer "*Completions*"))
           (and (get-buffer buffer)
            (kill-buffer buffer)))))

在 GNU Emacs 22.x 和 23.x 上测试通过


7
尽管它不能直接解决您的问题,但您是否考虑过使用ido-mode作为打开文件的机制?ido-mode将绑定C-x C-fido-find-file,这允许您交互式地打开文件(在minibuffer中选择名称冲突,使用C-s和其他巧妙的功能),我发现这是一种更容易找到文件的方法,而且可以完全摆脱*Completions*缓冲区。

它有许多其他用途,不仅限于此处描述的用途,并且从emacs默认情况下就包含了它(我认为是从版本22开始)。你阅读它可以做什么的内容越多,你可能会越喜欢它。 - kjfletch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接