我正在尝试接受 emacs 中命令行实用程序的用户输入。我有一些可以在这个命令行中使用的单词(类似于 make 调用的可能目标列表),并且我希望能够自动完成我知道的单词,允许用户输入我的字典中有多个条目,并且还允许用户写不在我的字典中的东西。一些允许使用自定义字典在 minibuffer 中完成单词的库就是这样。
我不需要完整的解决方案,但非常感谢您提供一些关于从哪里开始寻找的指示。此外,我宁愿避免使用侵入性库,例如icicles
或ido
尽可能避免使用 - 我不希望此软件包的用户在配置其余设置的方式上受到限制。
到目前为止,我最好的解决方案是completing-read
对每个目标多次使用,直到用户输入空字符串。
解决方案
event_jr 在下面的回答成功了。我使用的最终代码如下所示:
(require 'crm)
(let ((crm-separator " ")
(crm-local-completion-map (copy-keymap crm-local-completion-map)))
(define-key crm-local-completion-map " " 'self-insert-command)
(completing-read-multiple "prompt: " '("foo" "foobar" "baz"))))