読者です 読者をやめる 読者になる 読者になる

robe-completing-read-funcに helm-comp-readを使うためのラッパ関数

emacs robe helm

robeでは robe-completing-read-funcという変数に任意の補完入力関数を
指定することができます. これはドキュメント表示等で使われます.


デフォルトは ido-completing-readで, 他に completing-readを指定する
ことができます. これを helmインタフェースにしたいと思い, helm-comp-readを
指定してみたのですが, うまくいきません. これは robeが想定している関数のシグネチャ
helm-comp-readのシグネチャが異なるため, 適切に関数を呼ぶことができない
ためです. また引数である選択候補のリストも helm的に望ましい形でないので,
そのままでは利用できません. それらを踏まえて robe-completing-read-funcに
指定できる helm-comp-readのラッパ関数を作成してみました.

設定

以下のような関数を追加し, robe-completing-read-funcに設定してください.

(custom-set-variables
 '(robe-completing-read-func 'helm-robe-completing-read))

(defun helm-robe-completing-read (prompt choices &optional predicate require-match)
  (let ((collection (mapcar (lambda (c) (if (listp c) (car c) c)) choices)))
    (helm-comp-read prompt collection :test predicate :must-match require-match)))

イメージ

M-x robe-doc の例を示します

モジュールの選択

メソッドの選択

ドキュメントの表示