【问题标题】:minibuffer input: word completion with custom dictionaryminibuffer 输入:使用自定义词典完成单词
【发布时间】:2012-05-22 20:26:30
【问题描述】:

我正在尝试为 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"))))

【问题讨论】:

    标签: emacs autocomplete elisp


    【解决方案1】:

    这个怎么样:

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

    【讨论】:

    • 我现在正在阅读它。到目前为止,它拒绝了我尝试输入示例命令行(用你的话来说)“foo foobar --dry-run”。
    • 我猜你需要将crm-separator 设置为" ",然后从crm-complete-word 中解除SPC 的绑定(或者使用覆盖self-insert-command 的绑定来隐藏它)。跨度>
    猜你喜欢
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2023-03-10
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多