2013-11-04 10 views
6

私は1つの引数(これまでのところ良い)を取るElisp関数を持っています。この1つの引数は、リストからの項目であると考えられます。リストからのElisp関数の選択引数

リストを「選択バッファ」(diredなど)の種類で表示する方法はありますか。ユーザーは項目を手動で入力する代わりに項目をナビゲートしてEnterキーを押して選択できます?

答えて

5

これを行う通常の方法は、completing-readです。次にminibuffer-completion-helpと呼ぶを使用して、すぐに*Completions*バッファをポップアップして、ユーザーが自分の選択肢をクリックできるようにします。あなたが探していることはcompleting-readある

4

私が正しく質問を理解している場合、あなたはこのような何かを探しています:

(defun foo (list) 
    (interactive) 
    (let ((arg (ido-completing-read "Select from list: " list)))) 
    ...) 

選択プロセスは、変数diredのようにではなく、Emacsユーザがidoか一方を使用してリストから選択することが一般的です類似の選択肢。あなたの検索範囲を狭めることができます、代替と長いなどの間を移動します。あなたがカスタマイズする可能性のある設定を感じたい場合は、M-x customize-group RET idoを入力します。

4

(defun foo (arg) 
    (interactive (list (completing-read ...))) 
    ....) 
0

私は物事のこの種のポップアップメニューを使用したい:

(x-popup-menu 
    (list '(50 50) (selected-frame)) ;; where to popup 
    (list "Please choose"   ;; the menu itself 
     (cons "" (mapcar (function (lambda (item) (cons item item))) 
        your-list-of-strings)))) 

ところで、1はラ共通à(mapcar 'cons your-list-of-strings your-list-of-strings)を使用したいですLispですが、elispはmapcarで単項関数しか使用しません:-(

関連する問題