我正在编写一个Emacs次要模式,在其中我使用completing-read
让用户从大量搜索结果中进行选择。它们每次都不同,所以如果不查看列表,用户很可能不知道自己想要的是什么。出于这个原因,我想立即显示一个包含所有完成的临时缓冲区,而不是等待用户点击Tab,但对我来说这样做并不明显。有没有办法,它是什么?
答案 0 :(得分:6)
您可以使用minibuffer-with-setup-hook
并将minibuffer-complete
添加到设置挂钩来实现这一点,如下所示:
(setq tmp '("cat" "dog" "fish"))
(minibuffer-with-setup-hook 'minibuffer-complete
(completing-read (concat "Pick one ("
(mapconcat 'identity (all-completions "" tmp) " ")
"): ")
tmp))
答案 1 :(得分:0)
这是一个开始。如果您的完成列表太大而无法放入迷你缓冲区,则必须打开一个临时缓冲区以显示所有选项。或者,只需在完成阅读的空提示上点击标签即可。
(setq tmp '("cat" "dog" "fish"))
(completing-read (concat "Pick one ("
(mapconcat 'identity (all-completions "" tmp) " ")
"): ")
tmp)
答案 2 :(得分:0)
使用 Icicles ,并在调用icicle-show-Completions-initially-flag
时绑定completing-read
:
(let ((icicle-show-Completions-initially-flag t))
(completing-read ...))