5

我正在尝试接受 emacs 中命令行实用程序的用户输入。我有一些可以在这个命令行中使用的单词(类似于 make 调用的可能目标列表),并且我希望能够自动完成我知道的单词,允许用户输入我的字典中有多个条目,并且还允许用户写不在我的字典中的东西。一些允许使用自定义字典在 minibuffer 中完成单词的库就是这样。

我不需要完整的解决方案,但非常感谢您提供一些关于从哪里开始寻找的指示。此外,我宁愿避免使用侵入性库,例如iciclesido尽可能避免使用 - 我不希望此软件包的用户在配置其余设置的方式上受到限制。

到目前为止,我最好的解决方案是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"))))
4

1 回答 1

6

这个怎么样:

(completing-read-multiple ": " '("foo" "foo2" "foobar"))
于 2012-05-15T10:46:00.257 回答