交互式选择多个项目

时间:2015-11-15 18:17:51

标签: emacs elisp

如何让用户从列表中选择多个项而不是一个?就像在掌舵的C-x b菜单中一样。

目前我只能选择一个项目而不是获得完整列表:

(defun test-main ()
  (interactive)
  (let ((choice (completing-read "Select: " '("item1 item2 item3"))))
    (message choice)))

2 个答案:

答案 0 :(得分:4)

您可以使用gem install nokogiri -v '1.6.6.3'

执行此操作
completing-read-multiple

它会将所选项目作为列表返回,因此如果您在提示符处键入(defun test-main () (interactive) (let ((choice (completing-read-multiple "Select: " '("item1" "item2" "item3")))) (message "%S" choice))) ,则会返回item2,item3

答案 1 :(得分:2)

因为那是香草completing-read所做的。它会读取并返回单个选项,提供完成以帮助您选择。

您可以使用Icicles执行您要求的操作。当completing-read模式启用时,它会重新定义函数Icicle

许多Icicles命令是multi-commands,这意味着您可以在单个命令执行中进行多个输入选择:多选命令。您可以使用任何操作define your own多个命令。

对于任何完成(不仅仅是针对多命令),您可以操作,保存和恢复sets of completion candidates

(您也可以在迷你缓冲区中输入multiple inputs。这对于在没有完成时读取输入的命令也很有用。)