2009-04-16 15 views
11

私はelisp関数から動的プロンプトを表示しようとしています。私はreplace-regexpのようなものが欲しい。最後にregexpが入力されたことを示す。私は (対話型 (concat "sab" "bab"))) を試してみました!Emacs Elisp動的対話型プロンプト

私はまた、フォーマット (インタラクティブ "S%S" 最後に使用-regexpに)

のようなメッセージを試してみましたが、それは動作しません! これを行う方法を知っている人は誰ですか?

ありがとうございました!

答えて

15

M-x find-functionはあなたの友人です。 emacsの中で何がソースコードを見せてくれるかを教えてくれるでしょう。それを使用して、query-regexp-replacequery-replace-read-argsを呼び出し、最後に使用された正規表現から作成されたプロンプトを使用してquery-replace-defaultsに保存されたread-from-minibufferを呼び出すと、query-replace-read-fromを呼び出します。

ので:

(defun my-func() 
    "Do stuff..." 
    (interactive) 
    (read-from-minibuffer "Regexp? " (first query-replace-defaults))) 

は、デフォルトとして最後に入力された正規表現とのプロンプトをスローコマンドです。

9

は、入力履歴のための変数、およびリストとの対話的な使用:あなたが最初にそこに入力された最後の値をしたくない場合は

(defvar my-func-history nil) 

(defun my-func (str) 
    (interactive (list (read-from-minibuffer "Input string: " (car my-func-history) nil nil 'my-func-history))) 
    (insert str)) 

を、nil(car my-func-history)を変更します。もちろん、上/下矢印を使用して、プロンプトで履歴を確認することができます。

+1

おかげで、今、必要なのはすべて完了です... – To1ne