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

vha*_*lac 5 emacs elisp autocomplete

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

我不需要一个完整的解决方案,但是一些关于从哪里开始寻找的指示将非常感激.另外,我宁愿避免使用侵入库,如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"))))
Run Code Online (Sandbox Code Playgroud)

eve*_*_jr 6

这个怎么样:

(completing-read-multiple ": " '("foo" "foo2" "foobar"))
Run Code Online (Sandbox Code Playgroud)

  • 我想你需要将`crm-separator`设置为``"`,然后从`crm-complete-word`取消绑定`SPC`(或用`self-insert-command`的重写绑定将其遮蔽) . (2认同)