迷你缓冲输入:使用自定义词典完成单词

时间:2012-05-15 10:29:48

标签: emacs autocomplete elisp

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

我不需要一个完整的解决方案,但是很多人会非常感谢您从哪里开始寻找。另外,如果可能的话,我宁愿避免使用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"))))

1 个答案:

答案 0 :(得分:6)

这个怎么样:

(completing-read-multiple ": " '("foo" "foo2" "foobar"))