Elisp函数从列表中选择参数

crs*_*shd 8 emacs elisp

我有一个Elisp函数,它接受一个参数(到目前为止很好).这一个参数应该是列表中的一个项目,而不是其他任何参数.

有没有办法可以显示列表的类型"选择缓冲区"(如dired),用户可以导航到该项目并通过按Enter键选择它,而不必手动输入字符串?

Ste*_*fan 6

通常的做法是通过completing-read.然后,您可以使用minibuffer-with-setup-hook您呼叫的位置,minibuffer-completion-help以便立即弹出*Completions*缓冲区,以便用户可以单击他的选择.


sds*_*sds 6

你在寻找的是completing-read:

(defun foo (arg)
  (interactive (list (completing-read ...)))
  ....)
Run Code Online (Sandbox Code Playgroud)