2
nadvice.elの引数リストを操作するには?
新しいアドバイスシステムに関する別の質問への回答に続きます。 古いスタイルadvice.elでは、アドバイスされた関数の引数リストの個々のメンバーを操作することは可能でしたが、それらのメンバーに関する操作は行われませんでした。たとえば、次のアドバイス: (defadvice ansi-term (around prompt-for-name last) (let ((name (read-from-minibuffer "Tag: "))) (and (not (string= name "")) (ad-set-arg 1 (concat "Term: " name))) ad-do-it)) ansi-term呼び出しに対するbuffer-name引数の(オプションの)提供を許可しますが、ansi-term独自の対話形式に従ってプロンプトを表示することにより、最初の引数を取得します。 (後で参照するため、ansi-termの署名は(PROGRAM &optional BUFFER-NAME)であり、その対話形式はいくつかの可能なデフォルトでPROGRAMを要求しますが、BUFFER-NAMEに関しては何もしません。) これが可能かどうかはわかりませんnadvice.el。もしそうなら、私はそれがどのように行われるか確信がありません。アドバイスされた関数の引数リストを置き換えるいくつかの方法を見つけました。 たとえば、* info *(elisp)アドバイスコンビネータから: `:filter-args' Call FUNCTION first and use the result (which should be a list) as the new arguments to …