[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: function-max-args



From:  Katsumi Yamaoka <yamaoka@jpl.org> さん曰く
Subject: [emacs-w3m:02868] function-max-args
Message-ID: <yosuu1rwooea.fsf@jpl.org>
Date: Mon, 04 Mar 2002 15:08:59 +0900

山岡さん> すみません、つまらないことで恐縮ですが、新しい Mew が無い環境で
山岡さん> は mew-shimbun.el をコンパイルするときに mew-summary-ls に引数を
山岡さん> 二個与えている部分で警告が出ます。この部分を

## うぅ、もうしわけないです。

山岡さん> (dont-compile (mew-summary-ls newfld newfld))

山岡さん> にしてしまっても良いでしょうか?

山岡さん> ;; (eval '(mew-summary-ls newfld newfld)) と同じ意味です。

全然問題ないです。よろしくお願いします。(_ _)

# dont-compile() ってはじめてみました。

山岡さん> おまけとして XEmacs にだけ存在する function-max-args という便利
山岡さん> な関数の FSF Emacs 版を作ってみました。

山岡さん> (w3m-function-max-args 'mew-summary-ls)
山岡さん>  => 1

山岡さん> 白井さんの環境ではこれは 2 を返すのですよね。

はい、2 です。なんか最近 mew-shimbun が変、と思っていたら、引数
の意味と個数が変わっていたという。。

山岡さん> (if (featurep 'xemacs)
山岡さん>     (defalias 'w3m-function-max-args 'function-max-args)
山岡さん>   (eval-and-compile
山岡さん>     (require 'advice))
山岡さん>   (defun w3m-function-max-args (function)
山岡さん>     "Return the maximum number of arguments a function may be called with.
山岡さん> The function may be any form that can be passed to `funcall',
山岡さん> any special form, or any macro.
山岡さん> If the function takes an arbitrary number of arguments or is
山岡さん> a built-in special form, nil is returned."
山岡さん>     (let ((arglist (ad-arglist (if (symbolp function)
山岡さん> 				   (symbol-function function)
山岡さん> 				 function))))
山岡さん>       (if (memq '&rest arglist)
山岡さん> 	  nil
山岡さん> 	(length (delq '&optional arglist))))))

すばらしいです。目から鱗状態です。

-- 
白井秀行@鱗だけじゃなくて花粉もどこかに行ってくれると完璧 ;_;