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"))))