(defun magit-max-args-internal (function)
"Return the maximum number of arguments accepted by FUNCTION."
(if (symbolp function)
(setq function (symbol-function function)))
(if (subrp function)
(let ((max (cdr (subr-arity function))))
(if (eq 'many max)
most-positive-fixnum
max))
(if (eq 'macro (car-safe function))
(setq function (cdr function)))
(let ((arglist (if (byte-code-function-p function)
(aref function 0) ; <--------- format changed
(cadr function))))
(if (memq '&rest arglist)
most-positive-fixnum
(length (remq '&optional arglist))))))
再コンパイルする必要がmagit.el
あり、コードでこの問題を発見しました。コードを正しくたどると、関数のアリティがここに表示されますが、代わりに「奇妙な」数値が得られます。何が起こったのですか?
さらに、この投稿: Elisp get function arity? より良い解決策を提供します(これは、Andreas Röhlerによる回答で、うまく機能します。したがって、おそらくmagit
メンテナーに提案しようとします。